Skip to main content
Glama

Publish post

publish_post
DestructiveIdempotent

Publishes an already-approved post immediately through a connected channel — the on-demand equivalent of schedule_post. Also publishes a scheduled post right away — e.g. one that missed its slot or is waiting on a reconnect. Refuses a post that isn't approved or scheduled; call approve_post first. Call list_connections first for the connectionId. For a YouTube post, you must have shown the owner this line before calling, because the call is their certification: "By publishing to YouTube you confirm this video follows YouTube's Community Guidelines."

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
postIdYesMust already be status=approved — publish_post never approves a post itself.
brandIdYesThe brand's id, from list_brands.
campaignIdYesAn existing campaign's id, from list_campaigns or generate_campaign.
connectionIdYesThe connected channel account to publish through — from list_connections, matching the post's channel.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, but the description adds real behavior the annotations cannot convey: the refusal semantics for non-approved posts, the required call ordering, and the legal certification obligation for YouTube that must be shown to the owner beforehand. It does not address the destructive or idempotent traits, so a 4 rather than a 5.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause and every sentence is functional, including the prerequisite routing. The YouTube paragraph is long, but the quoted certification line is required verbatim, so the length is justified rather than padding.

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

Completeness4/5

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

With no output schema, the description still covers preconditions, refusal behavior, cross-tool dependencies, and the YouTube compliance gate, which is enough for correct invocation. It leaves the success response shape unstated, though that is a minor gap for a publish action.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already states that postId must be status=approved and that connectionId comes from list_connections. The description echoes these sourcing rules but adds no new format or constraint detail, so the baseline 3 applies.

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?

States a specific verb and resource (publishes an approved post through a connected channel) and explicitly distinguishes itself from schedule_post as the on-demand equivalent. It also carves out the second valid input state (a scheduled post being pushed early), so an agent can route correctly without reading the schema.

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

Usage Guidelines5/5

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

Gives explicit preconditions and exclusions: refuses posts that aren't approved or scheduled, directs the agent to approve_post first, and points to list_connections for the connectionId. It also names the case (missed slot, waiting on reconnect) where this beats waiting for schedule_post.

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.