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

# Room MCP

> The full Corvic tool surface over MCP: rooms, data sources, pipelines, memories, lenses, agents, and the tables they produce.

**Room MCP** gives you programmatic access to everything a [room](/concepts/rooms) holds. One MCP endpoint exposes the whole platform surface: enumerate and run **pipelines**, ask **[Virtual Memories](/features/virtual-memory)** questions, read documents through **[Document Lenses](/features/document-lens)**, delegate open-ended work to the room's **agents**, and pull results back out as rows or files.

Unlike [Agent MCP](/integrations/mcp-api-integration) — which talks to a single deployed agent — Room MCP is the API for the room itself.

## Get connected from the MCP Playground

Every room has an **MCP Playground** (open it from the room's surface switcher, next to Chat, Live Apps, and Memory). It gives you everything you need to connect:

* The **MCP endpoint** — `https://api.corvic.ai/mcp/`
* An **access token** with a chosen expiry, sent as `Authorization: Bearer <token>`
* The room's ID, which most tools take as `room_id`

The Playground also lets you **call the room's tools live** — the exact requests and raw content an MCP-aware client (Claude, Cursor, or your own) would send and receive. It is the fastest way to explore a tool's arguments and see real responses before wiring anything up.

<Warning>
  Treat access tokens like passwords. Don't commit them to source control — load them from environment variables or a secrets manager, and pick the shortest expiry that works for your use.
</Warning>

Any MCP-compatible client can connect: point it at the endpoint with your Bearer token, list the tools, and call them.

## Conventions

A few rules hold across the whole catalog:

* **Pagination** — any `list_*` tool may paginate. Omit `cursor` on the first call; the response carries the next one, and an **empty cursor means done**. Omit `entries_per_page` (or pass `0`) for the server default.
* **IDs and refs** — every ID is a string. Feature view refs look like `75:code_augment`; table IDs look like `117:file`. Refs hold a colon, so SQL must quote them.
* **Async runs** — `run_pipeline` returns immediately with the feature views to watch and no run ID. Poll `get_pipeline`, whose statuses are `not_run`, `processing`, `completed`, `failed`, `stopped` (per feature view and rolled up).
* **Metering** — `query`, `ask_memory`, `run_pipeline`, and the extraction calls are metered. Reads — listings, `get_*`, `fetch_*`, `get_extraction` — are not.

## Rooms

| Tool | Description |
| - | - |
| `list_rooms` | List rooms (paginated). |
| `get_room` | A room's name, creation time, and visibility. |
| `create_room` | Create a room with `private` or `organization` visibility. |

A room is Corvic's isolation boundary — almost every other tool takes a `room_id`.

## Data sources

| Tool | Description |
| - | - |
| `list_data_sources` | List a room's data sources (paginated). |
| `get_data_source` | One data source. |
| `create_data_source` | Create a source for file uploads. |
| `generate_access_token` | A 15-minute read/write token for uploading to a source or reading a feature view. |

## Pipelines

| Tool | Description |
| - | - |
| `list_pipelines` | List a room's pipelines (paginated). |
| `get_pipeline` | Status overall and per feature view, action-graph lineage, and column schemas. |
| `create_pipeline` | Create an empty pipeline. |
| `add_pipeline_source` | Read a data source into a pipeline; returns the refs it produces. |
| `add_pipeline_action` | Add an action (parse, augment, join, embed, Python/SQL, …); returns the refs it will produce. |
| `delete_pipeline_action` | Remove an action; refuses (naming blockers) if anything downstream reads its output. |
| `run_pipeline` | Run the pipeline, or just the actions named in `action_ids` plus their upstream dependencies. |
| `interrupt_pipeline` | Cancel running actions; finished work is kept, unfinished feature views report `stopped`. |
| `schedule_pipeline` | Put the pipeline on a cron schedule (5-field cron plus extended forms, with an IANA `timezone`). Replaces any existing schedule. |

<Note>
  Pipelines correspond to the [Workflows](/features/workflows) you build on the canvas. Nothing runs as you add sources and actions, so build the whole chain and check it before it costs anything.
</Note>

## Memories

The tools behind [Virtual Memory](/features/virtual-memory) — ask in words, query precisely, or search by meaning.

| Tool | Description |
| - | - |
| `list_memories` | A room's memories: `memory_id`, title, subject, kind (`relational` \| `semantic`), searchability, and the `artifact` table ID the graph tools take. |
| `ask_memory` | Ask one memory a question in words; it answers only from what it declares. Runs a model, so it is slow and metered. |
| `knowledge_graph_catalog` | The sources, dimensions, and measures a memory (or app) declares — read this before searching. |
| `knowledge_graph_search` | Compile a precise statement against those declarations; results land as a new table. |
| `semantic_search` | Search an embedding space by meaning; the top 20 most similar rows land as a new table. |

## Document lenses

The tools behind [Document Lens](/features/document-lens) — repeatable readings of one kind of document.

| Tool | Description |
| - | - |
| `list_lenses` | A room's lenses: what kind of document each reads, the fields it returns, and whether it is ready to call. |
| `extract_document` | Read one document through a lens; returns `fields`, `reasoning`, `repairs`, `missing_required`, and `extraction_version`. Blocks for the whole reading. |
| `start_extraction` | The same reading, started asynchronously; returns a `reading_id`. |
| `get_extraction` | Poll for the reading. Not metered, no deadline — the reading survives a client that walks away. |

<Warning>
  If `missing_required` names anything, the lens could not read that document. For long or scanned documents, prefer `start_extraction` + `get_extraction` over `extract_document`, which is bounded by your client's tool-call deadline.
</Warning>

## Agents, threads, and playbooks

For anything open-ended, hand the work to the room's own agent.

| Tool | Description |
| - | - |
| `list_agent_configs` | List a room's agent configurations (paginated). |
| `get_agent_config` | One agent config: name, type, mode, model, schedule. |
| `list_playbook_templates` | The [Playbooks](/features/playbooks) available in a room. |
| `get_playbook_template` | A playbook's required inputs, steps, examples, and connector requirements. |
| `create_agent_config_for_playbook` | An agent config that runs a given playbook. |
| `list_chat_threads` | Threads, filtered by exactly one of `room_id` or `agent_config_id`. |
| `get_chat_thread` | One thread's description and visibility. |
| `create_chat_thread` | A new thread to ask on. |
| `query` | Ask the agent; blocks until the turn ends and returns its final message. |

<Note>
  `query` is a full agent turn — minutes for real work, and metered. Whatever it builds lands as tables in the room; find them through `get_room_feature_view_registry_ref`. Reuse the thread ID for follow-ups, since a new thread starts with no context.
</Note>

## Reading data out

| Tool | Description |
| - | - |
| `get_room_feature_view_registry_ref` | The room's registry: one row per feature view, with its ref, name, description, and traits. |
| `fetch_feature_view` | Rows as JSON. `offset`, `limit`, and `columns` are required (an empty `columns` list means every column); `cel_filter` is optional. |
| `fetch_artifact` | A generated file, or the artifact's file listing. |
| `generate_feature_view_shared_url` | An opaque public URL (`table`, `table-json`, or `artifact` mode), valid 15 minutes. |
| `get_user_content_origin` | The user-content domain and the paths it serves. |

<Tip>
  Never fetch a table unbounded — ask for a small window first, look at the schema, then widen. Binary columns come back as placeholders, so project with `columns`.
</Tip>

## Models

Call these before writing an action that names a model — the offered set is what your deployment configured.

| Tool | Description |
| - | - |
| `list_completion_models` | Models `llm_augment` accepts. One is marked `is_default`. |
| `list_text_embedding_models` | Models the text embedding actions accept. |
| `list_image_embedding_models` | Models `embed_image` accepts. |

## Custom APIs

| Tool | Description |
| - | - |
| `list_custom_apis` | The external APIs configured in the [API Secret Vault](/features/api-secret-vault) and their secret names, injected during Python execution. |

## Deprecated names

The catalog still answers to old names for old clients. Do not call these in new code:

| Deprecated | Use instead |
| - | - |
| `list_data_apps` | `list_pipelines` |
| `get_data_app`, `get_workflow` | `get_pipeline` |
| `run_data_app`, `run_workflow` | `run_pipeline` |
| `schedule_workflow` | `schedule_pipeline` |
| `list_feature_views` | `get_pipeline`, or the room registry |

## Related

<CardGroup cols={2}>
  <Card title="MCP API Overview" icon="diagram-project" href="/integrations/mcp-overview">
    Agent vs. room access and credentials.
  </Card>

  <Card title="Agent MCP" icon="robot" href="/integrations/mcp-api-integration">
    Talk to a single deployed agent instead.
  </Card>

  <Card title="Virtual Memory" icon="brain" href="/features/virtual-memory">
    The memories behind ask\_memory and the graph tools.
  </Card>

  <Card title="Document Lens" icon="magnifying-glass" href="/features/document-lens">
    The lenses behind extract\_document.
  </Card>

  <Card title="Workflows" icon="sitemap" href="/features/workflows">
    Build the pipelines exposed here.
  </Card>

  <Card title="Corvic Tables" icon="eye" href="/concepts/feature-views">
    Understand feature views and tables.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.