Connect

One connection: the agent whose calls the gate sits in front of. This policy resolves off this machine, so there is no directory to reach and nothing to authenticate.

Nothing to connect. This policy binds , which resolve off this machine — no credential, no directory, no network. Every magnitude it reports is measured from real files here. The only wiring left is the half below.

Put the gate in front of your agent

No SDK, no code change, no redeploy. The agent does not learn that the gate exists — it learns that a call was too big, which is a thing it already knows how to handle.

Or skip the reading: neti init finds the MCP servers already configured on the machine, asks each one what tools it exposes, and writes the policy — with every ceiling left blank, because those come from your traffic a week later and not from a generator.

.mcp.json · claude_desktop_config.json · ~/.cursor/mcp.json

Whatever command launches the server becomes an argument to the gate. The client keeps talking to the same name, over the same transport, to a process that now resolves before it forwards.

before
{
  "mcpServers": {
    "entra": {
      "command": "npx",
      "args": ["-y", "@acme/entra-mcp"]
    }
  }
}
after
{
  "mcpServers": {
    "entra": {
      "command": "neti",
      "args": ["gate", "--stdio", "--",
               "npx", "-y", "@acme/entra-mcp"]
    }
  }
}