Features / MCP gateway
One MCP endpoint for every server your team uses.
Register MCP servers once with sealed headers; agents call one endpoint, /mcp/org, with per-server tool allowlists, the key’s tool policy and a call log.
What it does
- Register once
- POST /v1/mcp-servers with a name, a URL, headers and an optional tool allowlist. Up to 20 servers.
- One endpoint
- /mcp/org lists every allowed tool as server__tool and routes each call to the right server with its stored headers.
- Sealed headers
- Server tokens are stored sealed and never returned; editors connect with an UplinkSwitch key only.
- Two filters
- Per-server allowlists and the key’s guardrail tool policy, both applied on list and on call.
- Call log
- Every call with status and latency, filterable by server, at GET /v1/mcp-servers/calls.
- Any MCP client
- Claude Code, Cursor, Cline and any client that speaks Streamable HTTP with a header.
Pricing · live catalog, 2026-11-04
| What | How | Price |
|---|---|---|
| Tool call through /mcp/org | tools/list and tools/call from any MCP client | No fee |
| MCP tool inside a chat request | The gateway calls the server for the model | $0.00 per call |
| Each model round | Claude Sonnet 5.5 | $1.20 in · $3.00 out per 1M tokens |
Request example
curl · register a server
curl https://api.uplinkswitch.com/v1/mcp-servers \
-H "Authorization: Bearer $UPLINK_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "tracker",
"url": "https://mcp.example.com/mcp",
"headers": {"Authorization": "Bearer YOUR_SERVER_TOKEN"},
"tool_allowlist": ["list_issues", "get_issue", "create_comment"]
}'curl · list the tools
curl https://api.uplinkswitch.com/mcp/org \
-H "Authorization: Bearer $UPLINK_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
# tools come back as tracker__list_issues, tracker__get_issue, ...Claude Code
claude mcp add --transport http uplink-org https://api.uplinkswitch.com/mcp/org \
--header "Authorization: Bearer sk-uplink-live-...".cursor/mcp.json
{
"mcpServers": {
"uplink-org": {
"url": "https://api.uplinkswitch.com/mcp/org",
"headers": { "Authorization": "Bearer sk-uplink-live-..." }
}
}
}/v1/mcp-serverstakes an admin key;/mcp/orgtakes an API key.- Our public catalog MCP server stays at
https://api.uplinkswitch.com/mcp.
Questions
One MCP endpoint in front of every MCP server your organization uses. You register each server once, with its URL, its headers and a tool allowlist; every agent and editor then connects to /mcp/org with an API key and sees the allowed tools of every server, named server__tool.
The headers you register (an Authorization header, say) are sealed at rest and sent on every call to that server. The API only ever returns their names, so a teammate’s editor never holds the server’s token.
Streamable HTTP MCP servers at a public https URL, up to 20 per organization. Private, loopback, link-local and reserved addresses are refused and checked again before every call, and redirects are not followed.
Two layers: each server’s tool_allowlist, and the calling key’s tool policy from guardrails, which can deny names such as tracker__create_* by prefix. A call either one refuses is logged as denied or blocked.
Yes: time, server, tool, status (ok, tool_error, failed, denied, blocked) and latency, at GET /v1/mcp-servers/calls and in the console. Arguments are kept only for keys that keep request bodies.
Yes. Declare a remote MCP server in the request itself (OpenAI’s mcp tool type or Anthropic’s mcp_servers) and the gateway runs its tools inside that request; see agent tools.
More features
Agent tools
Web search, fetch, MCP and code.
Files and redaction
PDFs for every model.
Routing
Auto router, fallbacks, presets.
Caching and context
Repeat answers at a tenth.
Guardrails and app sign-in
Guardrails on your traffic.
Endpoints
Embeddings, rerank, transcription.
Observability
Every session, request by request.
All features
Every group, with live prices.