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 14 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 search_modem and nothing else.

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.

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: Topic priority values in returned rows are named levels encoded as integers: very_low (-100), low (-50), default (0), high (50), very_high (100).

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 and are annotated as destructive, so most clients ask you to confirm each call. 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

Tool calls fail with standard MCP tool errors carrying one of these codes:

Limits

Modem MCP Server

Client setup, authorization, and troubleshooting.

The Modem Agent

What the Modem Agent can query and do.