ask_content_assistant
Sends a natural-language request to Marcora's in-document Content Assistant about ONE EXISTING content document (content_id, from list_content, get_content or get_project). The request can ask for an edit ("tighten paragraph two"), an extension, or pure ideation or a question ("give me three headline ideas"); the assistant decides whether to change the document or only reply. This is the in-editor Content Assistant, not the Marcora Agent.
It may rewrite the document body. It only does so when it decides the request warrants a change; otherwise it replies in the document's sidebar thread. Pass chat_only_mode=true to force a reply with no document change.
Asynchronous. It returns a generation_id at once and does the work in the background; it does not return the assistant's text. If the user has the document open in Marcora, the reply and any edits stream live into its AI Assistant sidebar. Headless callers poll get_generation_status with the generation_id.
One run per document at a time. A second call on the same document while a run is in progress fails with "Marcora is already updating this document." A run that may edit the document also holds it: nobody can edit it in the app until the run finishes or fails. A chat_only_mode=true run doesn't hold it. To send several requests, wait for each run to reach a terminal status, or combine them into one prompt. Never retry in a tight loop.
Context: the assistant sees the current document body, the prior sidebar conversation and relevant brand and reference context. Add collection_ids or project_id to fold in more.
Inputs: content_id and prompt (required); optional selected_text, thinking_mode, chat_only_mode, ai_provider, collection_ids, project_id.
Inputs:
content_id: the content document to act on (from list_content, get_content, or get_project).prompt: the request, in natural language.selected_text: optional text the user has highlighted in the document for the request to focus on.thinking_mode: optional; enable extended reasoning for harder requests.chat_only_mode: optional; force a reply-only response with no document edit.ai_provider: optional model family (anthropicdefault, oropenai).collection_ids: optional Context Collection IDs to include.project_id: optional project UUID to include its context.
Errors:
notfound:content_idmatches 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_statusif you have itsgeneration_id), then retry.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"content_id": "<content_id>",
"prompt": "<prompt>"
},
"name": "ask_content_assistant"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The request in natural language (an edit, an extension, or a question). | |
| content_id | Yes | UUID of the content document to act on. Get from list_content, get_content, or get_project. | |
| project_id | No | Project UUID (from list_projects) whose context to include. | |
| ai_provider | No | Model family to use. | |
| selected_text | No | Optional highlighted text in the document to focus the request on. | |
| thinking_mode | No | Enable extended reasoning for complex requests. | |
| chat_only_mode | No | Force a sidebar-only reply with no document changes. | |
| collection_ids | No | Context Collection IDs (from list_context_collections) to include. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Initial status — always "pending" on dispatch. | |
| generation_id | Yes | UUID identifying this assistant run. |