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
Content
ask_content_assistant
Drive Marcora's in-document Content Assistant on an existing canvas or deliverable — edit, extend, or just reply, with the response streaming live into the doc's sidebar.
Input Schema
{
"type": "object",
"required": [
"content_id",
"prompt"
],
"properties": {
"prompt": {
"type": "string",
"description": "The request, in natural language."
},
"content_id": {
"type": "string",
"format": "uuid",
"description": "The canvas or deliverable to act on (from list_content, get_content, or get_project). Canvas vs. deliverable is detected automatically."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Project UUID (from list_projects) whose context to include."
},
"ai_provider": {
"type": "string",
"description": "Model family: anthropic (default) or openai."
},
"selected_text": {
"type": "string",
"description": "Text the user has highlighted in the document, to focus the request on."
},
"thinking_mode": {
"type": "boolean",
"description": "Enable extended reasoning for harder requests."
},
"chat_only_mode": {
"type": "boolean",
"description": "Force a reply-only response with no document edit."
},
"collection_ids": {
"type": "array",
"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."
}
}
}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
Poll the status of an async generation by generation_id. Two tools produce a generation_id you can check here: create_content (with blueprint_uuid) or ask_content_assistant.
Input Schema
{
"type": "object",
"required": [
"generation_id"
],
"properties": {
"generation_id": {
"type": "string",
"format": "uuid",
"description": "The generation ID returned by create_content (with blueprint_uuid) or ask_content_assistant."
}
}
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "Status of this run. Blueprint flow terminates at completed; Content Assistant flow terminates at complete; failed on error. Intermediate: pending, processing, streaming."
},
"content": {
"type": [
"object",
"null"
],
"description": "null until the run completes. Shape depends on flow_type."
},
"flow_type": {
"type": "string",
"description": "ai_assistant for ask_content_assistant runs, otherwise a blueprint/content generation."
},
"generation_id": {
"type": "string",
"format": "uuid",
"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": "object",
"required": [
"content"
],
"properties": {
"content": {
"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."
}
}
}Account
get_current_user_info
Returns profile and subscription information for the currently authenticated user, including active team, role, subscription plan, and AI-credit usage.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"required": [
"name",
"email",
"active_team_name",
"active_team_role",
"plan_name",
"plan_slug",
"subscription_status",
"ai_credits_available",
"ai_credits_max"
],
"properties": {
"name": {
"type": "string",
"description": "User's display name."
},
"email": {
"type": "string",
"description": "User's email address."
},
"plan_name": {
"type": "string",
"description": "Subscription plan display name."
},
"plan_slug": {
"type": "string",
"description": "Subscription plan identifier."
},
"ai_credits_max": {
"type": "integer",
"description": "AI credit limit for this billing period."
},
"active_team_name": {
"type": "string",
"description": "Name of the user's active team."
},
"active_team_role": {
"type": "string",
"description": "User's role on the active team."
},
"subscription_status": {
"type": "string",
"description": "Current subscription status."
},
"ai_credits_available": {
"type": "integer",
"description": "AI credits remaining this billing period (limit minus used)."
}
}
}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": "object",
"required": [
"collections"
],
"properties": {
"collections": {
"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 prompt, with per-source citation metadata and optional Brand Foundation.
Input Schema
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"prompt": {
"type": "string",
"description": "Search prompt describing the topic/question. Be specific."
},
"project_id": {
"type": "string",
"format": "uuid",
"description": "Additive — ALSO searches that project's context alongside the general library. Not an exclusive filter."
},
"collection_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Additive — ALSO searches those collections alongside the general library. Not an exclusive filter."
},
"context_rag_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"description": "Previously-returned chunk IDs to exclude (pagination — pass back the context_rag_ids from a prior call)."
},
"dimension_option_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Targeting dimension OPTION IDs (from list_targeting_dimensions) — biases relevancy toward an audience/persona/industry."
},
"include_brand_foundation": {
"type": "boolean",
"description": "Set true to also receive the team's Brand Foundation in the same response. Default false."
}
}
}Output Schema
{
"type": "object",
"properties": {
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"link_url": {
"type": [
"string",
"null"
],
"description": "Deep-link that opens this item in the Marcora web app. Present for every source."
},
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "The project the item belongs to, if any."
},
"source_url": {
"type": "string",
"description": "The original external page URL. Present only for webpage items; omitted for all other types."
},
"content_type": {
"type": [
"string",
"null"
],
"description": "One of: file, manual, webpage, canvas, deliverable, integration_data, call_transcript."
},
"last_updated": {
"type": [
"integer",
"null"
],
"description": "Unix-ms timestamp of the item's last update (null if never updated)."
},
"collection_id": {
"type": [
"integer",
"null"
],
"description": "The collection the item belongs to, if any."
},
"context_item_id": {
"type": "string",
"format": "uuid",
"description": "The parent context item's ID."
},
"context_rag_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"description": "The chunk IDs in THIS response that came from this item. Union across all sources equals the top-level context_rag_ids."
},
"context_item_name": {
"type": [
"string",
"null"
],
"description": "The item's name."
}
}
},
"description": "One entry per parent context item the returned chunks came from."
},
"retrieval": {
"type": "object",
"properties": {
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Echo of the project_id input."
},
"team_scope": {
"type": "string",
"description": "Always authenticated_user_active_team."
},
"collection_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Echo of the collection_ids input."
},
"returned_count": {
"type": "integer",
"description": "Number of context chunks returned."
},
"dimension_option_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Echo of the dimension_option_ids input."
},
"excluded_context_rag_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"description": "Echo of the context_rag_ids input (the exclusions)."
}
},
"description": "Echo of the search scope this response was produced under."
},
"context_rag_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"description": "All chunk IDs returned. Pass back in context_rag_ids to exclude on the next page (pagination)."
},
"brand_foundation": {
"type": "object",
"properties": {
"elements": {
"type": [
"object",
"null"
],
"properties": {
"brand_voice": {
"type": "string"
},
"writing_style": {
"type": "string"
},
"company_overview": {
"type": "string"
},
"writing_examples": {
"type": "string"
}
},
"description": "Null unless included. When present: company_overview, brand_voice, writing_style, writing_examples (all strings)."
},
"included": {
"type": "boolean",
"description": "True only when include_brand_foundation: true was passed."
},
"link_url": {
"type": "string",
"description": "Deep-link to the Brand Foundation tab in the Marcora web app. Present only when included."
}
},
"description": "Always present. included=true only when include_brand_foundation was passed; elements is null otherwise."
},
"relevant_context": {
"type": "string",
"description": "Ready-to-use markdown context packet assembled from the matched chunks."
}
}
}Blueprints
list_blueprints
Get all blueprints in your team's library as a flat list, each with its content category and a direct web URL.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"required": [
"blueprints"
],
"properties": {
"blueprints": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Blueprint name."
},
"web_url": {
"type": "string",
"description": "Direct URL to view this blueprint in Marcora."
},
"category": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
},
"description": "Content category this blueprint belongs to: { id, name }. id matches list_content_categories."
},
"created_at": {
"type": "integer",
"description": "Unix timestamp (ms) of creation."
},
"content_count": {
"type": "integer",
"description": "Number of content items generated from this blueprint."
},
"blueprint_uuid": {
"type": "string",
"format": "uuid",
"description": "Unique identifier — pass as blueprint_uuid to create_content."
},
"team_visibility": {
"type": "string",
"description": "Visibility within your team (e.g. team, private)."
},
"input_instructions": {
"type": "string",
"description": "Guidance on what context to provide when generating from this blueprint."
},
"exchange_visibility": {
"type": "string",
"description": "Community exchange visibility (e.g. public, none)."
}
}
}
}
}
}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 — pass as draft_uuid to finalize_blueprint_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": "object",
"required": [
"community_blueprints"
],
"properties": {
"community_blueprints": {
"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": "object",
"required": [
"categories"
],
"properties": {
"categories": {
"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": "object",
"required": [
"dimensions"
],
"properties": {
"dimensions": {
"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)"
}
}
}
}
}
}
}
}
}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": "object",
"required": [
"projects"
],
"properties": {
"projects": {
"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."
}
}
}