MCP Tools
The Marcora MCP Server exposes a set of tools that your AI assistant can call directly to interact with your workspace. Each tool maps to a specific action — from generating content to retrieving context — and can be invoked naturally through conversation.
The tools below are available to any connected AI assistant once the Marcora MCP Server is configured.
Tools
Workflows
create_workflow
Create a new workflow template. Workflows start as status="draft"; activate them via update_workflow once the user confirms.
Input Schema
{
"type": "object",
"required": [
"name",
"steps"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Human-readable workflow name."
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"description"
],
"properties": {
"name": {
"type": "string"
},
"agent_hint": {
"type": "string"
},
"description": {
"type": "string"
}
},
"additionalProperties": true
},
"minItems": 1,
"description": "Ordered step objects. The runner executes these sequentially."
},
"inputs": {
"type": "object",
"description": "Declared input schema. Keys are input names; values describe type/label/required (free-form).",
"additionalProperties": true
},
"description": {
"type": "string",
"description": "One- or two-sentence description of what this workflow accomplishes."
},
"allowed_tools": {
"type": "array",
"items": {
"type": "string"
},
"description": "Narrow allowlist of MCP tool names the runner may call."
},
"schedule_config": {
"type": "object",
"description": "Optional. Creates an accompanying workflow_trigger with is_enabled=false. Shape: frequency (daily/weekly/hourly), interval_hours, timezone (UTC).",
"additionalProperties": true
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"required": [
"id",
"name",
"status",
"team_id",
"created_at",
"link_url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Workflow UUID."
},
"name": {
"type": "string"
},
"tags": {
"type": "array"
},
"steps": {
"type": "array"
},
"inputs": {
"type": "object"
},
"status": {
"enum": [
"draft",
"active",
"archived"
],
"type": "string"
},
"team_id": {
"type": "integer"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to this workflow in Marcora. Format: https://app.marcora.ai/workflows/{workflow_id}"
},
"created_at": {
"type": "integer"
},
"updated_at": {
"type": "integer"
},
"description": {
"type": "string"
},
"allowed_tools": {
"type": "array"
},
"created_by_user_id": {
"type": "integer"
}
}
}get_workflow
Fetch a single workflow's full definition plus its triggers and latest run. Use before updating a workflow to avoid clobbering unknown fields.
Input Schema
{
"type": "object",
"required": [
"workflow_id"
],
"properties": {
"workflow_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the workflow template."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"required": [
"workflow"
],
"properties": {
"workflow": {
"type": "object",
"required": [
"id",
"name",
"status",
"team_id",
"link_url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Workflow UUID."
},
"name": {
"type": "string"
},
"tags": {
"type": "array"
},
"steps": {
"type": "array"
},
"inputs": {
"type": "object"
},
"status": {
"enum": [
"draft",
"active",
"archived"
],
"type": "string"
},
"team_id": {
"type": "integer"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to this workflow in Marcora. Format: https://app.marcora.ai/workflows/{workflow_id}"
},
"_triggers": {
"type": "array"
},
"created_at": {
"type": "integer"
},
"updated_at": {
"type": "integer"
},
"_latest_run": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Run UUID."
},
"status": {
"type": "string"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to this run. Format: https://app.marcora.ai/workflows/{workflow_id}/runs/{run_id}"
},
"workflow_template_id": {
"type": "string",
"format": "uuid"
}
},
"description": "Most recent run of this workflow, if any."
},
"description": {
"type": "string"
},
"allowed_tools": {
"type": "array"
},
"schedule_config": {
"type": "object"
}
}
}
}
}get_workflow_runs
Inspect workflow run history. Two modes: list mode (paginated runs for a workflow) or single mode (one run with step logs and tool call logs) controlled by run_id presence.
Input Schema
{
"type": "object",
"required": [
"workflow_id"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1
},
"run_id": {
"type": "string",
"format": "uuid",
"description": "UUID of a specific run. Omit to list all runs for the workflow."
},
"status": {
"enum": [
"pending",
"running",
"succeeded",
"failed",
"skipped"
],
"type": "string",
"description": "Filter by run status (list mode only)."
},
"per_page": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"workflow_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the workflow template."
}
},
"additionalProperties": false
}Output Schema
{
"oneOf": [
{
"type": "object",
"title": "List mode (run_id omitted)",
"required": [
"items",
"itemsTotal"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Run UUID."
},
"status": {
"type": "string"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to this run in Marcora."
},
"created_at": {
"type": "integer"
},
"trigger_type": {
"type": "string"
},
"workflow_template_id": {
"type": "string",
"format": "uuid"
}
}
}
},
"curPage": {
"type": "integer"
},
"nextPage": {
"type": [
"integer",
"null"
]
},
"prevPage": {
"type": [
"integer",
"null"
]
},
"itemsTotal": {
"type": "integer"
}
}
},
{
"type": "object",
"title": "Single run mode (run_id provided)",
"required": [
"id",
"workflow_template_id",
"status",
"link_url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Run UUID."
},
"status": {
"enum": [
"pending",
"running",
"succeeded",
"failed",
"skipped"
],
"type": "string"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to this run in Marcora. Format: https://app.marcora.ai/workflows/{workflow_id}/runs/{run_id}"
},
"_step_logs": {
"type": "array",
"description": "Per-step execution logs."
},
"created_at": {
"type": "integer"
},
"error_reason": {
"type": [
"string",
"null"
]
},
"trigger_type": {
"type": "string"
},
"_tool_call_logs": {
"type": "array",
"description": "Tool calls made during this run."
},
"workflow_template_id": {
"type": "string",
"format": "uuid"
}
}
}
]
}list_workflows
List workflows for the authenticated user's active team. Supports optional status filter and name search.
Input Schema
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1
},
"search": {
"type": "string"
},
"status": {
"enum": [
"draft",
"active",
"archived"
],
"type": "string"
},
"per_page": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"required": [
"items",
"itemsTotal"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Workflow UUID."
},
"name": {
"type": "string"
},
"tags": {
"type": "array"
},
"status": {
"enum": [
"draft",
"active",
"archived"
],
"type": "string"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to this workflow in Marcora."
},
"created_at": {
"type": "integer"
},
"updated_at": {
"type": "integer"
},
"description": {
"type": "string"
}
}
}
},
"curPage": {
"type": "integer"
},
"nextPage": {
"type": [
"integer",
"null"
]
},
"prevPage": {
"type": [
"integer",
"null"
]
},
"itemsTotal": {
"type": "integer"
}
}
}run_workflow
Manually dispatch a workflow run. Creates a workflow_run row and dispatches a Managed Agents session. Returns the run row — check .status to know what happened.
Input Schema
{
"type": "object",
"required": [
"workflow_id"
],
"properties": {
"workflow_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the workflow template to run."
},
"input_values": {
"type": "object",
"description": "Values for the workflow's declared inputs, if any.",
"additionalProperties": true
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"required": [
"id",
"workflow_template_id",
"status",
"team_id",
"link_url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Run UUID."
},
"status": {
"enum": [
"pending",
"running",
"failed",
"succeeded",
"skipped"
],
"type": "string"
},
"team_id": {
"type": "integer"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to this run in Marcora. Format: https://app.marcora.ai/workflows/{workflow_id}/runs/{run_id}"
},
"created_at": {
"type": "integer"
},
"error_reason": {
"type": [
"string",
"null"
]
},
"trigger_type": {
"type": "string"
},
"runner_session_id": {
"type": "string"
},
"workflow_template_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the workflow that was run."
}
}
}update_workflow
Partial update of a workflow template. Only keys present in the input mutate — unspecified keys are preserved. Call get_workflow first to see the current state.
Input Schema
{
"type": "object",
"required": [
"workflow_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"tags": {
"type": "array"
},
"steps": {
"type": "array"
},
"inputs": {
"type": "object"
},
"status": {
"enum": [
"draft",
"active",
"archived"
],
"type": "string"
},
"description": {
"type": "string"
},
"workflow_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the workflow to update."
},
"allowed_tools": {
"type": "array"
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"required": [
"id",
"name",
"status",
"link_url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Workflow UUID."
},
"name": {
"type": "string"
},
"tags": {
"type": "array"
},
"steps": {
"type": "array"
},
"inputs": {
"type": "object"
},
"status": {
"enum": [
"draft",
"active",
"archived"
],
"type": "string"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to this workflow in Marcora. Format: https://app.marcora.ai/workflows/{workflow_id}"
},
"updated_at": {
"type": "integer"
},
"description": {
"type": "string"
},
"allowed_tools": {
"type": "array"
}
}
}Context & Resources
get_brand_foundation
Get the team's Brand Foundation — company overview, brand voice, writing style, and writing examples.
Input Schema
{
"type": "object",
"properties": {
"elements": {
"type": "array",
"items": {
"enum": [
"company_overview",
"brand_voice",
"writing_style",
"writing_examples"
],
"type": "string"
},
"description": "Optional subset of elements to return. Omit or pass empty to return all four."
}
}
}Output Schema
{
"type": "object",
"properties": {
"brand_voice": {
"type": "string",
"description": "Markdown content for Brand Voice. Empty string if not set. Only present if requested via elements."
},
"writing_style": {
"type": "string",
"description": "Markdown content for Writing Style. Empty string if not set. Only present if requested via elements."
},
"company_overview": {
"type": "string",
"description": "Markdown content for Company Overview. Empty string if not set. Only present if requested via elements."
},
"writing_examples": {
"type": "string",
"description": "Markdown content for Writing Examples. Free-form structure — whatever the user has saved. Empty string if not set. Only present if requested via elements."
}
}
}list_context_collections
Returns all context collections accessible to the current user. Collections organize reference materials (context items) that inform AI-generated content.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"link_url"
],
"properties": {
"id": {
"type": "integer",
"description": "Collection ID. Pass to add_context or get_relevant_context."
},
"name": {
"type": "string"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct URL to view this collection in the Marcora app."
},
"is_private": {
"type": "boolean"
},
"item_count": {
"type": "integer"
},
"description": {
"type": "string"
}
}
}
}update_brand_foundation
Overwrite a single Brand Foundation element (company overview, brand voice, writing style, or writing examples).
Input Schema
{
"type": "object",
"required": [
"element",
"content"
],
"properties": {
"content": {
"type": "string",
"description": "New markdown content. Replaces existing content in full. Free-form — no enforced structure."
},
"element": {
"enum": [
"company_overview",
"brand_voice",
"writing_style",
"writing_examples"
],
"type": "string",
"description": "Which element to overwrite."
}
}
}Output Schema
{
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "Updated markdown content (echoes what was stored)."
},
"element": {
"type": "string",
"description": "Which element was updated (echoes the input)."
}
}
}create_context_collection
Create a new context collection to organize your reference materials. Collections group related context items together for easier management and targeted retrieval.
Input Schema
{
"type": "object",
"required": [
"name",
"description",
"is_private"
],
"properties": {
"name": {
"type": "string",
"description": "A descriptive name for the collection"
},
"is_private": {
"type": "boolean",
"description": "If true, only you can see this collection. If false, all team members can access it."
},
"description": {
"type": "string",
"description": "A short description of what this collection contains"
}
}
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Collection ID. Pass this as collection_id to add_context to add items to this collection."
},
"name": {
"type": "string",
"description": "Collection name."
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct URL to view this collection in the Marcora app."
},
"created_at": {
"type": "integer",
"description": "Unix timestamp of creation."
},
"is_private": {
"type": "boolean",
"description": "Whether this collection is private to the creator."
},
"description": {
"type": "string",
"description": "Collection description."
}
}
}add_context
Add a new context item to your reference library. Context items are reference materials that power AI generation — they help the AI produce more accurate, on-brand, and relevant content. You can supply the body two ways: - **`content`** — paste the markdown body directly. Best for short or hand-authored material. - **`content_url`** — pass a public URL and the backend fetches it and converts it to clean markdown server-side using a headless browser + Mozilla Readability (the same engine used for the user-website context-import flow). Use this whenever the body is large, comes from a presigned-link export (e.g. Google Doc, Composio sandbox), or you'd otherwise have to pull the page into your own conversation just to forward it. Exactly one of `content` or `content_url` is required — providing both returns a 400.
Input Schema
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Descriptive name for the context item"
},
"content": {
"type": "string",
"description": "Markdown body. Mutually exclusive with content_url — provide exactly one."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Project ID to associate with (from get_projects)"
},
"content_url": {
"type": "string",
"description": "Public URL — backend fetches it and extracts clean markdown server-side. Mutually exclusive with content."
},
"collection_id": {
"type": "integer",
"description": "Collection ID to organize the item (from list_context_collections or create_context_collection)"
}
}
}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"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct URL to view this context item in the Marcora app. Resolves to the project, collection, or reference library view depending on the item's scope."
},
"created_at": {
"type": "integer",
"description": "Unix timestamp of creation"
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Project association (if assigned)"
},
"word_count": {
"type": "integer",
"description": "Word count of content"
},
"collection_id": {
"type": "integer",
"description": "Collection this item belongs to (if assigned)"
}
}
}update_context
Update an existing context item — change its name, content, or move it between collections / projects. If the item has a linked editing canvas open in the Marcora sidebar, its title and content stay in sync automatically. Like `add_context`, you can supply a new body either as inline `content` or as a `content_url` the backend fetches and converts to markdown server-side. Pass at most one — providing both returns a 400. Omit both to leave the body untouched (e.g. when you're only renaming the item or moving it between collections).
Input Schema
{
"type": "object",
"required": [
"context_item_id",
"collection_id",
"project_id"
],
"properties": {
"name": {
"type": "string",
"description": "If provided, updates the name. Omit to leave unchanged."
},
"content": {
"type": "string",
"description": "If provided, updates the content. Omit to leave unchanged. Triggers RAG re-embedding."
},
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Full replace. Pass the current ID to keep the project association, pass a different ID to move it, or pass null to disassociate it."
},
"content_url": {
"type": "string",
"description": "Public URL — backend fetches and converts to clean markdown server-side, then stores it as the new body. Mutually exclusive with content."
},
"collection_id": {
"type": [
"integer",
"null"
],
"description": "Full replace. Pass the current ID to keep the item in its collection, pass a different ID to move it, or pass null to remove it from any collection."
},
"context_item_id": {
"type": "string",
"format": "uuid",
"description": "The context item to update."
}
}
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Context item ID."
},
"name": {
"type": "string",
"description": "Updated context item name."
},
"content": {
"type": "string",
"description": "Updated reference content."
},
"link_url": {
"type": "string",
"description": "Direct URL to view this context item in the Marcora app."
},
"project_id": {
"type": [
"string",
"null"
],
"description": "Project this item is associated with (null if none)."
},
"updated_at": {
"type": "integer",
"description": "Unix timestamp of last update."
},
"word_count": {
"type": "integer",
"description": "Word count of updated content."
},
"collection_id": {
"type": [
"integer",
"null"
],
"description": "Collection this item belongs to (null if none)."
},
"content_intro": {
"type": "string",
"description": "Truncated content intro used in listings."
},
"relevancy_processed_status": {
"type": "string",
"description": "RAG re-processing status (unprocessed, provisional, complete). Flips to unprocessed whenever name or content changes."
}
}
}get_relevant_context
Searches the team's context library and returns the most relevant chunks for a given prompt. Use this to gather supporting context before generating or refining content.
Input Schema
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"prompt": {
"type": "string",
"description": "Search string"
},
"project_id": {
"description": "Project ID to scope context search"
},
"collection_ids": {
"description": "Collection IDs to scope context search"
},
"context_rag_ids": {
"description": "Previously returned chunk IDs to exclude (pagination)"
}
}
}Output Schema
{
"type": "object",
"properties": {
"context_rag_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"description": "Chunk IDs returned. Pass back to exclude from future searches."
},
"context_item_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"description": "Parent context item IDs that the chunks belong to."
},
"relevant_context": {
"type": "string",
"description": "Concatenated relevant context text from matched chunks"
}
}
}Blueprints
list_blueprints
Get all blueprints in your team's library, organized as a flat list. Each blueprint includes its content category and a web URL.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"blueprints": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"web_url": {
"type": "string"
},
"category": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"created_at": {
"type": "integer"
},
"blueprint_uuid": {
"type": "string",
"format": "uuid"
},
"team_visibility": {
"type": "string"
},
"deliverable_count": {
"type": "integer"
},
"input_instructions": {
"type": "string"
},
"exchange_visibility": {
"type": "string"
}
}
}
},
"blueprint_drafts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"canvas_id": {
"type": "string",
"format": "uuid"
},
"created_at": {
"type": "integer"
},
"is_converted": {
"type": "boolean"
}
}
},
"description": "In-progress blueprint drafts not yet finalized"
}
}
}get_blueprint
Retrieve the full details of a specific blueprint by its UUID, including content, AI-generated analysis, and metadata.
Input Schema
{
"type": "object",
"required": [
"blueprint_uuid"
],
"properties": {
"blueprint_uuid": {
"type": "string",
"format": "uuid",
"description": "UUID of the blueprint to retrieve"
}
}
}Output Schema
{
"type": "object",
"required": [
"blueprint_uuid",
"name"
],
"properties": {
"name": {
"type": "string"
},
"summary": {
"type": "string"
},
"web_url": {
"type": "string"
},
"category": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"created_at": {
"type": "integer"
},
"blueprint_dna": {
"type": "string"
},
"blueprint_uuid": {
"type": "string",
"format": "uuid"
},
"source_content": {
"type": "string"
},
"team_visibility": {
"type": "string"
},
"reference_content": {
"type": "string"
},
"input_instructions": {
"type": "string"
},
"exchange_visibility": {
"type": "string"
}
}
}create_blueprint
Create a reusable blueprint template for generating content at scale. Blueprints define the structure and AI instructions for a document type. NOTE: Takes 1-3 minutes to return.
Input Schema
{
"type": "object",
"required": [
"name",
"category_id",
"source_content"
],
"properties": {
"name": {
"type": "string",
"description": "Blueprint name"
},
"category_id": {
"type": "integer",
"description": "Category ID from get_content_categories"
},
"source_content": {
"type": "string",
"description": "Well-structured markdown template content"
}
}
}Output Schema
{
"type": "object",
"required": [
"blueprint_uuid",
"name",
"link_url"
],
"properties": {
"name": {
"type": "string",
"description": "Blueprint name."
},
"summary": {
"type": "string",
"description": "AI-generated summary of what this blueprint produces."
},
"category": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "integer",
"description": "Category ID."
},
"name": {
"type": "string",
"description": "Category name."
}
},
"description": "Content category this blueprint belongs to."
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to view this blueprint in Marcora."
},
"created_at": {
"type": "integer",
"description": "Unix timestamp of creation."
},
"blueprint_dna": {
"type": "string",
"description": "AI-generated analysis of the template structure, tone, and section descriptions."
},
"blueprint_uuid": {
"type": "string",
"format": "uuid",
"description": "Unique identifier — use as blueprint_uuid in create_deliverable_from_blueprint."
},
"source_content": {
"type": "string",
"description": "The original template content you provided."
},
"team_visibility": {
"type": "string",
"description": "Visibility within your team (e.g. team, private)."
},
"reference_content": {
"type": "string",
"description": "AI-polished reference version of the template content."
},
"input_instructions": {
"type": "string",
"description": "AI-generated guidance for users on what context to provide when generating from this blueprint."
}
}
}create_blueprint_draft
Create an AI-assisted blueprint DRAFT from a prompt. This creates a draft blueprint template you can review before saving as a full blueprint.
Input Schema
{
"type": "object",
"required": [
"instructions",
"name",
"content"
],
"properties": {
"name": {
"type": "string",
"description": "Name for the draft"
},
"content": {
"type": "string",
"description": "Initial content as markdown"
},
"category_id": {
"type": "integer",
"description": "Category ID from get_content_categories"
},
"instructions": {
"type": "string",
"description": "Description of the blueprint to create"
}
}
}Output Schema
{
"type": "object",
"required": [
"id",
"uuid",
"title",
"content",
"link_url"
],
"properties": {
"id": {
"type": "integer",
"description": "Canvas record ID for the blueprint draft"
},
"uuid": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for this draft"
},
"title": {
"type": "string",
"description": "Blueprint draft name"
},
"content": {
"type": "string",
"description": "AI-generated blueprint template content in markdown"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct URL to view/edit this blueprint draft in Marcora"
}
}
}finalize_blueprint_draft
Finalize (publish) a previously created blueprint draft into a full, usable blueprint. This is the final step in the draft workflow: create_blueprint_draft → user reviews → finalize_blueprint_draft.
Input Schema
{
"type": "object",
"required": [
"draft_uuid"
],
"properties": {
"name": {
"type": "string",
"description": "Optional name override. If not provided, uses the draft's existing title."
},
"draft_uuid": {
"type": "string",
"format": "uuid",
"description": "The UUID of the blueprint draft to finalize (returned as 'uuid' from create_blueprint_draft)."
},
"category_id": {
"type": "integer",
"description": "Optional category ID override. If not provided, uses the draft's existing category. Get valid IDs from get_content_categories."
}
}
}Output Schema
{
"type": "object",
"required": [
"blueprint_uuid",
"name",
"link_url"
],
"properties": {
"name": {
"type": "string",
"description": "Blueprint name."
},
"summary": {
"type": "string",
"description": "AI-generated summary of what this blueprint produces."
},
"category": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "integer",
"description": "Category ID."
},
"name": {
"type": "string",
"description": "Category name."
}
},
"description": "Content category this blueprint belongs to."
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct link to view this blueprint in Marcora."
},
"created_at": {
"type": "integer",
"description": "Unix timestamp of creation."
},
"blueprint_dna": {
"type": "string",
"description": "AI-generated analysis of the template structure, tone, and section descriptions."
},
"blueprint_uuid": {
"type": "string",
"format": "uuid",
"description": "Unique identifier — use as blueprint_uuid in create_deliverable_from_blueprint."
},
"source_content": {
"type": "string",
"description": "The template content from the finalized draft."
},
"team_visibility": {
"type": "string",
"description": "Visibility within your team (e.g. team, private)."
},
"reference_content": {
"type": "string",
"description": "AI-polished reference version of the template content."
},
"input_instructions": {
"type": "string",
"description": "AI-generated guidance for users on what context to provide when generating from this blueprint."
}
}
}list_community_blueprints
Browse community blueprints available for import. Returns blueprints shared by Marcora users, including name, summary, contributor info, and category.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"summary"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Blueprint exchange ID. Pass to get_community_blueprint_details or import_community_blueprint."
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"summary": {
"type": "string"
},
"category": {
"type": "string"
},
"visibility": {
"type": "string"
},
"is_featured": {
"type": "boolean"
},
"category_short": {
"type": "string"
},
"contributor_name": {
"type": "string"
},
"input_instructions": {
"type": "string"
},
"contributor_company": {
"type": "string"
}
}
}
}get_community_blueprint_details
Get the full details for a specific community blueprint, including complete content, content description/style guide, and contributor information.
Input Schema
{
"type": "object",
"properties": {
"blueprint_exchange_id": {
"type": "string",
"format": "uuid",
"description": "Blueprint exchange ID from get_community_blueprints"
}
}
}Output Schema
{
"type": "object",
"required": [
"id",
"name",
"content"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Blueprint exchange ID. Pass to import_community_blueprint."
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"content": {
"type": "string",
"description": "Full example document content in markdown"
},
"summary": {
"type": "string"
},
"visibility": {
"type": "string"
},
"is_featured": {
"type": "boolean"
},
"contributor_name": {
"type": "string"
},
"input_instructions": {
"type": "string"
},
"content_description": {
"type": "string",
"description": "Template structure and style guidelines"
},
"contributor_company": {
"type": "string"
},
"contributor_job_title": {
"type": "string"
},
"suggested_content_type": {
"type": "string"
}
}
}import_community_blueprint
Import a blueprint from the Marcora community exchange into your team's library. Once imported, use it like any of your own blueprints to generate content.
Input Schema
{
"type": "object",
"properties": {
"blueprint_exchange_id": {
"type": "string",
"format": "uuid",
"description": "Blueprint exchange ID from get_community_blueprints"
}
}
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Blueprint record ID"
},
"name": {
"type": "string"
},
"uuid": {
"type": "string",
"format": "uuid",
"description": "Unique identifier — use as blueprint_uuid in create_deliverable_from_blueprint"
},
"content": {
"type": "string"
},
"created_at": {
"type": "integer"
},
"team_visibility": {
"type": "string"
},
"imported_exchange_id": {
"type": "string",
"format": "uuid"
}
}
}Reference
list_content_categories
Returns all content categories available to your team. Categories organize blueprints and content by type (e.g. GTM Strategy, Product Launch, etc).
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "integer",
"description": "Category ID. Pass to create_blueprint or create_blueprint_draft as category_id."
},
"name": {
"type": "string",
"description": "Category name (e.g. GTM Messaging)"
}
}
}
}list_targeting_dimensions
Returns targeting dimensions and their options for the current team. Dimensions are categories (e.g. Buying Stage, Persona) with selectable options used to target content generation.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"options"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string",
"description": "Dimension name (e.g. Buying Stage, Persona)"
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "integer",
"description": "Pass in dimension_option_ids when creating content."
},
"name": {
"type": "string",
"description": "Option name (e.g. Awareness, Decision)"
}
}
}
}
}
}
}Content
create_content
Create content by supplying your own text directly, generating from an AI prompt, or generating from a blueprint. With content: synchronous, saves directly. With instructions: synchronous (1-3 min), returns content. With instructions + blueprint_uuid: async, returns generation_id to poll via get_generation_status.
Input Schema
{
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "Your own text to save directly as a document. Cannot be used with blueprint_uuid."
},
"plan_id": {
"type": "string",
"format": "uuid",
"description": "Optional. Plan UUID (from create_plan / list_plans / get_plan — use plan_uuid, not integer id). Associates the new content with the plan and triggers an automatic stage transition to In_Process. Only auto-links when used with blueprint_uuid. Do NOT pass if the plan is in Complete stage."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Optional. Project to associate this content with."
},
"category_id": {
"type": "integer",
"description": "Optional. Content category ID."
},
"instructions": {
"type": "string",
"description": "Detailed instructions describing what to create (AI will generate it)."
},
"blueprint_uuid": {
"type": "string",
"format": "uuid",
"description": "Optional. Blueprint UUID to generate from. Makes the call async. Only works with instructions."
},
"collection_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Optional. Context collection IDs."
},
"dimension_option_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Optional. Targeting dimension option IDs."
},
"use_extended_thinking": {
"type": "boolean",
"description": "Optional. Enable extended thinking for complex content (sync mode only, with instructions)."
}
}
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Content record ID (only present without blueprint)."
},
"title": {
"type": "string",
"description": "Document title (only present without blueprint)."
},
"content": {
"type": "string",
"description": "Document content in markdown (only present without blueprint)."
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct URL to view/open this content in Marcora (only present without blueprint)."
},
"content_id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier — use as content_id in get_content and share tools (only present without blueprint)."
},
"created_at": {
"type": "integer",
"description": "Unix timestamp of creation (only present without blueprint)."
},
"generation_id": {
"type": "integer",
"description": "ID to track async generation — pass to get_generation_status (only present WITH blueprint)."
}
},
"description": "When content is provided, returns the saved content object. When instructions are provided without blueprint, returns the AI-generated content object. When blueprint_uuid IS provided, returns only generation_id."
}get_generation_status
Check the status of an async content generation. Call this after create_content (with blueprint_uuid), which returns a generation_id.
Input Schema
{
"type": "object",
"required": [
"generation_id"
],
"properties": {
"generation_id": {
"type": "string",
"description": "The generation ID returned by create_content (with blueprint_uuid)."
}
}
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "Generation status (e.g. pending, gathering context, processing, completed, failed)."
},
"content": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Content name."
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct URL to view/open the content."
},
"content_id": {
"type": "string",
"format": "uuid",
"description": "Content ID. Pass to get_content to retrieve full content."
},
"blueprint_id": {
"type": "integer",
"description": "Blueprint used to generate this content."
}
},
"description": "Content summary (present when status is completed). Use get_content with content_id to get full content."
},
"generation_id": {
"type": "string",
"description": "The generation ID being checked."
}
}
}list_content
Returns all content visible to the current user as a single unified array. Content created from scratch and from blueprints are merged with consistent field names.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"content_id"
],
"properties": {
"name": {
"type": "string",
"description": "Content name."
},
"stage": {
"type": "string",
"description": "in_progress or ready."
},
"web_url": {
"type": "string",
"description": "Direct URL to view this content in Marcora."
},
"category": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
},
"description": "{id, name} or null if uncategorized."
},
"projects": {
"type": "array",
"items": {
"type": "string"
},
"description": "Project names this content belongs to."
},
"content_id": {
"type": "string",
"format": "uuid",
"description": "Content identifier."
},
"created_by": {
"type": "string",
"description": "Name of the creator."
},
"visibility": {
"type": "string",
"description": "private or team."
}
}
}
}get_content
Retrieves the full content of a specific document by its content_id (UUID).
Input Schema
{
"type": "object",
"required": [
"content_id"
],
"properties": {
"content_id": {
"type": "string",
"format": "uuid",
"description": "The UUID of the content to retrieve."
}
}
}Output Schema
{
"type": "object",
"required": [
"content_id",
"name",
"content"
],
"properties": {
"name": {
"type": "string",
"description": "Content name."
},
"stage": {
"type": "string",
"description": "Enumeration of in_progress or ready."
},
"content": {
"type": "string",
"description": "Full document content in markdown format."
},
"category": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
},
"description": "Content category, or null if not categorized."
},
"link_url": {
"type": "string",
"description": "Direct URL to view this content in Marcora."
},
"content_id": {
"type": "string",
"format": "uuid",
"description": "Content identifier."
},
"visibility": {
"type": "string",
"description": "Visibility setting (e.g. private, team)."
}
}
}update_content
Update a content document (canvas or deliverable) by content_id. Partial-update — omit fields to leave them unchanged.
Input Schema
{
"type": "object",
"required": [
"content_id"
],
"properties": {
"stage": {
"enum": [
"in_progress",
"ready"
],
"type": "string",
"description": "in_progress or ready."
},
"content": {
"type": "string",
"description": "New full markdown body. Omit to leave body unchanged."
},
"content_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the content to update. From list_content, get_content, get_generation_status, or get_project."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Project UUID to associate with this content. Replaces any existing project association."
},
"visibility": {
"enum": [
"private",
"team"
],
"type": "string",
"description": "private or team."
},
"category_id": {
"type": "integer",
"description": "Category ID from list_content_categories."
},
"name_override": {
"type": "string",
"description": "Custom document name. Setting this locks the name (won't auto-resync from content header on future edits)."
}
}
}Output Schema
{
"type": "object",
"required": [
"content_id",
"name",
"content"
],
"properties": {
"name": {
"type": "string",
"description": "Document name (post-update)."
},
"stage": {
"type": "string",
"description": "in_progress or ready."
},
"content": {
"type": "string",
"description": "Full document content in markdown."
},
"category": {
"type": [
"object",
"null"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
},
"description": "{id, name} or null if uncategorized."
},
"link_url": {
"type": "string",
"description": "Direct URL to view this content in Marcora."
},
"content_id": {
"type": "string",
"format": "uuid",
"description": "Content identifier."
},
"visibility": {
"type": "string",
"description": "private or team."
}
}
}Sharing
create_external_share
Creates a public share link for content, with optional expiration. Accessible publicly without a Marcora account.
Input Schema
{
"type": "object",
"required": [
"content_id"
],
"properties": {
"content_id": {
"type": "string",
"format": "uuid",
"description": "The ID of the content you wish to share."
},
"expires_at": {
"type": "integer",
"description": "Optional. Unix timestamp for link expiration."
}
}
}Output Schema
{
"type": "object",
"required": [
"share_link"
],
"properties": {
"share_link": {
"type": "string",
"description": "Public URL (https://app.marcora.ai/s/<token>) anyone can use to view the content."
}
}
}convert_markdown_to_word_doc
Export a markdown document as a downloadable Word (.docx) file. Returns a download URL.
Input Schema
{
"type": "object",
"required": [
"markdown_content"
],
"properties": {
"filename": {
"type": "string",
"description": "Filename without extension"
},
"document_url": {
"type": "string",
"description": "URL to embed as footer link to original document"
},
"markdown_content": {
"type": "string",
"description": "Markdown content to convert"
}
}
}Output Schema
{
"type": "object",
"properties": {
"filename": {
"type": "string",
"description": "Filename of the generated Word document"
},
"download_url": {
"type": "string",
"description": "URL to download the generated .docx Word document"
}
}
}Projects
list_projects
Returns all projects visible to the current user. Projects organize content into workstreams.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"link_url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"link_url": {
"type": "string",
"format": "uri",
"description": "Direct URL to view this project in the Marcora app."
},
"created_by": {
"type": "string"
},
"visibility": {
"type": "string"
},
"member_count": {
"type": "integer"
},
"content_count": {
"type": "integer",
"description": "Number of content items in this project"
}
}
}
}get_project
Returns details for a specific project including its members, documents, context items, and (when set) a project brief shortcut so the brief is directly addressable for follow-up edits.
Input Schema
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"project_id": {
"type": "string",
"description": "Project UUID from list_projects."
}
}
}Output Schema
{
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"description": "Project ID."
},
"name": {
"type": "string",
"description": "Project name."
},
"status": {
"type": "string",
"description": "Project status."
},
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"role": {
"type": "string"
},
"email": {
"type": "string"
},
"user_id": {
"type": "integer"
}
}
},
"description": "Project members."
},
"documents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"stage": {
"type": "string"
},
"web_url": {
"type": "string"
},
"category": {
"type": [
"object",
"null"
]
},
"content_id": {
"type": "string",
"format": "uuid",
"description": "Content UUID — pass to get_content or update_content."
},
"visibility": {
"type": "string"
}
}
},
"description": "Documents in this project."
},
"created_at": {
"type": "integer",
"description": "Unix timestamp of creation."
},
"visibility": {
"type": "string",
"description": "Visibility setting."
},
"context_items": {
"type": "array",
"description": "Context items associated with this project."
},
"project_brief": {
"type": [
"object",
"null"
],
"properties": {
"name": {
"type": "string"
},
"content_id": {
"type": "string",
"format": "uuid"
}
},
"description": "The project's pinned brief document, if set. {name, content_id} — same shape as create_project's project_brief field. Pass content_id to update_content / get_content to edit or read the brief. null if the project has no brief set."
}
}
}create_project
Create a new project for organizing content and context into a workstream. Optionally generates a project brief document in the same call.
Input Schema
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Project name."
},
"visibility": {
"enum": [
"team",
"private"
],
"type": "string",
"default": "team",
"description": "team or private. Defaults to team."
},
"project_brief_details": {
"type": "string",
"minLength": 1,
"description": "If supplied, an AI-generated project brief is created and attached to the project. The brief's content_id is returned in the response so it can be passed to update_content later for edits."
}
}
}Output Schema
{
"type": "object",
"required": [
"project_id",
"name",
"link_url"
],
"properties": {
"name": {
"type": "string",
"description": "Project name."
},
"link_url": {
"type": "string",
"description": "Direct URL to view this project in Marcora."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Project identifier."
},
"project_brief": {
"type": [
"object",
"null"
],
"properties": {
"name": {
"type": "string"
},
"content_id": {
"type": "string",
"format": "uuid"
}
},
"description": "Present (non-null) only when project_brief_details was supplied. {name, content_id}. content_id is the canvas UUID — pass it to update_content / get_content to edit or read the brief. name may be empty immediately after creation while AI generation is in flight."
}
}
}update_project
Update mutable fields on an existing project (name, visibility, status, project brief).
Input Schema
{
"type": "object",
"required": [
"project_id"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "New project name. Must be non-empty when provided. Omit to leave unchanged."
},
"status": {
"enum": [
"active",
"archived"
],
"type": "string",
"description": "New project status. active for ongoing work; archived to hide from the active list while preserving content. Setting to active requires available active-project usage. Omit to leave unchanged."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the project to update. Get from list_projects or get_project."
},
"visibility": {
"enum": [
"team",
"private"
],
"type": "string",
"description": "New visibility setting. team makes it visible to all team members; private restricts to the creator and explicit project members. Omit to leave unchanged."
},
"project_brief_id": {
"type": "string",
"format": "uuid",
"description": "UUID of an existing content item to set as this project's brief. If the content isn't already attached to the project, this tool will attach it AND set it as the brief in one call."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"required": [
"success",
"message"
],
"properties": {
"message": {
"type": "string",
"description": "Human-readable status message."
},
"project": {
"type": [
"object",
"null"
],
"description": "The updated project record."
},
"success": {
"type": "boolean",
"description": "True if the update applied successfully."
}
}
}