Skip to content
Obol

MCP gateway · updated October 8, 2026

The MCP gateway for agents that write to real systems.

Obol is an MCP gateway: one MCP URL and one key for Claude Code, Cursor, Codex or your own agent. Tools a key cannot call never appear, destructive tools in production wait for approval unless your policy grants them, and every tool call gets a receipt.

Your vendor credentials stay in Obol’s vault and never reach the agent. The same key also reaches your models through an OpenAI-compatible LLM gateway, under the same policy.

/mcp
Streamable HTTP
tools/list
filtered per key
Free
no card

What is an MCP gateway?

An MCP gateway sits between AI agents and the MCP servers and APIs they call. Agents connect to one gateway URL instead of holding their own tool configs and vendor keys. The gateway authenticates each agent, decides per call which tools it may see and run, keeps the credentials, and records what happened.

An MCP server exposes tools. A gateway decides who may use them, with which arguments, and keeps the record. Obol is an MCP gateway with policy, approvals and receipts built in.

MCP server vs MCP gateway. One exposes tools; the other governs them.

How an MCP server and an MCP gateway divide the work
MCP serverMCP gateway (Obol)
What it isA program that exposes one system’s tools over the Model Context ProtocolOne endpoint in front of many servers and APIs that every agent connects to
How manyOne per vendor or systemOne for the whole organization
What it decidesWhich tools exist and how each one runsWhich agent may see and call which tool, with which arguments, in which environment
Vendor credentialsUsually in each agent’s config or environmentIn Obol’s vault, decrypted only inside the gateway on the outbound hop
What it recordsWhatever the server chooses to logA receipt for every tool call, with the policy decision and an evidence class

How Obol’s MCP gateway handles a tool call. Six steps, in this order, every time.

The order matters: the agent never sees a tool it cannot call, and nothing reaches a vendor before policy and approval have run.

  1. 01

    The agent authenticates once

    Every client connects to https://gateway.tryobol.dev/mcp over Streamable HTTP with its Obol key as a bearer token. The key is Obol’s, not a vendor’s: you can scope it, cap it and revoke it.

  2. 02

    It sees only what it may call

    A visibility filter runs first, so tools/list shows only the tools that key may call. Tools from every connected server are namespaced as connector.tool.

  3. 03

    Each call meets policy, default-deny

    Cedar evaluates the call in-process before anything is dispatched, with argument conditions: amount, environment, whether the tool is destructive, which repository. No matching permit means no call.

  4. 04

    Risky calls wait for a person

    A destructive tool in production returns approval_required unless your policy explicitly grants it. One or two approvers decide in the inbox, and an approved call runs once, bound to its idempotency key.

  5. 05

    The credential is added on the way out

    Obol decrypts the vendor credential inside the gateway and injects it on the outbound request. The agent, the logs and the dashboard never see it.

  6. 06

    The call gets a receipt

    Every tool call gets an idempotency key and a receipt naming the policy decision, the upstream id, the vendor status and the evidence class.

Details: the MCP surface, approvals and the credential vault.

Policy on arguments, not just tool names.

Allowing or blocking a whole tool is too coarse for writes. The example on the right is a rule from Obol’s own Cedar policies: an agent may call the Stripe refund tool only when the refund amount is at or under the cap on that agent’s record.

  • At or under the cap: the permit matches and the call may proceed.
  • Over the cap: nothing permits it, so the default-deny refuses it before Stripe is ever contacted.
  • In production: a destructive tool such as a refund also waits for approval unless your policy explicitly grants it.

Read how Cedar policy works in Obol.

agent-passport.cedar
example
@id("passport-refund-cap")
permit(
  principal is Obol::Agent,
  action == Obol::Action::"call",
  resource == Obol::Tool::"stripe.create_refund"
) when {
  context has amount_usd && principal has max_refund_usd &&
  context.amount_usd.lessThanOrEqual(principal.max_refund_usd)
};

What the receipt can prove, by route.

Policy and approvals apply before the call on every route. What Obol can prove after the call depends on who made the vendor request, and the receipt always names its evidence class.

Evidence class by connector route
RouteWho makes the vendor requestEvidence classCan it reach verified?
Native: a reviewed connector pack Obol custodiesObol, with your vaulted credential, reading the response on its own connectiongateway_observedYes, through an admitted readback or the vendor’s own signed webhook
Federated: your own broker account (Nango or Composio) or a remote MCP serverYour broker or the remote serveruntrusted or broker_attestedNot on its own; only the vendor’s signed webhook, checked at Obol’s edge, can raise it

See evidence classes and connector tiers, or browse the connector catalog.

Works with Claude Code, Cursor, VS Code and Codex. A config file, not an SDK.

  • Claude CodeTerminal setup, key in OBOL_API_KEY
  • Cursor.cursor/mcp.json
  • VS Code.vscode/mcp.json
  • Codex.codex/config.toml
  • MCP InspectorStreamable HTTP + Authorization header
  • Your own appAny MCP client; models through the OpenAI SDK

The dashboard writes the exact file for each client. See the two-line quickstart.

.cursor/mcp.json
the whole change
{
  "mcpServers": {
    "obol": {
      "url": "https://gateway.tryobol.dev/mcp",
      "headers": { "Authorization": "Bearer ${env:OBOL_API_KEY}" }
    }
  }
}

MCP gateway vs API gateway vs LLM gateway.

Three kinds of gateway govern three kinds of traffic. Obol covers two of them behind one key: tool calls on /mcp and model requests on an OpenAI-compatible /v1.

MCP gateway, API gateway and LLM gateway compared
MCP gatewayAPI gatewayLLM gateway
TrafficAgent tool calls over MCPRequests to your own HTTP servicesRequests from apps and agents to model providers
DecidesWhich agent may call which tool, with which argumentsRouting, rate limits and auth in front of your APIsWhich model and provider a request reaches, and with which key
Typical risk it controlsAn agent writing to production with the wrong tool or the wrong amountAbuse of your public endpointsModel spend and provider key sprawl
ObolYes, /mcpNo: Obol governs your agents’ calls, not public traffic to your servicesYes, OpenAI-compatible /v1 on the same key

Do you need an MCP gateway?

You probably do if any of these is true:

  • Your agents will write to production systems, such as refunds, tickets or deploys, not only read.
  • MCP configs and vendor keys are scattered across laptops, repositories and CI.
  • A security reviewer is asking who approved an agent’s action and what it actually did.
  • You need one spending limit across model requests and tool calls.

If your agents only read public data in a sandbox, you may not need one yet.

Run it on Obol Cloud or on your own host.

Obol plans
PlanPriceWhat you get
Free$0, no card2,000 model requests and 2,000 tool calls a month, shared across your organization
Team$99 a month per organizationOne price for the whole team, with no automatic overage
EnterpriseCustom, annualA signed agreement with our team
Free Self-hosted$0 in Obol feesThe same gateway, policy, approvals and receipts on your own Docker Compose host; you operate it, with no SLA

Your model and tool providers bill you directly. Compare plans or install it on your own host.

How to choose an MCP gateway. Six questions worth asking any vendor.

Visibility
Does tools/list show each key only the tools it may call, or does it block only at call time?
Arguments
Can policy read arguments such as an amount or an environment, not just tool names?
Credentials
Where do vendor credentials live, and can an agent ever read them?
Approvals
Do destructive actions wait for a person, and does an approved call run exactly once?
Evidence
Does each receipt say what it can prove, route by route?
Deployment
Can you run it on your own host, and does the same key cover model traffic?

MCP gateway questions, answered plainly.

What is the difference between an MCP server and an MCP gateway?

An MCP server exposes one system’s tools to agents. An MCP gateway sits in front of many servers and APIs: agents connect to it once, and it decides per call which tools each agent may see and run, holds the vendor credentials, and records every call.

Do we need an MCP gateway if we only use a few MCP servers?

If agents only read, perhaps not yet. Once an agent can write to a production system, a gateway gives you one place to set rules, hold approvals, keep keys out of agent configs and see what happened, instead of repeating that work in every server and client.

Is an MCP gateway the same as a proxy?

A proxy forwards traffic. An MCP gateway also authenticates the agent, filters which tools it can list, evaluates policy on each call’s arguments, pauses risky calls for approval and writes a receipt. Obol does all of that before a request reaches a vendor.

Is an MCP gateway the same as an API gateway?

No. An API gateway sits in front of your own HTTP services. An MCP gateway sits between AI agents and the tools they call, including other companies’ APIs, and governs what each agent may do there.

How is an MCP gateway different from an LLM gateway?

An LLM gateway governs model requests; an MCP gateway governs tool calls. Obol is both behind one key: an OpenAI-compatible /v1 for your own OpenAI, Anthropic or OpenRouter connections, and /mcp for tools, under one policy and one audit log.

Does the agent ever see my vendor keys?

No. The agent holds an Obol key. Your vendor credentials are envelope-encrypted in the vault, decrypted only inside the gateway process, and added to the outbound request, never to logs or the dashboard.

How do clients authenticate to Obol’s MCP gateway?

With an Obol key sent as a bearer token in the Authorization header. Each key can be scoped to models and tools and carries its own allowlists, monthly budget, expiry and revocation.

Does Obol decide which tool the model uses?

No. Obol does not choose tools for the model. It makes sure a tool your policy does not allow cannot run, and that a tool the key may not call never appears in its list.

Can I self-host it?

Yes. Free Self-hosted runs the same gateway, policy engine, approvals and receipts on your own Docker Compose host for $0 in Obol fees. You operate it and bring your own credentials, and there is no SLA.

Put your AI to work. Keep the keys.

Free to start. No card needed.

Help us measure what works.

With your permission, we use Google Ads, Meta, and PostHog to measure completed access requests, demo bookings, and free sign-ups. This uses measurement cookies and shares campaign identifiers and measurement events with those services. We exclude your form details. Google Ads personalization remains off.

For completed free sign-ups and confirmed demo bookings, PostHog sends Meta the conversion time, an event ID, Facebook cookie identifiers, a hashed visitor ID, browser information, and a public page address. It does not send Meta your email, name, or account details.

PostHog also records how you browse our public pages so we can improve them. Form fields are masked, and forms and the private demo booking page are excluded from recordings. It counts clicks on the self-host install and sign-up buttons, and if you go on to create a free account, links this visit to that account's email.

Your choice lasts up to six months. Declining keeps the site fully usable. Change your choice here any time.