---
canonical_url: "https://docs.composio.dev/toolkits/modem_mcp"
markdown_url: "https://docs.composio.dev/toolkits/modem_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Modem MCP

Modem MCP lets authorized agents search synthesized customer feedback, run durable Modem Agent conversations, and manage topics, people, and companies.

- **Category:** model context protocol
- **Auth:** DCR_OAUTH
- **Composio-managed OAuth available?** No
- **Tools:** 15
- **Triggers:** 0
- **Slug:** `MODEM_MCP`
- **Version:** 20260918_00

## Tools

### Add people to company

**Slug:** `MODEM_MCP_ADD_PEOPLE_TO_COMPANY`

Associate one or more people with a company. Before your first call, read the skill: `modem_skills({ name: "write-tools" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `companyId` | string | Yes |  |
| `personIds` | array | Yes |  |

### Bulk update topics

**Slug:** `MODEM_MCP_BULK_UPDATE_TOPICS`

Update multiple topics at once (e.g. archive or re-prioritize a set of topics). Before your first call, read the skill: `modem_skills({ name: "write-tools" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `archived` | boolean | No | Set to true to archive topics, false to unarchive them. |
| `priority` | string ("very_low" | "low" | "default" | "high" | "very_high") | No | Update all topics to this priority. Valid values: very_low, low, default, high, very_high. |
| `topicIds` | array | Yes |  |
| `archivedReason` | string | No | Optional reason for archiving. Only used when archived=true. |

### Create companies

**Slug:** `MODEM_MCP_CREATE_COMPANIES`

Create one or more companies in the organization. Before your first call, read the skill: `modem_skills({ name: "write-tools" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `companies` | array | Yes |  |

### Merge companies

**Slug:** `MODEM_MCP_MERGE_COMPANIES`

Merge one or more source companies into a target company. Before your first call, read the skill: `modem_skills({ name: "write-tools" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `targetCompanyId` | string | Yes |  |
| `sourceCompanyIds` | array | Yes |  |

### Merge people

**Slug:** `MODEM_MCP_MERGE_PEOPLE`

Merge one or more source people into a target person. Before your first call, read the skill: `modem_skills({ name: "write-tools" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `targetPersonId` | string | Yes |  |
| `sourcePersonIds` | array | Yes |  |

### Merge topics

**Slug:** `MODEM_MCP_MERGE_TOPICS`

Merge one or more source topics into a target topic. Before your first call, read the skill: `modem_skills({ name: "write-tools" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `targetTopicId` | string | Yes | ID of the topic to merge into. Must not be in the sourceTopicIds array. |
| `sourceTopicIds` | array | Yes | IDs of topics to merge into the target. Must not include the target topic ID. |

### Modem agent cancel run

**Slug:** `MODEM_MCP_MODEM_AGENT_CANCEL_RUN`

Cooperatively cancel one exact durable Modem agent run. Completed external actions are not reversed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `run_id` | string | Yes | Run ID returned by modem_agent_invoke or modem_agent_send_message. |
| `conversation_id` | string | Yes | Conversation ID returned by modem_agent_invoke. |

### Modem agent get run

**Slug:** `MODEM_MCP_MODEM_AGENT_GET_RUN`

Get the current status and terminal result of a durable Modem agent run.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `run_id` | string | Yes | Run ID returned by modem_agent_invoke or modem_agent_send_message. |
| `conversation_id` | string | Yes | Conversation ID returned by modem_agent_invoke. |

### Modem agent invoke

**Slug:** `MODEM_MCP_MODEM_AGENT_INVOKE`

Start a durable Modem agent conversation. Returns immediately with conversation_id and run_id; poll modem_agent_get_run for the result. Before your first call, read the skill: `modem_skills({ name: "agent-runs" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `prompt` | string | Yes | Natural-language prompt for the Modem agent. |
| `idempotency_key` | string | Yes | Stable retry key. Reuse only for the exact same prompt. |

### Modem agent send message

**Slug:** `MODEM_MCP_MODEM_AGENT_SEND_MESSAGE`

Start a durable follow-up turn in an existing MCP conversation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `prompt` | string | Yes | Follow-up prompt for the Modem agent. |
| `conversation_id` | string | Yes | Existing MCP conversation ID. |
| `idempotency_key` | string | Yes | Stable retry key for this follow-up. |

### Modem skills

**Slug:** `MODEM_MCP_MODEM_SKILLS`

Skills that teach you how to use THIS Modem MCP server's tools. Call before your first `search_modem`, `modem_agent_invoke`, or write-tool call, or when unsure which Modem tool to use. Pass `name` for the full skill, one of `search-modem`, `agent-runs`, `write-tools`. Omit `name` to list them with descriptions. This is not the Skills page in dashboard settings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | A skill from this server's catalog, e.g. "search-modem". Not a path or an outside skill name. Omit to list the catalog. |

### Search modem

**Slug:** `MODEM_MCP_SEARCH_MODEM`

Answer a natural-language question about your Modem data and get matching rows back. Read-only. It does not run the full Modem agent or spend agent credits. Send a `question`, or send only the `cursor` from a previous result to fetch its next page. Topic `priority` in the rows is an integer: very_low (-100), low (-50), default (0), high (50), very_high (100). Before your first call, read the skill: `modem_skills({ name: "search-modem" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Page size. When set, the engine pages the result server-side and returns a cursor when more rows exist. |
| `cursor` | string | No | Opaque continuation token from a previous response. Fetches the next page of the same result set without re-running the search. |
| `columns` | array | No | Requested row shape — the columns each returned row must carry, validated against them (see the schema field on the result). Without it the engine returns a sensible default shape for the question — consistent for common intents, but not validated or guaranteed; pass this whenever you need a SPECIFIC, validated, and stable shape. A cursor continuation reuses the first page’s columns, so it stays stable regardless. |
| `question` | string | No | Natural-language data question. Required unless cursor is provided. Returns matching rows without invoking the paid Modem agent. |

### Update companies

**Slug:** `MODEM_MCP_UPDATE_COMPANIES`

Update fields on one or more existing companies. Before your first call, read the skill: `modem_skills({ name: "write-tools" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `companies` | array | Yes |  |

### Update people

**Slug:** `MODEM_MCP_UPDATE_PEOPLE`

Update fields on one or more existing people. Before your first call, read the skill: `modem_skills({ name: "write-tools" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `people` | array | Yes |  |

### Update topic

**Slug:** `MODEM_MCP_UPDATE_TOPIC`

Update a single topic (priority, lifecycle state, archived status, issue type, or keywords). Before your first call, read the skill: `modem_skills({ name: "write-tools" })`.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `topicId` | string | Yes |  |
| `archived` | boolean | No | Set to true to archive the topic, false to unarchive it. |
| `keywords` | array | No | Replace the topic keywords/categories. Provide the full list of keywords. |
| `priority` | string ("very_low" | "low" | "default" | "high" | "very_high") | No | Update the topic priority. Valid values: very_low, low, default, high, very_high. |
| `issueType` | string | No | Update the topic issue type classification. Valid values: bug_report, feature_request, complaint, praise, or null to clear. |
| `archivedReason` | string | No | Optional reason for archiving. Only used when archived=true. |
| `lifecycleState` | string ("open" | "in_progress" | "completed" | "dismissed") | No | Update the topic lifecycle state. Valid values: open, in_progress, completed, dismissed. The unknown state is AI-assessed and cannot be set directly. |
