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.

Parameters

NameTypeRequiredDefaultDescription
playbook_idintegerYes—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.
namestringNo—Omit to keep the current name (it cannot be cleared — playbooks always have a name).
descriptionstring | nullNo—Omit to KEEP the current description; pass null to CLEAR it.
visibilitystringNo—Change the playbook's visibility. Creator-only — non-creators get InputError.
anchor_datestring | nullNo—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.
itemsarray of objectNo—Full replacement set of ordered items. Omit to keep existing items.

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": "URL to open this playbook in the Marcora web app — share it so the user can view what you created."
    },
    "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 anchor date, or null. Each item's offset_days counts from it; it's the default when instantiating."
    },
    "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"

Links: present link_url to the user exactly as returned — copy it character for character. Never retype, shorten, or rebuild a link or the IDs inside it.

Scroll to Top