add_context
Add a new reference item to your context library, the source material that powers on-brand AI generation. Supply the body as pasted markdown, a one-off URL import, or a tracked live web page, and optionally file it under a collection or project.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | — | Descriptive name for the context item |
content | string | No | — | Markdown body (creates a `manual` item). Provide exactly one of `content` / `import_url` / `connected_webpage_url` |
import_url | string | No | — | Public URL imported **once** as a static markdown snapshot (URL not retained, not refreshable). Provide exactly one of the three body inputs |
connected_webpage_url | string | No | — | Public URL tracked as a live, refreshable `webpage` item (URL stored; dedupes by URL; admin/editor only). Provide exactly one of the three body inputs |
collection_id | integer | No | — | Collection ID to organize the item (from `list_context_collections` or `create_context_collection`). **Omit it — or pass `0` — to file the item at the top level of the Reference Library** |
project_id | string | No | — | Project ID to associate with (from `list_projects`). Omit it to leave the item unassociated |
Input Schema
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Descriptive name for the context item"
},
"content": {
"type": "string",
"description": "Markdown body (creates a manual item). Provide exactly one of content, import_url, or connected_webpage_url."
},
"import_url": {
"type": "string",
"description": "Give a public URL to import once. The backend fetches the page, converts it to clean markdown, and stores that as a static snapshot (the URL isn't kept and the item isn't refreshable). Importing is asynchronous: the call returns immediately with the new item's `id` and `import_status: \"processing\"`, and the content finishes loading a moment later. Check on it with `get_context_item` — the content appears and `import_status` flips to `\"ready\"`. Because the call returns right away, you can import many URLs back-to-back without anything timing out. If an item is still missing a minute or two later, the fetch didn't succeed — check the URL and try again. Provide exactly one of the three body inputs."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Project ID to associate with (from list_projects). Omit it to leave the item unassociated."
},
"collection_id": {
"type": "integer",
"description": "Collection ID to organize the item (from list_context_collections or create_context_collection). Omit it — or pass 0 — to file the item at the top level of the Reference Library."
},
"connected_webpage_url": {
"type": "string",
"description": "Public URL tracked as a live, refreshable webpage item (URL stored; dedupes by URL; admin/editor only). Provide exactly one of the three body inputs."
}
}
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Context item ID"
},
"name": {
"type": "string",
"description": "Context item name"
},
"content": {
"type": "string",
"description": "The stored reference content. For imported items, `content` is empty in the immediate response — fetch the item with `get_context_item` to read the full body."
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct URL to view this context item in the Marcora app"
},
"created_at": {
"type": "integer",
"description": "Unix timestamp of creation"
},
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Project association (null if none)"
},
"word_count": {
"type": "integer",
"description": "Word count of content"
},
"content_type": {
"type": "string",
"description": "manual (from content / import_url) or webpage (from connected_webpage_url)"
},
"collection_id": {
"type": [
"integer",
"null"
],
"description": "Collection this item belongs to (null if none)"
},
"import_status": {
"type": "string",
"description": "For import_url items, the load state: `\"processing\"` immediately after the call, `\"ready\"` once the content has finished loading. Empty for pasted content and web pages."
}
}
}Instructions
Use this tool to add a new context item to your reference library.
Workflow:
- Provide a descriptive
name. - Provide exactly one body source:
content(markdown directly),import_url(a public URL imported once as a static snapshot), orconnected_webpage_url(a public URL tracked as a live, refreshable web page).connected_webpage_urlrequires admin or editor role. - Optionally assign to a collection by passing
collection_id. Uselist_context_collectionsto see existing collections and their IDs, or usecreate_context_collectionto create a new one and get its ID. Omit it — or pass0— to file the item at the top level of the Reference Library. - Optionally associate with a project by passing
project_id. Uselist_projectsto see available projects and their IDs. Omit it to leave the item unassociated.
Filing an item in the Reference Library: omitting
collection_id— or passing0— files the item at the top level of the Reference Library, where it's returned bylist_context_items, fetchable viaget_context_item, and eligible for semantic search. This is the normal path for team-wide reference material.Unlike
update_context, this tool'scollection_idis typed as a bareintegerin the input schema, so a strict MCP client cannot send a literalnullhere. You don't need one:collection_idis optional onadd_context, so simply omitting it is the idiomatic way to file at the top level. (The server treats an explicitnullthe same as omitted/0, but only clients that don't validate against the schema can send it.)
Use context items for: brand voice guidelines, company facts, product descriptions, audience personas, competitive intelligence.
Errors
400— exactly one ofcontent,import_url, orconnected_webpage_urlis required (none, or more than one, was supplied)400—connected_webpage_urlcould not be fetched or parsed (check the URL is publicly reachable)403—connected_webpage_urlrequires admin or editor role
Example prompts
- "Add our brand guidelines to Marcora"
- "Store this competitive analysis as context"
- "Import https://example.com/competitor-pricing as a one-off snapshot called 'Acme pricing'"
- "Track our pricing page (https://example.com/pricing) as a web page so I can refresh it later"
- "Add this product brief to the 'Product Launch' collection"
Examples
Add competitor research to a project
Store competitor analysis as context tied to a specific project, so content generated for that project can reference competitive positioning.
{
"name": "Q2 Competitor Analysis — Acme Corp",
"content": "Acme Corp launched a freemium tier in March. Their messaging focuses on speed and simplicity. Key weakness: no enterprise SSO support.",
"project_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "Q2 Competitor Analysis — Acme Corp",
"content": "Acme Corp launched a freemium tier in March...",
"word_count": 27,
"project_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"created_at": 1712678400
}