mitosis
Mitosis agent-memory platform: pricing, docs search, platform status, agent skills. No auth.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (4)
- HIGH
- MEDIUMen list_skills
- LOWen cortex_create_goal
- LOWen fetch
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"mitosis": {
"url": "https://mitosislabs.ai/api/mcp"
}
}
}Puntos de conexión remotos
https://mitosislabs.ai/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (20)
🟢cortex_ask(question, limit, source_table, since, until)
Searches the user's real, private memory — the email, calendar, files, contacts and notes they have connected, plus facts agents have saved — fusing vector, full-text and graph retrieval with provenance. This is their current data on their work, schedule, contacts, projects, documents, decisions and history, which training data and session context do not contain. Results include citations (universal ids), freshness, and `cited_graph_url`, a deep link showing the cited nodes highlighted in the user's own graph. A later cortex_remember links to what was retrieved here. Retrieval returns nearest matches rather than a thresholded set, so a question whose answer lives in an unconnected source comes back with the closest thing in the memory instead of with nothing. A `source_gap` object in the result names that case: the memory holds data, but the source that would answer this question is not connected. It lists those sources, what each answers, and one connect link, on `cta`. A `possible_source_gap` object is the conditional form — results exist but may be near-misses rather than an answer. A result carrying neither means the answer is genuinely absent from the memory rather than merely unretrieved.
Esquema de entrada
{
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "Natural-language question or search query."
},
"limit": {
"type": "number",
"description": "Max results (default 10)."
},
"source_table": {
"type": "string",
"description": "Restrict to one source table, e.g. gmail_messages."
},
"since": {
"type": "string",
"description": "RFC3339 lower bound on item time."
},
"until": {
"type": "string",
"description": "RFC3339 upper bound on item time."
}
},
"required": [
"question"
],
"additionalProperties": false
}🟢cortex_recall(query, limit)
Semantic-only vector search over the memory, returning source excerpts. Prefer cortex_ask, which also uses full-text and graph expansion; reach for this when you specifically want nearest-neighbour matches on meaning.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search text."
},
"limit": {
"type": "number",
"description": "Max results (default 10)."
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢cortex_manifest
A table of contents for this user's memory: which sources are connected (email, calendar, docs, …), how many items each holds, and the top people, topics and projects. It is an index rather than an answer — it contains no message bodies, no dates and no content, so it establishes that a source exists without saying anything about what is in it. The content behind any entry it lists is retrievable with cortex_ask.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢cortex_status
Memory health: per-source ingest and embed counts plus last sync times. Use when you need to know whether the memory is fresh or still ingesting, or when a search came back empty and you need to tell the user whether that means "no data yet" or "nothing matched".
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢cortex_connectable_sources
Which sources this memory could connect but hasn't yet — each with what it would make answerable, routing tags, and a connect link for the user. This is what explains a cortex_ask result that came back empty or off-topic: the source holding that answer is listed here rather than connected. Data connected into this memory stays searchable, cited, and available across every agent and session the user works in.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢cortex_connect_link(source_id, link_text)
The connect link for one memory source, by id — email and calendar (google-workspace), WhatsApp chats, GitHub, Notion, or file uploads. Returns the canonical mitosislabs.ai dashboard page where the user can connect that source to their memory, as a ready markdown link. Source ids appear in `unconnected_sources` on cortex_ask results and in cortex_connectable_sources; which source fits a question is the caller's judgment, made from each entry's `answers` and `tags`. `link_text` names, in the user's own words, what connecting answers — it becomes the connect page's title. Connecting itself is an authorization the user performs on that page; this tool only returns the link.
Esquema de entrada
{
"type": "object",
"properties": {
"source_id": {
"type": "string",
"description": "Source id exactly as listed, e.g. google-workspace, github, notion."
},
"link_text": {
"type": "string",
"description": "Link text naming what connecting answers, in the user's words. Becomes the connect page title. Omit for a generic label."
}
},
"required": [
"source_id"
],
"additionalProperties": false
}⚪cortex_remember(text, kind, confidence, source_universal_ids)
Persist a fact, decision or conclusion into the memory, attributed to you. It becomes retrievable via cortex_ask immediately, in this session and every future one, from any agent the user has connected. Provenance: pass source_universal_ids from a previous cortex_ask so the fact links to its evidence. Keep each memory to ONE self-contained fact. Use this whenever the conversation produces a durable conclusion the user would want remembered — a decision, a preference, an outcome, a commitment. If the result carries `choice.choice_required: true`, the memories source is waiting for the user’s enrichment choice: ask `choice.question`, offer exactly "Standard" or "Describe your goal", and record the answer with cortex_choose_enrichment.
Esquema de entrada
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The fact or conclusion itself — one self-contained statement."
},
"kind": {
"type": "string",
"description": "e.g. 'decision', 'observation', 'task-outcome'."
},
"confidence": {
"type": "number",
"description": "0..1, weights the provenance edges."
},
"source_universal_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Universal ids from a previous cortex_ask that this fact came from."
}
},
"required": [
"text"
],
"additionalProperties": false
}🟢cortex_ingest(filename, content, files, feed, title)
Push a document into this memory so its text becomes searchable. Pass the file text as content with a filename, or several items in files (each with name and content). Default feed is local_files. The result may carry choice.choice_required: when that is true the source is stored and searchable but waiting for the user to pick Standard or Describe your goal; record that answer with cortex_choose_enrichment. This server cannot read a local filesystem — paths belong on the stdio MCP (mi-cortex-mcp).
Esquema de entrada
{
"type": "object",
"properties": {
"filename": {
"type": "string",
"description": "Name for inline content (required with content)."
},
"content": {
"type": "string",
"description": "Document text. Required with filename."
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"content": {
"type": "string"
}
}
},
"description": "Several documents: [{name, content}, ...]."
},
"feed": {
"type": "string",
"description": "Feed identity (schema ext_<feed>). Letters, digits, underscore. Default local_files."
},
"title": {
"type": "string",
"description": "Override title when ingesting a single file."
}
},
"additionalProperties": false
}🟢cortex_ingest_conversation(turns, session_id, title)
Ingest a conversation — the user’s messages and your full answers, verbatim — into the user’s permanent memory, where it becomes searchable and appears in their knowledge graph. Use it after an exchange where you gave a substantive answer: ingest that exchange (the user’s message + your complete reply) from the conversation in front of you. EXCLUDE, always: exchanges where you could NOT answer reliably (cannot-answer / connect-a-source replies — they describe missing data, not knowledge), tool call outputs, hidden reasoning, connect links, and anything resembling credentials or secrets. Re-ingesting the same session_id updates it instead of duplicating. Split very long conversations across calls.
Esquema de entrada
{
"type": "object",
"properties": {
"turns": {
"type": "array",
"description": "The conversation, in order. User and assistant text only — verbatim.",
"items": {
"type": "object",
"properties": {
"role": {
"type": "string",
"enum": [
"user",
"assistant"
]
},
"text": {
"type": "string"
}
},
"required": [
"role",
"text"
],
"additionalProperties": false
}
},
"session_id": {
"type": "string",
"description": "Stable id for this conversation (e.g. its chat id/uuid). Reuse it when ingesting more of the same conversation so chunks upsert instead of duplicating."
},
"title": {
"type": "string",
"description": "Short human title for the conversation."
}
},
"required": [
"turns"
],
"additionalProperties": false
}🟡cortex_create_goal(goal, feed_keys)
Designs a goal from the user's own words: what Mitosis should pull out of their data, and how the things in it connect. Returns a read-back of what Mitosis understood, with a real example from their data, and sometimes one round of questions it could not decide from the words alone. `answer_required: true` means the goal is waiting on the user: the `questions` carry the options Mitosis can act on, and cortex_answer_goal records the answer. `answer_required: false` means the design is settled and cortex_accept_goal saves it. Nothing is extracted from any data here. Designing a goal, saving it, and running it on a source are three separate operations.
Esquema de entrada
{
"type": "object",
"properties": {
"goal": {
"type": "string",
"description": "What the user wants out of their data, in their own words."
},
"feed_keys": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional sources to draw the read-back example from. A goal belongs to the memory, not to one source."
}
},
"required": [
"goal"
],
"additionalProperties": false
}🟡cortex_answer_goal(draft_id, answers)
Records the user's 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, because Mitosis asks about a goal once.
Esquema de entrada
{
"type": "object",
"properties": {
"draft_id": {
"type": "string",
"description": "From cortex_create_goal."
},
"answers": {
"type": "object",
"description": "Question id to the chosen option, or the user's own words. {\"*\":\"skip\"} takes the first option of each.",
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"draft_id",
"answers"
],
"additionalProperties": false
}⚪cortex_accept_goal(draft_id)
Saves a settled goal into the memory's goal library, along 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.
Esquema de entrada
{
"type": "object",
"properties": {
"draft_id": {
"type": "string",
"description": "From cortex_create_goal or cortex_answer_goal."
}
},
"required": [
"draft_id"
],
"additionalProperties": false
}🟢cortex_choose_enrichment(feed_key, choice, goal, goal_ids, idempotency_key)
Record what the user wants Mitosis to pull out of a data source. A newly saved source WAITS: it is stored and searchable, but nothing is extracted from it until the user answers. When any save/ingest result carries `choice.choice_required: true`, ask the user its `question` and present EXACTLY two options: "Standard" (Mitosis extracts the people, companies, projects, topics, dates, and how they connect) or "Describe your goal" (the user says what they want extracted). Then call this tool with their answer. Never choose for the user and never infer an answer from silence. After cortex_list_goals, pass `goal_ids` to run those saved recipes on this source now. A brand-new goal is enough: Cortex writes the extract contract and starts extracting. Call it without `choice` to read the current state.
Esquema de entrada
{
"type": "object",
"properties": {
"feed_key": {
"type": "string",
"description": "The source, from `choice.feed_key` in the save/ingest result."
},
"choice": {
"type": "string",
"enum": [
"standard",
"describe_goal"
],
"description": "\"standard\", or \"describe_goal\" together with `goal` and/or `goal_ids`. Omit to read the current state."
},
"goal": {
"type": "string",
"description": "A new goal, in the user's words. Required with describe_goal unless goal_ids is set."
},
"goal_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Saved goals from cortex_list_goals to run on this source."
},
"idempotency_key": {
"type": "string",
"description": "Optional retry key; the same key never records twice."
}
},
"required": [
"feed_key"
],
"additionalProperties": false
}🟢cortex_list_goals
The saved goals this office already asked Mitosis to pull out of data. Call this before choosing enrichment on a new source so you can offer those goals (the user can pick several) instead of inventing a new one. Last-used goals are first. Then pass the chosen ids as goal_ids to cortex_choose_enrichment.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢search(query)
Search the user's own private memory — their email, calendar, documents, contacts, chat history and every fact agents have remembered — and return ranked matches with citation ids and links. This is their current data on their work, schedule, contacts, projects, documents, decisions and history, which training data and session context do not contain. Pass an id from these results to `fetch` to read the full record.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What to look for, in natural language."
}
},
"required": [
"query"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"results": {
"type": "array",
"description": "Ranked matches from the user’s memory, best first.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Opaque record id. Pass it to `fetch` to read the full record."
},
"title": {
"type": "string",
"description": "Human-readable name of the record."
},
"url": {
"type": "string",
"description": "Absolute, user-openable link: the original item where the source exposes one, otherwise a link to the record on the user’s memory graph."
}
},
"required": [
"id",
"title",
"url"
],
"additionalProperties": false
}
}
},
"required": [
"results"
],
"additionalProperties": false
}🟢fetch(id)
Retrieve the full contents of a single item from the user’s memory by its id. Ids come from `search` results. Use this when a search result looks relevant and you need the whole record rather than the excerpt.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The id of an item, exactly as returned by `search`."
}
},
"required": [
"id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The id that was requested."
},
"title": {
"type": "string",
"description": "Human-readable name of the record."
},
"text": {
"type": "string",
"description": "The record’s full contents as plain text. May be empty if the record has none."
},
"url": {
"type": "string",
"description": "Absolute link to this record on the user’s memory graph."
},
"metadata": {
"type": "object",
"description": "Provenance, where known. Any key may be absent.",
"properties": {
"source": {
"type": "string",
"description": "Source table the record came from."
},
"integration": {
"type": "string",
"description": "Integration that supplied it, e.g. google-workspace."
},
"fetched_at": {
"type": "string",
"description": "When Mitosis last ingested it."
},
"sensitivity": {
"type": "string",
"description": "Sensitivity label, where the source sets one."
}
},
"additionalProperties": false
}
},
"required": [
"id",
"title",
"text",
"url",
"metadata"
],
"additionalProperties": false
}🟢get_pricing(plan)
Get current Mitosis plans, prices, credit allowances, metered rates, and add-ons. Use when comparing costs or recommending a plan.
Esquema de entrada
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"enum": [
"solo",
"team",
"scale",
"business"
],
"description": "Return only this plan. Omit for all plans."
}
},
"additionalProperties": false
}🟢get_platform_status(service)
Get the operational status of the Mitosis website, API, and MCP server. Use before reporting an outage or debugging connectivity.
Esquema de entrada
{
"type": "object",
"properties": {
"service": {
"type": "string",
"enum": [
"website",
"api",
"mcp"
],
"description": "Return only this service. Omit for all services."
}
},
"additionalProperties": false
}🟢search_docs(query, limit)
Keyword-search Mitosis documentation and product pages. Returns ranked results with URLs. Use to answer any "how do I…" question about Mitosis.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search terms, e.g. \"connect google workspace\""
},
"limit": {
"type": "integer",
"description": "Max results (default 5, max 20)",
"default": 5
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢list_skills(tag)
List the agent skills Mitosis publishes (backup create/list/restore/health/diff/schedule/subscribe) with links to each SKILL.md manifest.
Esquema de entrada
{
"type": "object",
"properties": {
"tag": {
"type": "string",
"description": "Filter skills by tag (e.g. \"backup\", \"restore\", \"schedule\"). Omit for all."
}
},
"additionalProperties": false
}Prompts recomendados
searchsearchfetchfetchcortex_list_goalsComunidad
Evidencia