Skip to main content
Glama

create_post

Create a post. Creates a draft, or a scheduled post when scheduled_at is set (ISO-8601 with offset; a bare local time is read in the account timezone). Upload media afterwards with POST /posts/{id}/media, then publish or schedule. Rules: TikTok-only posts cannot be a carousel or story and carry no first comment or comment auto-reply; scheduling needs a caption (stories excepted) and a future time; the plan's monthly cap counts scheduled and published posts, a plain draft never holds a slot; a comment auto-reply on a scheduled post needs a free live comment-trigger slot (403 plan_limit_reached). tiktok.privacy_level must be one of the creator's options from GET /posts/capabilities.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "create_post"
  }
}

Input Schema

NameRequiredDescriptionDefault
tiktokNoTikTok settings. Ignored unless TikTok is a target.
captionNo
hashtagsNoWithout the #.
platformNoA target set. both = Instagram + Facebook; all = all three.instagram
post_typeNofeed_post
scheduled_atNoISO-8601. Null on PATCH turns a scheduled post back into a draft.
collaboratorsNoInstagram usernames to invite as collaborators. Instagram only.
first_commentNoPosted under the post right after publish. Instagram and Facebook only.
cover_offset_msNoReels: which frame is the cover.
comment_auto_replyNoBecomes a comment trigger scoped to this post when it publishes, one per Instagram/Facebook target, with the comment trigger rules. Past the live-trigger cap it is saved paused (see comment_triggers). Instagram and Facebook only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only cover the generic mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds substantially more: draft-vs-scheduled quota accounting, the fact that a draft never holds a slot, that a scheduled auto-reply needs a free live comment-trigger slot, and the concrete 403 plan_limit_reached failure mode. It also states where tiktok.privacy_level values must come from (GET /posts/capabilities).

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?

It is front-loaded correctly: purpose first, then the create-then-upload-then-publish workflow, then a compact rules clause. The rules sentence is dense and packs several unrelated constraints (TikTok type limits, caption requirement, quota counting, 403 code, privacy enumeration) into one paragraph, which costs some scannability but each clause carries real information.

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?

For a 10-parameter mutation with a deeply nested comment_auto_reply object and no output schema, the description covers the failure modes an agent most needs to avoid before calling. It does not state whether required fields are enforced (0 required parameters is unusual for a create call) or what the response contains beyond the implied post id in the media URL.

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 already 80%, so the baseline is 3; the description earns above that by adding meaning the schema does not carry, notably that scheduled_at accepts ISO-8601 with offset and that a bare local time is interpreted in the account timezone. It also adds cross-parameter semantics absent from the schema, e.g. that scheduling requires a caption except for stories.

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

Purpose4/5

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

The description opens with a specific verb+resource ('Create a post') and immediately clarifies the two resulting states: a draft by default, or a scheduled post when scheduled_at is set. That distinguishes the tool from publish_post/schedule_post in spirit, but it never names those siblings explicitly, so an agent must infer the boundary rather than read it.

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?

Strong sequencing guidance is given: upload media afterwards via POST /posts/{id}/media, then publish or schedule. Conditional rules (TikTok-only restrictions, scheduling requires a caption and a future time, plan caps) tell the agent when the call will succeed or fail. What is missing is explicit routing against create_post's closest siblings such as schedule_post, publish_post, and update_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.

Resources