Skip to main content
Glama

Publish creative

submit_publication

Post one of the brand's creatives to a connected channel, publicly. Without scheduledAt it goes out immediately; with a future ISO 8601 timestamp carrying its offset, such as 2026-09-25T14:00:00+03:00 or 2026-09-25T11:00:00Z, it is scheduled. Confirm the channel, caption and time with the user before calling. Publishing costs no credits. Give each new post a new requestId, and repeat it unchanged only on a retry: a retry within 2 minutes returns the first post with its current status and deduplicated: true, and a requestId reused with different arguments is refused. Without a requestId, the same arguments within 2 minutes count as a retry. Needs an admin to allow publishing over MCP (see get_workspace). Pass connectionId from list_integrations (where publishWith submit_publication marks the accounts this takes), or just the platform when the brand has a single account there. The format is the channel's first that takes the creative (an image becomes a feed post, a clip a reel); pass format only to override it. Every format but a story needs a caption, and a story takes none. The picture is published as it is: if its shape does not fit the format the call fails and says so, and resize_creative can make a version that fits. Not for TikTok, where only the person posting may choose the post's settings and declarations: call prepare_tiktok_post, which opens a panel where the user does that and posts.

Input Schema

NameRequiredDescriptionDefault
formatNoOverride the format picked from the channel and the creative.
brandIdNoA brand id from get_workspace or list_brands, or the brand's name. Omit it when the organization has a single brand.
captionNoThe post's caption, required for every format but a story. write_caption can draft one in the brand's voice.
platformNoInstead of connectionId, when the brand has exactly one account on that platform.
requestIdNoYour own unique id for this request. Use a new one for every new request, even with the same arguments. Repeat it unchanged only to retry this exact call within 2 minutes; the retry returns the first result.
creativeIdYesA creative id from list_creatives, search_library, get_job or get_upload.
scheduledAtNoWhen to publish, as an ISO 8601 timestamp with its offset, in the future. Omit to publish now.
connectionIdNoThe connected account to post to, from list_integrations.

Output Schema

NameRequiredDescriptionDefault
formatYes
statusYes
captionYes
mediaUrlNo
platformYes
creativeIdYes
accountNameYes
scheduledAtNo
deduplicatedNo
accountHandleNo
publicationIdYes
publishingNowYes
creditsChargedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / brandId / description
      Previous value: -"A brand id from get_workspace or list_brands. Omit it when the organization has a single brand."New value: +"A brand id from get_workspace or list_brands, or the brand's name. Omit it when the organization has a single brand."
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say this is a non-read-only, open-world, non-idempotent write; the description adds substantial context beyond that: no credit cost, an admin must enable MCP publishing, a 2-minute dedupe window keyed on requestId, refusal when a requestId is reused with different arguments, and a hard failure when the creative's aspect ratio does not fit the format with resize_creative as the remedy. These are exactly the operational traits an agent cannot get from the annotations.

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?

The core action and the immediate-vs-scheduled rule are front-loaded, and essentially every sentence carries non-redundant information. It is dense, however, with several independent rules packed into long sentences, so an agent must parse carefully rather than skim a short list.

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?

For an 8-parameter, open-world write with real side effects, the description covers preconditions (admin allowance), input sourcing, scheduling semantics, retry/idempotency behavior, format selection, caption rules and a concrete failure mode. An output schema exists, so the absence of return-value explanation is not a gap.

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 the baseline would be 3, but the description adds genuine meaning: scheduledAt must be a future ISO 8601 timestamp carrying its offset (with worked examples), format is normally inferred from channel + creative and should only be passed to override, and caption is mandatory for every format except a story. It does not restate requestId's schema text in more depth than the schema already does, which keeps it below a 5.

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 ('Post one of the brand's creatives to a connected channel, publicly') and immediately separates immediate vs scheduled publishing. It explicitly carves out TikTok to prepare_tiktok_post, so an agent can distinguish it from submit_tiktok_post, cancel_publication and list_publications without opening a 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 when-not guidance ('Not for TikTok... call prepare_tiktok_post'), a user-confirmation requirement before calling, and the decision rule between connectionId and platform. It also names the upstream tools that supply each argument (list_integrations, get_workspace, list_creatives), leaving little to inference.

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