> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ontora.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP tools reference

> Every tool exposed by the Ontora MCP server, with parameters and return shapes.

All tools operate within the workspace bound to the API key. Each tool requires the scope listed alongside it.

## Campaigns

### `list_campaigns`

Lists campaigns in the workspace. Requires `interviews`.

| Parameter | Type                                             | Notes           |
| --------- | ------------------------------------------------ | --------------- |
| `status`  | `"draft" \| "active" \| "paused" \| "completed"` | Optional filter |

Returns: array of campaign summaries with contact counts.

### `get_campaign`

Fetches a single campaign by id. Requires `interviews`.

| Parameter      | Type          |
| -------------- | ------------- |
| `interview_id` | string (UUID) |

### `create_campaign`

Creates a new campaign. Requires `interviews`.

| Parameter     | Type                              | Notes                                  |
| ------------- | --------------------------------- | -------------------------------------- |
| `name`        | string                            | Display name                           |
| `goal`        | string                            | Research goal                          |
| `description` | string                            | Optional                               |
| `channel`     | `"in_app_chat" \| "voice" \| ...` | Conversation channel                   |
| `topics`      | array                             | Topic objects with goals and questions |
| `contacts`    | array                             | Optional initial contact list          |

### `start_campaign` / `pause_campaign`

Lifecycle controls. Each takes `interview_id` and returns the new status.

### `add_contacts`

Bulk-adds contacts. Requires `interviews`.

| Parameter      | Type                                                                |
| -------------- | ------------------------------------------------------------------- |
| `interview_id` | string (UUID)                                                       |
| `contacts`     | array of `{name, email, department?, job_title?, seniority_level?}` |

### `get_progress`

Returns total / completed / completion percent.

## Transcripts

### `list_conversations`

Lists conversations in a campaign. Requires `interviews`.

| Parameter      | Type                           | Notes           |
| -------------- | ------------------------------ | --------------- |
| `interview_id` | string (UUID)                  |                 |
| `status`       | `"completed" \| "in_progress"` | Optional filter |

### `get_transcript`

Returns full transcript text plus contact metadata. Requires `interviews`.

| Parameter         | Type          |
| ----------------- | ------------- |
| `interview_id`    | string (UUID) |
| `conversation_id` | string (UUID) |

### `export_transcript_markdown`

Returns the transcript rendered as Markdown. Requires `exports`.

### `export_report_markdown`

Returns the full synthesis report (cartography + roadmap + personas) as Markdown. Requires `exports`.

## Synthesis

### `get_roadmap`

Returns solutions grouped by horizon. Requires `interviews`.

### `get_personas`

Returns per-contact personas, optionally filtered by department. Requires `interviews`.

| Parameter      | Type          | Notes           |
| -------------- | ------------- | --------------- |
| `interview_id` | string (UUID) |                 |
| `department`   | string        | Optional filter |

### `query_campaign`

Runs a GraphRAG query across the campaign's transcripts. Requires `interviews`.

| Parameter      | Type          | Notes                     |
| -------------- | ------------- | ------------------------- |
| `interview_id` | string (UUID) |                           |
| `query`        | string        | Natural-language question |
| `anonymize`    | bool          | Default `false`           |
| `top_k`        | int           | Chunk retrieval depth     |

Returns: `{answer, patterns[], divergences[], verifications[]}`.

## Webhooks

### `list_webhooks`

Returns the workspace's webhook subscriptions. Requires `webhooks`.

### `add_webhook`

Creates a subscription. Requires `webhooks`.

| Parameter     | Type             | Notes              |
| ------------- | ---------------- | ------------------ |
| `url`         | string           | Your endpoint      |
| `events`      | array of strings | Empty = all events |
| `description` | string           | Optional           |

Returns `{id, secret, url, events}` — the secret is only shown here.

### `remove_webhook`

Deletes a subscription. Requires `webhooks`.

| Parameter     | Type   |
| ------------- | ------ |
| `endpoint_id` | string |
