MCP Tools
Plans & Playbooks

update_playbook

Edit a content playbook. Pass only the fields to change; if items is provided it fully replaces the playbook's items and order.

Input Schema

{
  "type": "object",
  "required": [
    "playbook_id"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Omit to keep the current name (it cannot be cleared — playbooks always have a name)."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Item name (title of the plan this item becomes). Alias: `title`."
          },
          "title": {
            "type": "string",
            "description": "Alias for `name`."
          },
          "prompt": {
            "type": "string",
            "description": "Generation prompt carried onto the plan created from this item."
          },
          "sort_order": {
            "type": "integer",
            "description": "Explicit order; defaults to array position."
          },
          "category_id": {
            "type": "integer",
            "description": "Content category for the plan (optional)."
          },
          "description": {
            "type": "string"
          },
          "offset_days": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Days relative to anchor_date at instantiation; sets the plan due_date. Negative = before the anchor. null or omitted = no due date (\"No date\"). Items are a full-replacement set on update, so pass null (or omit) here to CLEAR a previously scheduled item."
          },
          "blueprint_id": {
            "type": "integer",
            "description": "Blueprint to attach to the plan (optional)."
          }
        }
      },
      "description": "Full replacement set of ordered items. Omit to keep existing items."
    },
    "visibility": {
      "enum": [
        "private",
        "team"
      ],
      "type": "string",
      "description": "Change the playbook's visibility. Creator-only — non-creators get InputError."
    },
    "anchor_date": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional YYYY-MM-DD anchor date the playbook is built around. Omit to KEEP the current value; pass null to CLEAR it. Each item's offset_days counts from it, and it's the default anchor when instantiating."
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "Omit to KEEP the current description; pass null to CLEAR it."
    },
    "playbook_id": {
      "type": "integer",
      "description": "Numeric id of the playbook to edit — the `id` from list_playbooks or get_playbook, or the trailing number in its link_url, not a UUID. It only selects which playbook to change and is never itself modified. Unknown ids, playbooks in another team, and teammates' private playbooks all return NotFound."
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "title": {
            "type": "string",
            "description": "Mirror of name."
          },
          "prompt": {
            "type": [
              "string",
              "null"
            ]
          },
          "team_id": {
            "type": "integer"
          },
          "created_at": {
            "type": "integer",
            "description": "Unix ms timestamp."
          },
          "sort_order": {
            "type": "integer"
          },
          "updated_at": {
            "type": "integer",
            "description": "Unix ms timestamp."
          },
          "category_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "offset_days": {
            "type": [
              "integer",
              "null"
            ]
          },
          "playbook_id": {
            "type": "integer"
          },
          "blueprint_id": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      }
    },
    "team_id": {
      "type": "integer"
    },
    "link_url": {
      "type": "string",
      "description": "Opens the playbook in the Marcora web app."
    },
    "created_at": {
      "type": "integer",
      "description": "Unix ms timestamp."
    },
    "created_by": {
      "type": "integer"
    },
    "updated_at": {
      "type": "integer",
      "description": "Unix ms timestamp."
    },
    "visibility": {
      "enum": [
        "private",
        "team"
      ],
      "type": "string",
      "description": "private = creator-only; team = visible to all active teammates."
    },
    "anchor_date": {
      "type": [
        "string",
        "null"
      ],
      "description": "Persisted YYYY-MM-DD reference date, or null."
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "description": "The updated playbook object, including its anchor_date (YYYY-MM-DD or null) and link_url."
}

Instructions

Edit a content playbook. Any playbook is fully editable. Pass only the fields to change: name and/or description patch in place. If items is provided it fully replaces the playbook's items and their order; omit items to leave them untouched. Changing visibility is creator-only.

Parameters:

Parameter Type Required Description
playbook_id integer Yes ID of the playbook to update
name string No New name
description string No New description (pass null to clear)
visibility string No team or private (creator-only)
anchor_date string No Set the playbook's YYYY-MM-DD reference date. Omit to keep the current value; pass null to clear it
items array No If provided, REPLACES the full ordered item list

Output: the updated playbook object, including its anchor_date (or null) and link_url.

Example prompts:

  • "Add a follow-up email to my launch playbook"
  • "Reorder these steps"
Scroll to Top