Skip to main content
This page is the complete reference for the tools the Modem MCP Server exposes at https://mcp.modem.dev/mcp. For client setup and an overview of when to use each tool, see the Modem MCP Server page. The server exposes up to 16 tools, grouped by what they do: Your client only sees the tools covered by the scopes you approved during authorization. A token with data:read alone sees modem_skills, modem_docs, and search_modem; a token with agent:invoke alone sees modem_skills, modem_docs, the agent-run tools, and the write tools.

How authorization works

The Modem MCP Server uses standard MCP OAuth. Your client discovers and completes the flow on its own; there is no API key.
1

Discovery

An unauthenticated request to https://mcp.modem.dev/mcp returns 401 with a WWW-Authenticate challenge pointing at the server’s protected-resource metadata (/.well-known/oauth-protected-resource/mcp, also served at the root well-known location). The metadata names Modem’s authorization server.
2

Client registration

Clients that support OAuth dynamic client registration register themselves automatically. No manual client ID setup is needed.
3

Browser consent

The client opens a browser window using the OAuth 2.0 authorization code flow with PKCE. On the Modem consent screen you sign in, pick the Modem organization if your account belongs to more than one, and approve the requested permissions (agent:invoke and/or data:read).
4

Token issue

The client receives an access token bound to your user, the selected organization, and the approved scopes. Clients that request offline_access also receive a refresh token, so you do not re-authorize every session.
The organization is resolved from the token claims on every call. Tool arguments never carry an organization ID, and a client cannot target a different organization than the one approved at consent.

modem_skills

Skills that teach an MCP client how to use this server’s tools. Call it when you are unsure which tool to use. Read-only. Requires either the data:read or the agent:invoke scope, so every token can read the skills for the tools it holds. This is not the Skills page in Modem (Settings → Skills), and it is not a general skill reader. It cannot load SKILL.md files, harness skills, or organization-authored skills.

Parameters

Result

The result is markdown text.
  • With no name, the result is the catalog, a list of skill names and descriptions.
  • With a known name, the result is that skill’s body.
  • With an unknown name, the result is No skill named … followed by the catalog. The call still succeeds.
The catalog has three skills:

Example

List the catalog:
Load the agent-runs skill:

search_modem

Answer a natural-language question about your Modem data and get matching rows back. Read-only. Does not run the full Modem Agent and does not consume agent credits. Requires the data:read scope.

Parameters

Each entry in columns is an object:

Example

Result

The result carries a short natural-language answer plus the structured fields below: complete, cursor, partial, and warnings are only returned when the call sends limit, columns, or cursor. To page through results, send limit. Topic priority values in returned rows are named levels encoded as integers: very_low (-100), low (-50), default (0), high (50), very_high (100).

modem_docs

Search or read the Modem docs to answer how Modem works: setup, integrations, this MCP server and its scopes, and the API. Read-only. Does not consume agent credits. For questions about your organization’s data, use search_modem. Requires either the data:read or the agent:invoke scope.

Parameters

Send exactly one of the two.

Result

The result is markdown text, plus these structured fields:

Example

Agent run tools

The four modem_agent_* tools run the full Modem Agent asynchronously. Starting a run returns immediately with IDs; the run continues in Modem even if your client disconnects. Agent runs consume credits. All four require the agent:invoke scope.

modem_agent_invoke

Start a new durable agent conversation.
Returns conversation_id, run_id, and status: "working".

modem_agent_get_run

Get the current status and, once complete, the result of a run. Returns: Poll this tool until the status is terminal. The tool is read-only and safe to call repeatedly.

modem_agent_send_message

Start a follow-up turn in an existing MCP conversation. Wait for the current run to finish first; only one turn can run in a conversation at a time. Returns conversation_id, run_id, and status: "working" for the new turn.

modem_agent_cancel_run

Cooperatively cancel one exact run. Actions the agent already completed are not reversed. Returns status: "cancelled", or status: "already_terminal" if the run had already finished.

Write tools

Write tools apply changes directly, without going through the agent. They run as you: each call is authorized against your own role in the organization you approved during consent, exactly like the Modem dashboard. All write tools require the agent:invoke scope. The update and merge tools are annotated as destructive, so most clients ask you to confirm each call. create_companies and add_people_to_company only add data and are not. ID formats: topic IDs are UUIDs; company and person IDs are numeric strings. Use search_modem to find IDs before calling a write tool.

update_topic

Update a single topic. At least one optional field must be provided.

bulk_update_topics

Update up to 100 topics at once. At least one optional field must be provided; it applies to every topic in the list. Returns updatedCount and updatedTopicIds.

merge_topics

Merge up to 50 source topics into a target topic. Source topics are archived and marked as merged; their group and event associations move to the target. Rejects if any source topic is already archived. Returns mergedCount and targetTopicId.

create_companies

Create up to 50 companies. Batch-first with partial success: each company is created independently and the result reports success or an error per item.
Returns a results array with { name, domain, success, data?, error? } per item.

update_companies

Update up to 50 existing companies. Partial success per item. Each item:

merge_companies

Merge one or more source companies into a target company. All domains, person associations, and Slack workspaces move to the target. Returns mergedCount. Sources are merged one at a time; if a later source fails after earlier ones succeeded, the call still returns success with a mergedCount lower than the number of sourceCompanyIds requested. Check mergedCount against the input length to detect partial completion.

add_people_to_company

Associate one or more people with a company. Returns addedCount and skippedCount (people already associated are skipped).

update_people

Update up to 50 existing people. Partial success per item. Each item:

merge_people

Merge one or more source people into a target person. All identities, emails, and company associations move to the target. Returns mergedCount. Sources are merged one at a time; if a later source fails after earlier ones succeeded, the call still returns success with a mergedCount lower than the number of sourcePersonIds requested. Check mergedCount against the input length to detect partial completion.

Common workflows

Triage topics

  1. Call search_modem to find the topics to act on, for example “topics about the old billing page”.
  2. Take the topic IDs from the returned rows.
  3. Call bulk_update_topics to archive or re-prioritize them, or update_topic for a single change.

Deduplicate companies or people

  1. Call search_modem for the duplicates, for example “companies whose name contains Acme”.
  2. Pick the record to keep as the target.
  3. Call merge_companies or merge_people with the target and the source IDs. Merges are not reversible, so confirm the target first.

Cross-tool work through the agent

The MCP write tools only change Modem records. For work that reaches your connected tools, such as creating a Linear issue from a topic or posting to Slack, use an agent run:
  1. Call search_modem to gather the context, for example the highest-priority bug reports this week.
  2. Call modem_agent_invoke with a prompt that includes that context and the action, for example “Create a Linear issue summarizing this feedback”.
  3. Poll modem_agent_get_run until the run completes.

Errors

An invalid or expired token is rejected with HTTP 401 before any tool runs; re-authorize your client. Otherwise, a failed tool call returns a standard MCP tool error (isError: true) with a human-readable message and no machine-readable code.

Limits

Modem MCP Server

Client setup, authorization, and troubleshooting.

Skills for MCP Clients

The skills the server gives your MCP client, and how the client finds them.

The Modem Agent

What the Modem Agent can query and do.