Skip to main content
Glama

Schedule a post

schedule_post

Create a post for one or more connected accounts and schedule it, or save it as a draft. Instagram, TikTok, YouTube and Pinterest REQUIRE media; X, LinkedIn, Facebook, Threads, Bluesky and Google Business accept text alone. Media is passed as a public https link that the platform fetches when the post publishes — so it must still work then, not just now. The caption is checked against each platform's limit and refused if too long, never cut short. Posting to TikTok also needs tiktokPrivacy, chosen by the person — ask them; TikTok does not allow a default. Use check_draft first to test the caption against the account's hook rules. Afterwards, get_post confirms what was saved, update_post changes it and cancel_post removes it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
captionNoThe caption as it should appear. Optional when media is supplied. Limits: X 280, Bluesky 300, Threads 500, Pinterest 500, Google Business 1,500, Instagram 2,200, TikTok 2,200, LinkedIn 3,000, YouTube 5,000, Facebook 63,206.
mediaUrlsNoPublic https links to the images or video to attach. Required for Instagram, TikTok, YouTube and Pinterest. Kind comes from the file extension; append #video or #image to a link without one. A file attached to the chat is not a link and cannot be used.
accountIdsYesOne or more account ids from list_connections, e.g. ["3f2a9c..."]. The post goes to every account listed.
tiktokPrivacyNoRequired when any target is TikTok: who can see the post — public, friends, or private (only the account owner). Ask the person; TikTok requires them to choose and allows no default. Only public posts can be measured, so performance and hook tests need public.
scheduledAtUtcNoWhen to publish, as an ISO-8601 UTC timestamp such as 2026-10-20T17:00:00Z — convert from the person's time zone first. Must be in the future. Omit to save a draft for the person to review.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / accountIds / description
      Previous value: -"Account ids from list_connections to publish to."New value: +"One or more account ids from list_connections, e.g. [\"3f2a9c...\"]. The post goes to every account listed."
    • changedInput schema / properties / caption / description
      Previous value: -"The caption text. Optional when media is supplied."New value: +"The caption as it should appear. Optional when media is supplied. Limits: X 280, Bluesky 300, Threads 500, Pinterest 500, Google Business 1,500, Instagram 2,200, TikTok 2,200, LinkedIn 3,000, YouTube 5,000, Facebook 63,206."
    • changedInput schema / properties / mediaUrls / description
      Previous value: -"Public https URLs of images or video to attach. Required for Instagram, TikTok, YouTube and Pinterest. Kind is inferred from the file extension; append #video or #image to a URL that has none."New value: +"Public https links to the images or video to attach. Required for Instagram, TikTok, YouTube and Pinterest. Kind comes from the file extension; append #video or #image to a link without one. A file attached to the chat is not a link and cannot be used."
    • changedInput schema / properties / scheduledAtUtc / description
      Previous value: -"When to publish, as an ISO-8601 UTC timestamp. Omit to save as a draft."New value: +"When to publish, as an ISO-8601 UTC timestamp such as 2026-10-20T17:00:00Z — convert from the person's time zone first. Must be in the future. Omit to save a draft for the person to review."
  2. Changed1 schema field changed
    • addedInput schema / properties / tiktokPrivacy
      Added value: +{
      +  "default": null,
      +  "description": "Required when any target is TikTok: who can see the post — public, friends, or private (only the account owner). Ask the person; TikTok requires them to choose and allows no default. Only public posts can be measured, so performance and hook tests need public.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare this is a non-read-only, non-idempotent, open-world write, but the description adds substantial context beyond that: which platforms require media, that media is fetched by the platform at publish time and must remain live, that captions are refused rather than truncated, and that TikTok privacy has no default. These are real operational constraints an agent must know before calling.

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 mode are front-loaded, and nearly every sentence carries platform-specific information rather than filler. It is dense and runs long, with some overlap against the schema descriptions, but no sentence is purely redundant boilerplate.

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 a five-parameter write tool with no output schema, the description covers the full lifecycle: prerequisite validation via check_draft, platform constraints, the draft-vs-schedule switch, and the follow-up tools for confirming, editing, or removing the result.

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 is 3, but the description adds cross-parameter meaning: media is required for specific platforms, caption is optional when media is supplied, and omitting scheduledAtUtc turns the call into a draft. It largely mirrors the schema's per-field text, so it does not exceed a 4.

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 ('Create a post for one or more connected accounts') plus the two modes it supports: schedule or save as draft. This clearly distinguishes it from the sibling mutation tools update_post and cancel_post, which act on existing posts.

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?

Explicitly routes the agent: use check_draft first to test captions against hook rules, and afterwards use get_post, update_post, or cancel_post. It also states the conditional requirement that TikTok targets need tiktokPrivacy chosen by the user, with no default allowed.

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.