Skip to main content
Every deployed agent gets one fixed URL for every tool action, no matter how many tools or providers sit behind it: the MCP gateway. Adding, removing, sharing, or restricting a tool is a configuration change — the agent is never redeployed. The gateway speaks the Model Context Protocol. Agents call it with JSON-RPC tools/list and tools/call, and it fans each call out to whichever backend implements that tool.

Connect an external server

Register a managed integration or your own running MCP server.

Deploy your own server

Upload source and let Nasiko build, harden, and run it.

Per-agent tool permissions

Control which connectors and tools an agent may use.

MCP gateway dashboard

Register connectors and set rules in the web app.

Two kinds of provider, one interface

Everyone using a shared connector connects with their own account. Sharing never shares the underlying login.

The delegation token

An agent is untrusted code serving many users, so its identity can’t be baked in at deploy time. Nasiko uses a delegation token: a short-lived, scoped credential saying “I am this agent, acting for this user.”
  • When the platform proxies a user’s request to an agent container, it mints a token (minutes, not hours) and injects it into the inbound request. The user’s session credential is stripped before the request reaches the container — an agent never sees or replays a real login.
  • The agent forwards that token to the gateway in the x-nasiko-agent-token header. It’s the only credential /api/mcp accepts.
  • The token is scoped to one purpose, expires quickly, and is rejected if signature, audience, or expiry don’t check out.
Calling /api/mcp directly while testing requires a delegation token, not your login token. There’s no way to authenticate to this endpoint with a session credential.

The gateway endpoint

Agents call exactly one route, authenticated by delegation token:
Tool names from custom MCP server connectors are namespaced {connector-id-prefix}__{tool_name}, so two connectors can’t collide. Managed toolkit tools keep their natural names (GMAIL_SEND_EMAIL, SLACK_POST_MESSAGE).

Blocked and approval-required calls

A tools/call can return a JSON-RPC error instead of a result:

Permissions

Every tool call resolves through two layers, in order:
  1. Reachability — can the calling user reach this connector? (They own it, it’s shared with them, or it’s a globally available toolkit.)
  2. Per-agent permission — is the connector enabled for this agent, and is this tool allowed, blocked, or gated behind approval?
Nothing needs configuring to grant an agent access to a connector its caller can already reach — access propagates the moment a connector is shared. Full model: per-agent tool permissions.

Management routes

Session-authenticated and access-controlled — everything the CLI and dashboard use: