MCP Preview

Point an MCP client at your instance and your agents appear as tools, under a key your admin issues in Studio. Every call lands on the run record. The server is in preview; the open items below come before general availability.

Today
Configs, keys, and the server
Server
Preview
Takes
MCP key

01What exists today

Preview

Callable with a key. An outside AI assistant lists and calls your agents through one MCP config, at POST …/mcp-configs/{mcp_config_id}/mcp. Two items are open before general availability: key storage hardening, and the address the connection route advertises.

PartStateWhat it is
MCP configsShippedA named set of tools, each backed by one of your agents, held by the agents service and shown in Studio.
MCP keysShippedKeys per config: created, listed masked, and deactivated in Studio. An outside AI assistant sends one with each call.
MCP serverPreviewThe endpoint an outside AI assistant connects to. It lists one tool per agent in the config and runs that agent on each call.
MCP tools for agentsIn designNSTACK agents calling tools from MCP servers. Agents call built-in tools today.

02MCP configs and keys

A config names the agents an assistant sees. The platform team sets up a config's tools with you; your members read configs and manage keys with a member session.

GET/agents/api/v1/organizations/{org_id}/mcp-configs

List the organization's MCP configs, and the public ones.

NeedsA member session

GET/agents/api/v1/organizations/{org_id}/mcp-configs/{mcp_config_id}

Read one config and its tools.

NeedsA member session

GET/agents/api/v1/organizations/{org_id}/mcp-configs/{mcp_config_id}/api-keys

List the config's keys: id, created_at, active, and a masked value.

NeedsA member session

POST/agents/api/v1/organizations/{org_id}/mcp-configs/{mcp_config_id}/api-keys

Create a key. Its value appears once, in this response.

NeedsCreate or update agents

PATCH/agents/api/v1/organizations/{org_id}/mcp-configs/{mcp_config_id}/api-keys/{key_id}

Deactivate a key with {"active": false}.

NeedsCreate or update agents

Handle with care

A key is a long-lived signed token, 365 days by default. Keep it in a secret store and deactivate it in Studio if it leaks. These pages never print a real key.

03The server

The server answers MCP's JSON-RPC methods for one config, so each agent in the config appears to the client as one tool. A call runs that agent in your organization and lands on the run record like any other run.

MCP · PreviewThe path of a tool call, drawn on a sample config.

QuestionCode in the agents service todayPlanned design
ProtocolMCP 2024-11-05, JSON-RPC over one HTTP POST per messageMCP 2025-11-25 over Streamable HTTP
ToolsOne tool per agent in the config, each taking a messageTyped input and output schemas per tool
CredentialAn MCP key as Authorization: Bearer, checked against the organization and config in the pathKeys with scopes, and OAuth 2.1 for clients that support it
RecordAn agent run, triggered by the APIA tool_call run with the key as actor

04Calls

Send each message as a POST to the config's endpoint, with its key as a bearer token. The shapes follow the MCP specification.

Sampletools/list · request and result

// request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }

// result, sample values
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "research_assistant",
        "description": "Answers questions from your organization's knowledge.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "message": { "type": "string", "description": "User message / query for RAG." },
            "user_id": { "type": "string", "description": "End-user id for agent memory (optional)." }
          },
          "required": ["message"]
        }
      }
    ]
  }
}
Sampletools/call · request and result

// request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": { "name": "research_assistant", "arguments": { "message": "Summarize the open items for this week." } }
}

// result, sample values
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": { "content": [{ "type": "text", "text": "…" }], "isError": false }
}

05Permissions and approvals

  • Scopes, planned. tools:list, tools:call, actions:propose, and actions:execute, granted per key.
  • Approvals, planned. A tool that changes a record proposes the change; a person approves it before it runs, as Scan does in Safe mode today.
  • The organization stays the boundary. A key belongs to one organization and one config, and a call reaches only that organization's agents and knowledge.

06MCP tools for agents In design

Your agents calling tools on your MCP servers is in design. What an agent run calls today:

  • A query per assigned dataset. One query_<dataset> tool for each dataset assigned to the agent version, reading the records of the run's environment.
  • A knowledge search. search_knowledge, when an assigned dataset has a knowledge index in the run's environment.

Each call shows on the run record as a child step, tool:{name}#{n}, under the run's tools step. Both tools read, so an agent runs in Reads and drafts mode today: it reads your records and knowledge and answers with a draft that a person acts on.

In design

Studio grants Scan routines to an agent version as tools, in Safe or Autonomous mode, and the agents service records the grant. Agent runs call granted tools once the Scan tool runtime ships.

07Open items

  • Open Before general availability. Key storage hardening, and the address the connection route advertises.
  • In design Protocol 2025-11-25 over Streamable HTTP, with typed tool schemas.
  • In design Scoped keys and OAuth 2.1.
  • In design A tool_call run per call, with the key as the run's actor.

Your own code can also call your agents with a member session; the quickstart shows how.