MCP server
MCP tool reference
Every tool the Mitosis MCP server exposes, with arguments and required scope.
The live list is always tools/list, mirrored byte-for-byte at
/.well-known/mcp/server-card.json.
This page is the human-readable version of the same surface.
Memory tools
All of these touch a user's private memory and require an OAuth grant.
cortex_ask
Searches the memory, fusing vector, full-text and graph retrieval, and answers
with provenance. Scope: memory:read.
| Argument | Type | Required |
|---|---|---|
question | string | ✓ |
limit | number | Defaults to 10 |
source_table | string | Restrict to one source table |
since / until | string | RFC 3339 bounds on item time |
It returns evidence, not prose. Every response carries results[] (each with a
universal_id, a score and a preview), freshness[], cited_graph_url,
and memory naming which office answered:
{
"results": [
{
"universal_id": "gmail_messages:18f2c9a...",
"score": 0.412,
"title": "Re: tier pricing",
"preview": "Agreed: Solo goes to $19.99/seat from July.",
"source_table": "gmail_messages"
}
],
"freshness": [{ "source_id": "google-workspace", "last_success_at": "2026-08-26T18:02:00Z" }],
"cited_graph_url": "https://mitosislabs.ai/graph?office=4d38b034-...&cite=gmail_messages%3A18f2c9a...",
"memory": { "office_id": "4d38b034-...", "office_name": "Mitosis Labs" }
}It may also carry memory_state, source_gap or possible_source_gap, which
say why an answer is thin. Read them before composing a reply: see
reading the response and
handling a gap.
cortex_recall
Semantic-only vector search returning source excerpts. Prefer cortex_ask
unless you specifically want nearest-neighbour matches on meaning.
Scope: memory:read.
| Argument | Type | Required |
|---|---|---|
query | string | ✓ |
limit | number | Defaults to 10 |
cortex_manifest
An index of the memory: counts and source names, never content. Takes no
arguments. Scope: memory:read.
cortex_status
Ingestion and feed status, including backlog. Use it to explain why a
freshly-connected source is not answering yet. Scope: memory:read.
cortex_connectable_sources
Lists sources the user has not connected, and what each would answer. No
arguments. Scope: memory:read.
cortex_connect_link
Returns the connect link for one source. Scope: memory:read.
| Argument | Type | Required |
|---|---|---|
source_id | string | ✓. For example google-workspace, github, notion |
link_text | string | Link text in the user's own words |
cortex_remember
Saves one durable fact into the graph. Scope: memory:write.
| Argument | Type | Required |
|---|---|---|
text | string | ✓ |
kind | string | e.g. decision, observation, task-outcome |
confidence | number | 0..1 |
source_universal_ids | string[] | Ids from a prior cortex_ask |
cortex_ingest
Pushes a document into the memory so its text is searchable. Scope:
memory:write.
This is how an agent adds a file the user handed it (a CSV, a note, an export).
Pass the text; this HTTP server cannot read a local filesystem path. The stdio
server (mi-cortex-mcp) also accepts path / paths and reads those files
from disk.
| Argument | Type | Required |
|---|---|---|
filename | string | With content. The document's name |
content | string | With filename. The document text |
files | { name: string, content: string }[] | Several documents in one call |
feed | string | Feed id (ext_<feed>). Letters, digits, underscore. Defaults to local_files |
title | string | Override title when ingesting a single file |
{
"filename": "investors.csv",
"content": "name,email\nAda,[email protected]\n"
}A new source waits for Standard or a described goal. The response carries
choice; when choice.choice_required is true, record the user's answer with
cortex_choose_enrichment.
cortex_ingest_conversation
Ingests a whole conversation so the exchange itself becomes retrievable.
Scope: memory:write.
| Argument | Type | Required |
|---|---|---|
turns | { role: "user" | "assistant", text: string }[] | ✓. In order, verbatim |
session_id | string | Stable id for the conversation. Re-ingesting the same one upserts rather than duplicating |
title | string | Short human title |
{
"turns": [
{ "role": "user", "text": "What did we decide about pricing?" },
{ "role": "assistant", "text": "Solo moved to $19.99/seat in July 2026." }
],
"session_id": "chat_01H9X...",
"title": "Pricing decision"
}Exclude tool output, hidden reasoning, connect links, exchanges where you could
not answer, and anything resembling a credential. Split a very long
conversation across calls, reusing the same session_id.
cortex_choose_enrichment
Records what the user wants pulled out of a source: Standard, or one or
more saved goals. A new source waits until this is answered. Scope:
memory:write.
| Argument | Type | Required |
|---|---|---|
feed_key | string | ✓ |
choice | string | standard or describe_goal. Omit to read the current state |
goal | string | New goal, in the user's words. Needed with describe_goal unless goal_ids is set |
goal_ids | string[] | Saved goals from cortex_list_goals to run on this source |
idempotency_key | string | Same key never records twice |
cortex_list_goals
Lists saved goals this office already asked Mitosis to pull out. Last-used
first. Pass chosen ids as goal_ids to cortex_choose_enrichment. No
arguments. Scope: memory:read.
cortex_create_goal
Designs a goal from the user's own words and returns a read-back of what
Mitosis understood, with a real example from their data. When the goal leaves
something Mitosis cannot decide, the reply carries answer_required: true and
one round of questions, each with the options it can act on.
Designing a goal extracts nothing. Designing, saving, and running are three
separate operations. Scope: memory:write.
| Argument | Type | Required |
|---|---|---|
goal | string | ✓ What the user wants out of their data, in their words |
feed_keys | string[] | Sources to draw the read-back example from. A goal belongs to the memory, not to one source |
cortex_answer_goal
Records the answer to the questions from cortex_create_goal, keyed by
question id. {"*":"skip"} is the answer for a user who says to go ahead with
whatever Mitosis thinks best.
This is the last round. The reply carries answer_required: false and no
further questions: Mitosis asks about a goal once. Scope: memory:write.
| Argument | Type | Required |
|---|---|---|
draft_id | string | ✓ From cortex_create_goal |
answers | object | ✓ Question id to the chosen option, or the user's own words |
cortex_accept_goal
Saves a settled goal into the memory's goal library with the recipe it was
designed with, and returns its goal id. Still extracts nothing:
cortex_choose_enrichment with choice=describe_goal and that id in
goal_ids is what runs it on a source. Scope: memory:write.
| Argument | Type | Required |
|---|---|---|
draft_id | string | ✓ From cortex_create_goal or cortex_answer_goal |
Search and fetch
Present for clients that expect the search / fetch pair. ChatGPT in
particular refuses a server whose search and fetch it cannot see.
| Tool | Required argument | What it does |
|---|---|---|
search | query | Searches the user's memory |
fetch | id | Retrieves one item in full by its universal id |
Public tools
No credential. Safe to call before any sign-in, and useful as a connectivity check.
| Tool | Required argument | What it returns |
|---|---|---|
get_pricing | none | Current plans, prices, credit allowances, how usage is charged, add-ons |
get_platform_status | none | Operational status of the website, API and MCP server |
search_docs | query | Ranked documentation and product-page results with URLs |
list_skills | none | Published agent skills, with links |
Resources
| Resource | Contents |
|---|---|
llms-txt | Service summary for language models |
llms-full-txt | The complete documentation corpus |
pricing-md | Machine-readable pricing |
auth-md | Agent registration and authentication instructions |
openapi | Full spec for the public REST API |
read_doc | One reference document in full, by doc id |