Why "the LLM can call your API" is not a yes/no question — and how trust boundaries plus per-tool risk levels give you a graduated answer instead.
Handing an LLM agent a REST API is not one decision, it's several, stacked. Who is allowed to reach this server at all? Which operations on it are safe to run without a human watching, and which ones — refunds, deletions, sending real messages to real people — need a human to confirm or approve first? Treating every tool the same way ("the agent can call it" or "it can't") throws away the information you actually have about how dangerous each operation is.
This platform splits the problem into two independent, composable controls: a trust boundary on the server (who can reach it), and a risk level on each tool (what happens when they do).
Every MCP server you create is assigned exactly one trust boundary at creation time:
The boundary is a coarse, structural gate — it answers "should this server exist in front of this audience at all," before any individual tool call is evaluated. An internal HR system has no business being a public server no matter how carefully each tool inside it is scoped; the boundary stops that mistake at the point of server creation, in the console's new-server wizard, not after the fact.
Inside a server, every generated tool carries its own risk classification, derived when tools are generated from an OpenAPI contract and overridable by hand afterward:
This classification isn't cosmetic — it's derived directly from the HTTP method and operation naming at generation time:
You review and can override every classification in the console before a tool ever goes live — this is the point where you catch, for instance, an operation named archiveInvoice that's actually irreversible in your system even though nothing in its name says "delete."
Risk level isn't just a label — it drives what the runtime does on every single call, via the policy decision point (PDP). Each invocation resolves to exactly one of four outcomes:
This is exactly why the risk classification matters beyond bookkeeping: a high-risk delete_message tool sitting in an otherwise public, low-friction server still can't be fired off by an agent unsupervised — it queues in the approvals view until a human looks at the arguments and the requester and makes a call.
Say you're wiring up an internal admin API — user management, billing adjustments, the works — for an internal support-copilot agent. The combination that keeps this safe:
The result: the agent gets broad, low-friction access to the parts of your internal API that are genuinely safe to automate, and every genuinely dangerous action still needs a human in the loop — without you having to write that logic yourself.
None of this — boundaries, risk levels, or the approval queue — exists if you write your own MCP server by hand. See MCP Platform vs. DIY for the full picture.