Connect to nima's MCP server
How to connect an MCP client to https://mcp.getnima.io/mcp with OAuth or an API key, which permissions it asks for, which tools you will see, and how to fix a missing tool.
Availability
On for every workspace. The MCP server is scoped to the one workspace you connect, and every tool call runs with your role in that workspace.
nima's MCP server lets an MCP client such as Claude Code or Claude.ai search what nima knows, read signals, beacons and specs, file signals, manage watches and reminders, and, with a headless admin key, start agent operations and manage integrations. This page covers the endpoint, how to connect, the permissions, which tools appear, how a tool call behaves, and how to fix a missing tool.
The nima MCP server endpoint
The nima MCP server lives at https://mcp.getnima.io/mcp. It speaks JSON-RPC 2.0 over Streamable HTTP, is stateless, and answers POST only. It has no sessions and never streams.
| Property | Value |
|---|---|
| URL | https://mcp.getnima.io/mcp |
| Transport | Streamable HTTP, JSON-RPC 2.0, one request per POST |
| Server name | nima |
| Protocol versions | 2025-11-25, 2025-06-18, 2025-03-26; any other requested version falls back to 2025-06-18 |
| Capabilities | Tools only. No resources, no prompts |
| Methods | initialize, ping, tools/list, tools/call; anything else returns JSON-RPC error -32601 |
GET and DELETE | 405 with Allow: POST |
| Batches | Rejected (-32600). Send one message per request |
| Notifications | A message without an id gets 202 and no body |
The Mcp-Session-Id and MCP-Protocol-Version request headers are ignored.
Connecting an MCP client with OAuth
OAuth is the default way to connect Claude Code and Claude.ai. You copy no client ID or secret: the client registers itself with nima (dynamic client registration), then sends you to a consent screen.
claude mcp add --transport http nima https://mcp.getnima.io/mcpThen, inside Claude Code, run /mcp and sign in when prompted. To connect and add the nima skill and automatic, guarded signal filing (on by default) in one step, install the nima plugin instead.
The consent screen reads "wants to use nima", names the workspace you are signed in to, and lists the permissions. Click Allow to grant them, or Cancel to stop. Cancel sends the client back with the OAuth error access_denied. The same commands appear in Connect a coding agent, with the rest of the setup for coding agents.
Cursor and VS Code are not tested against nima's MCP server. The instructions here cover Claude Code and Claude.ai.
MCP permissions on the consent screen
The nima consent screen asks for eight permissions, each backed by one OAuth scope. They sit under a What it can do toggle, read permissions first, then the two write permissions, which are marked Edits.
| Consent screen wording | Scope | Who can grant it |
|---|---|---|
| Search what nima knows | knowledge:read | Any member |
| Read signals and beacons | signals:read | Any member |
| Read the sources behind signals | sources:read | Workspace owners and admins only |
| Read specs and documents | documents:read | Any member |
| See what you are watching | subscriptions:read | Any member |
| Read your inbox | inbox:read | Any member |
| File signals for you (Edits) | signals:write | Any member |
| Manage your subscriptions (Edits) | subscriptions:write | Any member |
The token can be narrower than the screen. If your role cannot back a permission, such as a member approving sources:read, nima drops that scope from the token. If none remain, the approval fails with User lacks permissions to grant the requested scopes. Effective access is always your live role in the workspace combined with the scopes, so a token loses access the moment you leave the workspace.
An access token lasts 1 hour. The client refreshes it with a refresh token that lasts 30 days, rolling: every refresh starts a new 30-day window, and a connector you stop using lapses after 30 days. Every refresh re-checks that you are still an active member. The full flow is on OAuth for MCP clients, and every scope is listed on API scopes.
Connecting with an API key instead of OAuth
An API key connects a client that has no browser, such as a CI job or a script. Create one under Settings, then API keys, in the nima admin panel, and send it as a bearer token.
claude mcp add --transport http nima https://mcp.getnima.io/mcp \
--header "Authorization: Bearer nima_…"A key acts as you, in the workspace where you created it, with only the scopes you ticked. The Settings form offers 13 consumer scopes: the 8 consent-screen scopes plus documents:write, versions:read, versions:write, prd:read and prd:write. Keys expire after 30, 90 or 365 days (default 90), can be limited to IP ranges, and are shown once. For MCP, tick at least one of the eight consent-screen scopes; the other five only matter for direct API calls. As on the consent screen, a scope your role cannot back (a member ticking sources:read) is dropped from the key. See API authentication for rotation, revocation and the 10-key limit.
A key from Settings never carries the admin scopes that unlock operations and integrations tools. Those come from Slack, as the next section explains.
Headless admin keys for operations and integrations tools
Agent operations and integration administration are not part of the OAuth consent screen. A workspace owner or admin mints a separate 30-day key for each from Slack, and connects the client with that key as the bearer token.
| Slack command | Scopes on the key | What it unlocks |
|---|---|---|
/nima mcp-key operations | operations:write, documents:read, knowledge:read | Start, message, cancel and steer agent operations |
/nima mcp-key integrations | integrations:write only | Hosted-compute settings, GitHub publishing, Jira and Linear writers, action policies, project audience, identity linking for others |
The two keys are separate on purpose: the operations key does not administer integrations, and the integrations key cannot read signals, specs or the knowledge graph. Connect one MCP entry per key if you need both.
To mint a key:
- In Slack, run
/nima mcp-key operationsor/nima mcp-key integrations. You can also write@nima mcp-key operationsin a channel or DM. - Click Confirm on the message nima replies with, or write
@nima confirm <code>with the code it shows, in the same channel within 5 minutes. - Copy the key from the ephemeral message. It is shown once.
Only a linked nima owner or admin can run these commands. /nima mcp-key list shows your keys that have not been revoked, with their scopes and expiry dates, and /nima mcp-key revoke <key-id> revokes one. Slack-minted keys count toward the limit of 10 active keys per user per workspace.
Without the right key, a call to one of these tools returns this text as a tool error:
This tool requires an explicit headless grant. Ask a workspace admin to use /nima mcp-key operations or /nima mcp-key integrations in Slack, then connect using that key. Existing OAuth consent does not grant administration.Which MCP tools you will see
A default OAuth connection lists 30 tools. nima registers 56 in total; the rest need a headless key, and 3 are reserved for hosted agent runs.
- Consent-scope tools always appear.
tools/listshows every tool behind one of the eight consent scopes, even if your token lacks that scope. Calling it then answers 403insufficient_scope, which makes the client ask you to consent again. That is how a token issued before a new scope existed learns about new tools. - Headless tools appear only when the token holds the scope. Operations tools need
operations:write, integration admin tools needintegrations:write, and the approval and identity tools needactions:approveoridentities:write. Slack mints only the first two. Nobody can mintactions:approveoridentities:writetoday, soapprove_action,get_action,list_pending_actions,discard_actionandlink_my_identityare not reachable with a key or an OAuth client. Approvals happen on the Slack card. - Hosted-run tools never appear.
get_run_brief,report_or_ask_pmandwait_for_checksbelong to agent runs on nima's hosted machines and are hidden from everyone else.
Each tool is documented on exactly one page.
| Area | Tools | Reference |
|---|---|---|
| Knowledge and code (4) | ask_knowledge_graph, search_code, blast_radius, get_data_model | Knowledge and code tools |
| Pipeline (10) | search_signals, get_signal, get_signal_source, create_signal, list_beacons, get_beacon, list_specs, get_document_markdown, get_spec_delivery, get_history | Pipeline tools |
| Watches, inbox and reminders (11) | list_event_types, list_watches, create_subscription, update_subscription, unwatch, get_inbox, get_scheduling_context, list_scheduled_messages, schedule_message, update_scheduled_message, cancel_scheduled_message | Watch and reminder tools |
| Operations and publishing (20, of which 3 are hosted-run only) | start_operation, get_operation, get_operation_result, list_operations, get_operation_brief, inspect_operation, claim_operation_handoff, report_operation_result, message_operation, cancel_operation, raise_operation_limit, get_agent_compute_settings, update_agent_compute_settings, get_github_writer_install_url, get_github_publishing_status, set_github_publishing, disconnect_github_writer, get_run_brief, report_or_ask_pm, wait_for_checks | Operation tools |
| Outbound and identities (11) | connect_jira_writer, connect_linear_writer, set_action_policy, assert_project_audience, list_unlinked_identities, link_external_identity, link_my_identity, list_pending_actions, get_action, approve_action, discard_action | Outbound tools |
The five operation read tools (get_operation, get_operation_result, list_operations, get_operation_brief, inspect_operation) sit behind documents:read, so they are part of the default 30.
How MCP tool calls behave
Every tool call is an HTTP request from the MCP server back to the nima API, carrying your bearer token. Guards, scopes, throttling and workspace scoping therefore apply exactly as they do for a direct API call.
- Timeout. A call fails after 60 seconds.
- Invalid input. Arguments are validated strictly and unknown keys are rejected. A failure returns a normal result with
isError: trueand text startingInvalid arguments:, not a protocol error. An unknown tool name returns JSON-RPC error-32602. - Server errors. A 5xx or a network failure returns
isErrortext of the form<status>followed by a pointer to the server logs. Other non-2xx responses return the status and the first 500 characters of the response body. - Rate limits. A tool call spends the MCP endpoint's default limit and then the limit of the route behind the tool, so about 100 calls per minute per address is the practical ceiling. A limited inner call returns
isErrortext starting429 {. See API rate limits. - Missing scope. A consent-scope tool without the scope answers 403
insufficient_scopewith aWWW-Authenticatechallenge. A headless tool returns the headless-grant text quoted above. - Summaries.
search_signals,list_beaconsandlist_specsreturn trimmed summaries with a fixed field list. Useget_signal,get_beaconorget_document_markdownfor the full record. - Origin. A request that carries an
Originheader must come from an allowed origin, otherwise it gets 403Origin not allowed. Real MCP clients send noOrigin, so this only blocks browser pages.
Troubleshooting a missing or failing nima tool
Most tool problems come from the wrong workspace, a missing scope, or a role that cannot back the scope. Work through these causes in order.
- Connected to the wrong workspace. Switch workspaces in the nima admin panel, then disconnect and reconnect the connector. The consent screen has no workspace switcher.
- A consent-scope tool answers
insufficient_scope. The token was issued without that permission. Disconnect and reconnect, and allow the permission on the consent screen. - An operations or integrations tool is missing. It needs a headless key. Ask a workspace owner or admin to run
/nima mcp-key operationsor/nima mcp-key integrationsin Slack, and connect with that key. get_signal_sourceis missing or refused.sources:readcan only be granted by a workspace owner or admin. A member's token drops it.- A tool answers 403
INSUFFICIENT_PERMISSIONSwithdetails.feature. The tool's route is declared under a plan feature (for examplecode_intelligenceforsearch_code,blast_radiusandget_data_model) that the workspace plan may lack. Handle the error and ask the nima team. - A watch tool works but nothing fires. Watches and outbound actions each need a workspace setting turned on. See Availability.
- Every call fails with 401. The access token expired or the refresh token lapsed after 30 days. Reconnect. An API key fails the same way once it expires.
- Disconnecting. In Claude Code, run
claude mcp remove nima. In Claude.ai, remove the connector under Settings, then Connectors. Revoke an API key under Settings, then API keys, and a Slack-minted key with/nima mcp-key revoke <key-id>.
What is on in your workspace
Which nima capabilities are on for everyone, which an owner or admin must turn on, which the nima team enables on request, and how to turn each one on.
Knowledge and code MCP tools
Reference for ask_knowledge_graph, search_code, blast_radius and get_data_model: inputs, outputs, scope and limits.