Write your first policy

A policy is a list of rules. Each call your agent makes gets one answer from it — allow, deny, or require a human's approval — matched on the agent, the tool, and even the argument values.

Everything a policy does, in three moves

01

Match

What the rule applies to.

Pick what a rule applies to: the agent, the server or tool, and — where it matters — the actual argument values, like an amount over a threshold.

02

Decide

What happens when it matches.

Choose the outcome: allow the call, deny it outright, or require a human's approval before it runs.

03

Order

Rules run top to bottom.

Your rules run in order, and the first match wins. Put your most specific rules first, and end with a catch-all.

A list of policy rules in priority order
Rules read top to bottom — the first one that matches decides the call.
Editing a policy rule with an argument condition
A rule can match the call's own arguments — not just which tool was used.

In plain terms

A policy reads like a short, ordered list. Here's a two-rule example: hold back large refunds for a human, and let everything else through.

1. refund tool, amount > 100 → require approval
2. everything else → allow

In the dashboard that rule is one dialog — Add policy. Only two fields are required; leave a section empty and it applies to everything.

Field What it does
NameFor humans — "Allow Notion reads" beats an id when you're scanning the list later.
ActionAllow, Deny or Approve — the verdict when this rule matches.
Approval typeFor Approve: Offline, where approvers decide later on the Tasks page, or Interactive, where they answer inside the agent.
DeadlineFor Approve: how many seconds approvers have to decide before the held call expires and never runs.
Require an OTPFor Approve: approvers seated on the policy confirm with a one-time code, so the decision carries their name. Without it, anyone holding the agent's session can answer in the agent, and the decision is recorded without a name.
Record responsesRequests are always recorded; switch it on to keep responses too.
Agent tagsLimit the rule to agents carrying these tags. Empty means every agent.
Reason codeA short machine-readable label that travels with the decision — useful when you're reading the audit trail.
DescriptionWhy the rule exists and who owns it.
TargetsNarrow the rule to specific agents, servers, tools, prompts or resource templates. Leave a list empty and it covers all of them — so linking just the server keeps the rule working as you import more of its tools.
Request conditionsMatch on the call itself: tool, server, prompt and resource template name globs, tool hints (Read-only, Destructive, Idempotent, Open world), resource URIs, IP / CIDR, request headers, and argument values by path ($.amount, $.user.email, or just amount) with an operator: eq, neq, gt, gte, lt, lte, matches, contains, in, exists.

Order matters. Rules are evaluated by priority, lowest first, and the first match decides the call — so put your specific exceptions above the broad rules, and let the workspace default catch whatever falls through.

When a rule says "require approval."

The call pauses mid-flight and waits for a person. Deny it, or let it time out, and it never runs — either way the decision is logged against the rule that asked for it.

You get notified. A notification appears in the top bar with a Review button, and an email arrives too.

A pending approval notification in the top bar

You see what's being asked. Review opens a panel with the call itself — which agent, which tool, and the arguments it wants to run with.

The approval panel showing the pending call

You confirm. Allow asks once more — naming the tool and the server it will run against, and warning that the decision is final. Approve and the call runs exactly as the agent asked; deny and it never does.

The final confirmation dialog for a tool call

Next steps

Connect a tool server

Add the MCP servers your agents should reach, and choose how Meandr signs in to each.

Read the guide

Connect an agent

Give your agent its workspace URL. Agents that support OAuth just sign in.

Read the guide

Connect your first agent

Run any MCP server in Meandr or connect the ones you already have, then point every agent at one MCP gateway. Policy, approvals and audit cover every call, with no code changes.

Try for free

Questions? Email us