Documentation
The MCP gateway
A model request asks a model to write something. A tool call asks a system to do something. The MCP gateway governs the second: which servers an agent may reach, which tools on them, with what arguments and on whose authority.
A trusted registry
MCP servers are governed like any other asset: approved, refused or unreviewed, each with an owner and an identity. An identity is an exact HTTPS address with its path, or an exact command line. A server’s name is not an identity, and a policy that approves a server by name alone is flagged when it compiles. An unreviewed server is blocked when the policy enforces and counted when it only observes or warns.
Approved servers are published read-only through the official MCP Registry API, so a client that reads a registry sees only what the organization approved. The registry lists servers; it does not enforce.
Pins and digests
An approved server can be pinned to an exact set of up to 256 tools, and adding a tool is another two-person change. ARC1 also keeps a digest of each pinned tool’s definition: its name, title, description, input and output schemas and annotations. A server that changes a tool’s description after approval, the move researchers call a rug pull, then fails the digest check.
Where the check runs matters. The managed gate on coding-agent machines sees tool names, not definitions, so it enforces the pin but cannot see a changed description. The inline MCP proxy can.
The inline MCP proxy LAB
The proxy fetches the server’s full tool list before every call and refuses the call if a pinned definition changed or disappeared. It admits an agent only with a signed policy lease of at most five minutes and an identity lease of at most sixty seconds, charges call budgets before dispatch, guards arguments for SQL queries, command lines and file paths, and signs a metadata-only receipt for every decision.
On one machine in our lab, on loopback with synthetic tools, it added 8.2 milliseconds at the 95th percentile across 30 paired calls, against a 15-millisecond target, and refused all five attack cases. An earlier design measured 59 milliseconds and was held back. Neither figure is from production.
Sub-agents and lineage LAB
When an agent starts a sub-agent, ARC1 issues the sub-agent a signed workload identity claim naming its agent, runtime and principal and carrying the full parent chain, up to seven links. A child can hold fewer tools and a shorter life than its parent, never more, and no claim lives longer than 24 hours. Revoking a root claim revokes the sub-agents beneath it. Claims verify offline, which also means an offline check cannot see a revocation until the claim expires.
OAuth 2.1 NEXT
Today an agent reaches ARC1’s own MCP endpoint with a static bearer key. Next, ARC1 acts as the authorization server and resource server that the MCP authorization specification describes: protected resource metadata, tokens bound to their audience, and no token passthrough. Each tool call will carry both the authenticated principal and the agent’s identity, and so will its receipt.
Where it stands
| Capability | State | Evidence |
|---|---|---|
| MCP server registration, approval and the read-only registry | LIVE | On our hosted production deployment, with synthetic data. |
| Tool pins and definition digests in policy | LIVE | Authoring and approval on production; enforcement on managed machines is contract-tested. |
| Agent authority records, checks and two-person changes | LIVE | Hub workflows on production; agents’ checks are contract-tested. |
| Inline MCP proxy with call-time definition checks | LAB | Single-machine lab path; not released. |
| Per-server call limits compiled to Azure API Management | LAB | Contract-tested. |
| Signed sub-agent lineage | LAB | Built; awaiting release. |
| OAuth 2.1 for the MCP gateway | NEXT | Designed. |
| Governed MCP servers created from an OpenAPI specification | NEXT | Designed. |
LIVE: in the released product and running on our hosted production deployment, with synthetic data. LAB: built or being built, and run only in our lab or against a vendor’s documented interface. NEXT: designed, not yet built. How we use these words.