MCP Tools
Content

ask_content_assistant

Send a natural-language request to Marcora's in-document Content Assistant to edit, extend, or ideate on an existing document. It runs asynchronously and streams its reply and any edits into the document's sidebar in Marcora.

Input Schema

{
  "type": "object",
  "required": [
    "content_id",
    "prompt"
  ],
  "properties": {
    "prompt": {
      "type": "string",
      "description": "The request in natural language (an edit, an extension, or a question)."
    },
    "content_id": {
      "type": "string",
      "format": "uuid",
      "description": "UUID of the content document to act on. Get from list_content, get_content, or get_project."
    },
    "project_id": {
      "type": "string",
      "format": "uuid",
      "description": "Project UUID (from list_projects) whose context to include."
    },
    "ai_provider": {
      "enum": [
        "anthropic",
        "openai"
      ],
      "type": "string",
      "description": "Model family to use."
    },
    "selected_text": {
      "type": "string",
      "description": "Optional highlighted text in the document to focus the request on."
    },
    "thinking_mode": {
      "type": "boolean",
      "description": "Enable extended reasoning for complex requests."
    },
    "chat_only_mode": {
      "type": "boolean",
      "description": "Force a sidebar-only reply with no document changes."
    },
    "collection_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "Context Collection IDs (from list_context_collections) to include."
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Always pending on dispatch."
    },
    "generation_id": {
      "type": "string",
      "format": "uuid",
      "description": "Identifies this run. Poll get_generation_status with it for the result."
    }
  }
}

Instructions

Send a natural-language request to Marcora's in-document Content Assistant for an existing content document. The request can ask for an edit ("add an intro paragraph", "tighten paragraph two"), an extension, or pure ideation / a question ("give me three headline ideas") — the assistant decides whether to change the document or just reply.

This is the in-editor Content Assistant that operates on one specific document — not the general Marcora Agent.

Asynchronous. Returns a generation_id (UUID) immediately and does the model work in the background. When the user has the document open in Marcora, the assistant's reply and any edits stream live into the document's AI Assistant sidebar via a realtime channel — no polling needed. Headless callers (or anyone wanting the result text) poll get_generation_status with the returned generation_id.

One run per document at a time. While a run is in progress, a second ask_content_assistant call on the same document fails. A run that may edit the document also holds it: nobody (including the caller) can edit it in the app until the run finishes or fails, when it is handed back. A chat_only_mode: true run doesn't hold the document, so people can keep editing while it replies. To send several requests to one document, wait for each run to finish (get_generation_status reaches a terminal status) before sending the next, or combine them into one prompt.

Behavior

  • The assistant only rewrites the document body when it decides the request warrants a change; otherwise it just replies in the sidebar thread.
  • chat_only_mode: true forces a reply-only response with no document changes.
  • The current document body and prior sidebar conversation are loaded automatically; pass collection_ids and/or project_id to fold in extra context.

Parameters

Parameter Type Required Description
content_id string (uuid) Yes The content document to act on (from list_content, get_content, or get_project)
prompt string Yes The request, in natural language
selected_text string No Text the user has highlighted in the document, to focus the request on
thinking_mode boolean No Enable extended reasoning for harder requests
chat_only_mode boolean No Force a reply-only response with no document edit
ai_provider string No Model family: anthropic (default) or openai
collection_ids array No Context Collection IDs (from list_context_collections) to include
project_id string (uuid) No Project UUID (from list_projects) whose context to include

Output

Field Type Description
generation_id string (uuid) Identifies this run. Poll get_generation_status with it for the result
status string Always pending on dispatch

Errors

  • notfound — content_id matches no content document
  • "Marcora is already updating this document." — another run on this document is still in progress. Wait for it to finish (poll get_generation_status if you have its generation_id), then retry. Do not retry in a tight loop.

Example prompts

  • "Add a short intro paragraph to this document"
  • "Give me three alternative headlines for this draft" (reply-only)
  • "Tighten the second paragraph and fix the tone"
Scroll to Top