Server definition
- Hash
- sha256:878a54366e3dd1071248a71c5095c8594f45a73cbb5af3dc3f9155ab42b61513
- What it is
- What a remote MCP server returned when asked what it offers: 20 tools
The blob, as servednamed by its sha256
{
"instructions": "Mitosis is the user’s own private memory: the email, calendar, documents, contacts, chat history and notes they have connected, together with facts agents have saved, indexed as one searchable graph. It holds their current data, which training data and earlier session context do not — questions about their work, schedule, contacts, projects, documents, decisions or history are answerable from it. A result describes only the question it was fetched for, so a follow-up is a new question with its own answer. cortex_manifest is an index: it holds counts and source names, never content. Results carry citations (universal ids) and `cited_graph_url`, a deep link to the cited nodes in the user’s own graph. `memory.office_name` names which memory answered; the connector’s display name is text the user typed and identifies nothing. Retrieval returns NEAREST matches rather than a thresholded set, so a question whose answer lives in a source the user has not connected comes back with the closest thing in the memory instead of with nothing. Three blocks describe that situation when it applies. `source_gap`: the memory holds data, but the source that would answer this question is not connected — it lists those sources, what each answers, and a connect link. `possible_source_gap`: results exist but may be near-misses rather than an answer. `memory_state`: no sources are connected at all, so an empty result reflects absent data rather than a missed search. Each carries `cta.headline` and `cta.url`. A result with none of these blocks means the answer is genuinely not in the memory. A cta url opens the user’s own Mitosis dashboard page for connecting sources; connecting is an authorization the user performs there, so the link itself only shows them that page. Sources the user has not connected are listed by cortex_connectable_sources; a source type absent from that list can still reach the memory as an uploaded export. cortex_connect_link returns the connect link for one source by id, with link text in the user’s own words. cortex_remember saves a durable conclusion — a decision, a preference, an outcome — so the next session starts with it already known. cortex_ingest pushes a document the caller provides into the memory so its text is searchable. cortex_ingest_conversation stores an exchange from the conversation in front of you — the user’s message and the full reply — so it becomes searchable and joins the graph. Exchanges where the answer could not be given reliably, tool output, hidden reasoning, connect links and anything resembling a credential are not memory and do not belong in it.\n\nMitosis also exposes public tools that need no sign-in: get_pricing for plans and costs, search_docs for documentation, get_platform_status for health, and list_skills for the published agent skills.",
"tools": [
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"draft_id": {
"description": "From cortex_create_goal or cortex_answer_goal.",
"type": "string"
}
},
"required": [
"draft_id"
],
"type": "object"
},
"name": "cortex_accept_goal",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"answers": {
"additionalProperties": {
"type": "string"
},
"description": "Question id to the chosen option, or the user's own words. {\"*\":\"skip\"} takes the first option of each.",
"type": "object"
},
"draft_id": {
"description": "From cortex_create_goal.",
"type": "string"
}
},
"required": [
"draft_id",
"answers"
],
"type": "object"
},
"name": "cortex_answer_goal",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max results (default 10).",
"type": "number"
},
"question": {
"description": "Natural-language question or search query.",
"type": "string"
},
"since": {
"description": "RFC3339 lower bound on item time.",
"type": "string"
},
"source_table": {
"description": "Restrict to one source table, e.g. gmail_messages.",
"type": "string"
},
"until": {
"description": "RFC3339 upper bound on item time.",
"type": "string"
}
},
"required": [
"question"
],
"type": "object"
},
"name": "cortex_ask",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"choice": {
"description": "\"standard\", or \"describe_goal\" together with `goal` and/or `goal_ids`. Omit to read the current state.",
"enum": [
"standard",
"describe_goal"
],
"type": "string"
},
"feed_key": {
"description": "The source, from `choice.feed_key` in the save/ingest result.",
"type": "string"
},
"goal": {
"description": "A new goal, in the user's words. Required with describe_goal unless goal_ids is set.",
"type": "string"
},
"goal_ids": {
"description": "Saved goals from cortex_list_goals to run on this source.",
"items": {
"type": "string"
},
"type": "array"
},
"idempotency_key": {
"description": "Optional retry key; the same key never records twice.",
"type": "string"
}
},
"required": [
"feed_key"
],
"type": "object"
},
"name": "cortex_choose_enrichment",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"link_text": {
"description": "Link text naming what connecting answers, in the user's words. Becomes the connect page title. Omit for a generic label.",
"type": "string"
},
"source_id": {
"description": "Source id exactly as listed, e.g. google-workspace, github, notion.",
"type": "string"
}
},
"required": [
"source_id"
],
"type": "object"
},
"name": "cortex_connect_link",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "cortex_connectable_sources",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"feed_keys": {
"description": "Optional sources to draw the read-back example from. A goal belongs to the memory, not to one source.",
"items": {
"type": "string"
},
"type": "array"
},
"goal": {
"description": "What the user wants out of their data, in their own words.",
"type": "string"
}
},
"required": [
"goal"
],
"type": "object"
},
"name": "cortex_create_goal",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"content": {
"description": "Document text. Required with filename.",
"type": "string"
},
"feed": {
"description": "Feed identity (schema ext_<feed>). Letters, digits, underscore. Default local_files.",
"type": "string"
},
"filename": {
"description": "Name for inline content (required with content).",
"type": "string"
},
"files": {
"description": "Several documents: [{name, content}, ...].",
"items": {
"properties": {
"content": {
"type": "string"
},
"name": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"title": {
"description": "Override title when ingesting a single file.",
"type": "string"
}
},
"type": "object"
},
"name": "cortex_ingest",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"session_id": {
"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.",
"type": "string"
},
"title": {
"description": "Short human title for the conversation.",
"type": "string"
},
"turns": {
"description": "The conversation, in order. User and assistant text only — verbatim.",
"items": {
"additionalProperties": false,
"properties": {
"role": {
"enum": [
"user",
"assistant"
],
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"role",
"text"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"turns"
],
"type": "object"
},
"name": "cortex_ingest_conversation",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "cortex_list_goals",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "cortex_manifest",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max results (default 10).",
"type": "number"
},
"query": {
"description": "Search text.",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "cortex_recall",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confidence": {
"description": "0..1, weights the provenance edges.",
"type": "number"
},
"kind": {
"description": "e.g. 'decision', 'observation', 'task-outcome'.",
"type": "string"
},
"source_universal_ids": {
"description": "Universal ids from a previous cortex_ask that this fact came from.",
"items": {
"type": "string"
},
"type": "array"
},
"text": {
"description": "The fact or conclusion itself — one self-contained statement.",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "cortex_remember",
"outputSchema": null
},
{
"description": "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\".",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "cortex_status",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"description": "The id of an item, exactly as returned by `search`.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "fetch",
"outputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"description": "The id that was requested.",
"type": "string"
},
"metadata": {
"additionalProperties": false,
"description": "Provenance, where known. Any key may be absent.",
"properties": {
"fetched_at": {
"description": "When Mitosis last ingested it.",
"type": "string"
},
"integration": {
"description": "Integration that supplied it, e.g. google-workspace.",
"type": "string"
},
"sensitivity": {
"description": "Sensitivity label, where the source sets one.",
"type": "string"
},
"source": {
"description": "Source table the record came from.",
"type": "string"
}
},
"type": "object"
},
"text": {
"description": "The record’s full contents as plain text. May be empty if the record has none.",
"type": "string"
},
"title": {
"description": "Human-readable name of the record.",
"type": "string"
},
"url": {
"description": "Absolute link to this record on the user’s memory graph.",
"type": "string"
}
},
"required": [
"id",
"title",
"text",
"url",
"metadata"
],
"type": "object"
}
},
{
"description": "Get the operational status of the Mitosis website, API, and MCP server. Use before reporting an outage or debugging connectivity.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"service": {
"description": "Return only this service. Omit for all services.",
"enum": [
"website",
"api",
"mcp"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_platform_status",
"outputSchema": null
},
{
"description": "Get current Mitosis plans, prices, credit allowances, how usage is charged, and add-ons. Use when comparing costs or recommending a plan.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"plan": {
"description": "Return only this plan. Omit for all plans.",
"enum": [
"solo",
"team",
"scale",
"business"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_pricing",
"outputSchema": null
},
{
"description": "List the agent skills Mitosis publishes (backup create/list/restore/health/diff/schedule/subscribe) with links to each SKILL.md manifest.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"tag": {
"description": "Filter skills by tag (e.g. \"backup\", \"restore\", \"schedule\"). Omit for all.",
"type": "string"
}
},
"type": "object"
},
"name": "list_skills",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"description": "What to look for, in natural language.",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search",
"outputSchema": {
"additionalProperties": false,
"properties": {
"results": {
"description": "Ranked matches from the user’s memory, best first.",
"items": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Opaque record id. Pass it to `fetch` to read the full record.",
"type": "string"
},
"title": {
"description": "Human-readable name of the record.",
"type": "string"
},
"url": {
"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.",
"type": "string"
}
},
"required": [
"id",
"title",
"url"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
},
{
"description": "Keyword-search Mitosis documentation and product pages. Returns ranked results with URLs. Use to answer any \"how do I…\" question about Mitosis.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"default": 5,
"description": "Max results (default 5, max 20)",
"type": "integer"
},
"query": {
"description": "Search terms, e.g. \"connect google workspace\"",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_docs",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:878a54366e3dd1071248a71c5095c8594f45a73cbb5af3dc3f9155ab42b61513 | sha256sum