Skip to main content
Glama

Delete Post

delete_post
Destructive

Permanently deletes a post: a draft, one in review, one approved or scheduled, or a published one. An unpublished post's Zernio post is canceled and deleted first (for a website post, its pending CMS publish is withdrawn); if that fails, nothing changes. Its review history, comments and performance logs are deleted with it; tracking links stay and keep their clicks. External posts cannot be deleted. A website post's preview draft in its CMS is deleted first when Mark may; otherwise cmsPreview says it is still in the CMS, where, and why, so you can delete it there. Published posts are admins only; anyone else is refused. By default a published post is removed from Mark only and stays live (takenDown left_live with its liveUrl). With takeDown: true, Mark first deletes it from LinkedIn, X, Facebook, YouTube or Pinterest, or unpublishes a website page in its CMS and then deletes the page when Mark's key may (otherwise takenDown left_in_cms says where the draft stays). Instagram and TikTok posts can't be taken down by apps: takeDown is refused for them, so remove them in the app and delete with takeDown false. A failed take-down changes nothing: the post stays in Mark, still published, and the error names the platform and the fix. This cannot be undone. Related: archive_post, search_posts, save_post.

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": {
      "postId": "<postId>"
    },
    "name": "delete_post"
  }
}

Input Schema

NameRequiredDescriptionDefault
postIdYesThe post to delete. Published posts need a workspace admin.
takeDownNoPublished posts only: also take it down from the platform or CMS first. Default false (remove from Mark only; it stays live). Refused for Instagram and TikTok.

Output Schema

NameRequiredDescriptionDefault
postIdYes
statusYes
outcomeYes
takenDownNoA published post only: taken_down (deleted from the platform, or its CMS page deleted), left_in_cms (unpublished, but the page stays in the CMS as a draft at previewUrl, for the same reasons as cmsPreview), or left_live (removed from Mark only; still live at liveUrl).
cmsPreviewNoThe post's preview draft in the website CMS: removed (Mark deleted it), or left_in_cms with its previewUrl and why (cannot_delete: Mark's API key may not delete it; edited: changed in the CMS; linked: a page that was in the CMS before Mark used it; live: a live page; translated: its translations are in the same page; unreachable: the CMS did not answer). Absent when the post had no preview.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedOutput schema / properties / cmsPreview / description
      Previous value: -"The post's preview draft in the website CMS: removed (Mark deleted it), or left_in_cms with its previewUrl and why (cannot_delete: Mark's API key may not delete it; edited: changed in the CMS; linked: a page that was in the CMS before Mark used it; live: a live page; unreachable: the CMS did not answer). Absent when the post had no preview."New value: +"The post's preview draft in the website CMS: removed (Mark deleted it), or left_in_cms with its previewUrl and why (cannot_delete: Mark's API key may not delete it; edited: changed in the CMS; linked: a page that was in the CMS before Mark used it; live: a live page; translated: its translations are in the same page; unreachable: the CMS did not answer). Absent when the post had no preview."
    • changedOutput schema / properties / cmsPreview / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "outcome": {
      -        "const": "removed",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "outcome"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "outcome": {
      -        "const": "left_in_cms",
      -        "type": "string"
      -      },
      -      "previewUrl": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "reason": {
      -        "enum": [
      -          "cannot_delete",
      -          "edited",
      -          "linked",
      -          "live",
      -          "unreachable"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "outcome",
      -      "previewUrl",
      -      "reason"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "outcome": {
      +        "const": "removed",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "outcome"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "outcome": {
      +        "const": "left_in_cms",
      +        "type": "string"
      +      },
      +      "previewUrl": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "reason": {
      +        "enum": [
      +          "cannot_delete",
      +          "edited",
      +          "linked",
      +          "live",
      +          "translated",
      +          "unreachable"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "outcome",
      +      "previewUrl",
      +      "reason"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / properties / takenDown / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "outcome": {
      -        "const": "taken_down",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "outcome"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "outcome": {
      -        "const": "left_in_cms",
      -        "type": "string"
      -      },
      -      "previewUrl": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "reason": {
      -        "enum": [
      -          "cannot_delete",
      -          "edited",
      -          "linked",
      -          "live",
      -          "unreachable"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "outcome",
      -      "previewUrl",
      -      "reason"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "liveUrl": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "outcome": {
      -        "const": "left_live",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "liveUrl",
      -      "outcome"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "outcome": {
      +        "const": "taken_down",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "outcome"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "outcome": {
      +        "const": "left_in_cms",
      +        "type": "string"
      +      },
      +      "previewUrl": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "reason": {
      +        "enum": [
      +          "cannot_delete",
      +          "edited",
      +          "linked",
      +          "live",
      +          "translated",
      +          "unreachable"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "outcome",
      +      "previewUrl",
      +      "reason"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "liveUrl": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "outcome": {
      +        "const": "left_live",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "liveUrl",
      +      "outcome"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed3 schema fields changed
    • changedInput schema / properties / postId / description
      Previous value: -"The post to delete. Published posts cannot be deleted."New value: +"The post to delete. Published posts need a workspace admin."
    • addedInput schema / properties / takeDown
      Added value: +{
      +  "description": "Published posts only: also take it down from the platform or CMS first. Default false (remove from Mark only; it stays live). Refused for Instagram and TikTok.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / takenDown
      Added value: +{
      +  "description": "A published post only: taken_down (deleted from the platform, or its CMS page deleted), left_in_cms (unpublished, but the page stays in the CMS as a draft at previewUrl, for the same reasons as cmsPreview), or left_live (removed from Mark only; still live at liveUrl).",
      +  "oneOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "outcome": {
      +          "const": "taken_down",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "outcome"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "outcome": {
      +          "const": "left_in_cms",
      +          "type": "string"
      +        },
      +        "previewUrl": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "reason": {
      +          "enum": [
      +            "cannot_delete",
      +            "edited",
      +            "linked",
      +            "live",
      +            "unreachable"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "outcome",
      +        "previewUrl",
      +        "reason"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "liveUrl": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "outcome": {
      +          "const": "left_live",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "liveUrl",
      +        "outcome"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / cmsPreview
      Added value: +{
      +  "description": "The post's preview draft in the website CMS: removed (Mark deleted it), or left_in_cms with its previewUrl and why (cannot_delete: Mark's API key may not delete it; edited: changed in the CMS; linked: a page that was in the CMS before Mark used it; live: a live page; unreachable: the CMS did not answer). Absent when the post had no preview.",
      +  "oneOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "outcome": {
      +          "const": "removed",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "outcome"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "outcome": {
      +          "const": "left_in_cms",
      +          "type": "string"
      +        },
      +        "previewUrl": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "reason": {
      +          "enum": [
      +            "cannot_delete",
      +            "edited",
      +            "linked",
      +            "live",
      +            "unreachable"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "outcome",
      +        "previewUrl",
      +        "reason"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / postId / description
      Previous value: -"The draft to delete. Only unsent drafts can be deleted."New value: +"The post to delete. Published posts cannot be deleted."
  5. First observed

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far exceeds what destructiveHint=true conveys: it lists collateral deletions (review history, comments, performance logs), what survives (tracking links keep clicks), the ordered side effects (Zernio post canceled, CMS publish withdrawn), atomicity guarantees ('if that fails, nothing changes'), admin-only restriction, and per-platform take-down failures with error content. Consistent with the destructive/non-idempotent annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, which is good, but the body is a dense multi-topic paragraph chaining CMS preview handling, permissions, take-down semantics, platform exclusions and failure modes without signposting. Nearly every clause carries information, yet the CMS-preview and left_in_cms discussion is convoluted enough to slow an agent parsing it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be explained, yet the description still clarifies the meaningful response fields (cmsPreview, takenDown left_live/left_in_cms) in context. For a destructive, permission-gated tool with cross-system side effects, nothing material an agent needs before calling is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond it: takeDown's platform-by-platform outcome (left_live, left_in_cms), its refusal for Instagram and TikTok, and the fact that a failed take-down leaves the post published and in Mark. That is more than the schema's one-line takeDown note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb plus resource ('Permanently deletes a post') and immediately enumerates the accepted states (draft, in review, approved/scheduled, published), so the agent knows exactly what scope is covered. It also names the boundaries that separate it from siblings: external posts cannot be deleted, and Instagram/TikTok cannot be taken down.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete routing conditions: use takeDown:false and remove IG/TikTok posts in-app, and for published posts without takeDown the post stays live. The closing 'Related: archive_post, search_posts, save_post' points at alternatives, though it doesn't state the selecting condition (e.g. use archive_post to remove without destruction), so differentiation is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources