create_plan
Creates a content plan (a planned piece of content: what to write and with which inputs) for the user's active team. It does not write the content: use produce_plan to generate a plan's content, or create_content to write something now. title is the only required field.
Before you create:
Dedupe: call
list_planswith aproject_idfilter before creating plans for a project. If a matching plan exists in Accepted or Suggested, offer to update it (update_plan) instead.Source: "cora_requested" (default) when the user explicitly asked; "cora_proactive" for an unprompted suggestion. Never use "workflow" or "playbook" from an interactive session.
What the server decides:
Starting stage is automatic from
source: cora_requested / playbook → Accepted (actionable now); user_added / cora_proactive / workflow → Suggested (needs the user to accept before it can be produced).Visibility: "private" (default; the creator's ideas queue, invisible to teammates) or "team". Passing
assigned_tofor anyone other than the caller auto-promotes the plan to "team", even over an explicit "private".assigned_tomust be the NUMERIC user id of a current team member; emails and names are rejected.source_metadatais immutable after creation.
Useful inputs: prompt (the actual content prompt used when the plan is produced), due_date (YYYY-MM-DD), blueprint_id (UUID from list_blueprints, or integer id), project_id, category_id, reference_document_ids, context_collection_ids, targeting_dimension_ids.
When creating several plans in one turn, set source_metadata.batch_id (a client-generated UUID) to correlate them, then link the user to the filtered plans view for that batch.
Present link_url exactly as returned.
Input roles:
title: required. The one-line summary of the content intent.
description: optional elaboration. Becomes a tooltip in the plans list.
due_date: ISO date YYYY-MM-DD.
prompt: the actual content prompt; pre-populates the content creation form when Generate is clicked.
blueprint_id: blueprint UUID (from list_blueprints) or integer blueprint id. UUIDs are resolved to the internal id server-side; an unknown UUID returns InputError naming list_blueprints.
project_id: project UUID to associate this plan with.
category_id: content category integer ID.
reference_document_ids: array of content UUID strings to associate as reference material.
context_collection_ids: array of integer collection IDs to pre-attach.
targeting_dimension_ids: array of integer dimension option IDs to pre-attach.
source: "cora_requested" | "cora_proactive" | "user_added" | "workflow" | "playbook".
source_metadata: object. Include {cora_session_id, cora_message_snippet} for cora_proactive / cora_requested. For workflow runs use {workflow_template_id, workflow_run_id, workflow_name, run_timestamp}.
assigned_to: optional NUMERIC user id. Defaults to the calling user.
visibility: "private" (default) | "team". Assignment is a communication act, hence the auto-promotion.
plan_uuid: optional client-supplied UUIDv4 for optimistic creates. The server validates format and uniqueness and rejects collisions with InputError; it generates one if omitted.
Note: create_plan echoes input reference docs without filtering. If you need the canonical filtered reference_documents array, call get_plan after create.
Errors:
InputError: title is required (omitted or empty).
InputError: source must be one of [user_added, cora_proactive, cora_requested, workflow, playbook].
InputError: plan_uuid already exists (a client-supplied UUID collides with an existing plan in this team).
InputError: invalid plan_uuid format (not a valid UUIDv4).
InputError: assigned_to is not a member of the team.
InputError: assigned_to must be the numeric user id of a team member (a non-numeric value was sent).
InputError: visibility must be one of [private, team].
AccessDenied: JWT does not resolve to a valid team context.
Links: copy link_url character for character. Never retype, shorten, or rebuild a link or the IDs inside it.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"title": "<title>"
},
"name": "create_plan"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Required. The one-line summary of the content intent (1-200 chars). | |
| prompt | No | The actual content prompt — pre-populates the content creation form when the plan is acted on. | |
| source | No | Plan source. Default cora_requested for Marcora interactive callers. The cora_* values are legacy wire names that predate the Marcora rename and are unchanged — send them exactly as written. Allowed: user_added, cora_proactive, cora_requested, workflow, playbook. Immutable after creation. | |
| due_date | No | Optional target completion date. ISO 8601 date string YYYY-MM-DD. | |
| plan_uuid | No | Optional client-supplied UUIDv4 for optimistic creates. Server validates format + uniqueness. Server generates if omitted. | |
| project_id | No | Project UUID string to associate with this plan. | |
| visibility | No | Optional. Defaults to "private" (creator-only ideas queue). "team" makes the plan visible to all active teammates. Assigning to someone other than the calling user auto-promotes to "team". | |
| assigned_to | No | Optional integer user ID to assign this plan to. Defaults to creator. Must be a current team member. | |
| category_id | No | Content category integer ID. | |
| description | No | Optional free-text description of what this plan is for. | |
| blueprint_id | No | Blueprint UUID (from list_blueprints) or integer blueprint id. UUIDs are resolved server-side; unknown UUIDs return InputError. | |
| source_metadata | No | Optional. Shape varies by source: {cora_session_id, cora_message_snippet} for cora_proactive; {workflow_template_id, workflow_run_id, workflow_name, run_timestamp} for workflow. Immutable after creation. | |
| context_collection_ids | No | Array of integer collection IDs to pre-attach. | |
| reference_document_ids | No | Array of content UUID strings to associate as reference material. | |
| targeting_dimension_ids | No | Array of integer dimension option IDs to pre-attach. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Internal integer PK; not exposed externally. | |
| stage | Yes | ||
| title | Yes | ||
| prompt | No | ||
| source | Yes | ||
| team_id | Yes | ||
| due_date | No | ||
| link_url | Yes | Shareable deep-link that opens the plans screen with this plan's detail overlay. Give this to the user. | |
| plan_uuid | Yes | UUIDv4 — the external-facing identifier. Use this for all subsequent calls. | |
| created_at | Yes | ||
| created_by | Yes | ||
| project_id | No | ||
| updated_at | Yes | ||
| visibility | No | private = creator-only; team = visible to all active teammates. | |
| assigned_to | Yes | ||
| category_id | No | ||
| description | No | ||
| blueprint_id | No | ||
| completed_at | No | ||
| dismissed_at | No | ||
| source_metadata | No | ||
| context_collections | No | ||
| produced_content_id | No | ||
| reference_documents | No | ||
| targeting_dimensions | No |