Skip to main content
Glama

Post to social channels

social_post

Post now, or at when (ISO 8601 with its offset, up to a year ahead), to one or several channels. text is the post; thread adds follow-up posts; media are file_ids from the store, uploaded to Postiz by Conecto. per_channel gives one channel its own text, media, thread or settings: some networks need settings (Discord and Slack a channel id, Medium, Dev.to, Hashnode and WordPress a title, Instagram a post_type; social_channel_rules says). Postiz checks every channel first and takes all or none. TikTok (one MP4 video, or pictures; settings.title is a photo post's title) requires its owner to confirm each post: a TikTok channel comes back under waiting_for_owner. Ask them in your chat (social_post_check gives what to show and ask) and pass their answer to social_confirm_post, or give them its confirm_url to do it on a page. Then social.post_confirmed and social.post_published follow, or social.post_declined when they say no or 3 days pass (a day past when, if later); it is refunded. With settings {"content_posting_method": "UPLOAD"} it goes at once as a draft to their TikTok inbox instead, to finish in TikTok's app within 24 hours. $0.02 per channel, refunded when a post fails or is deleted before it goes out; social.post_published and social.post_failed tell you how each went. Costs $0.02 per channel posted to; nothing if none are found.

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": {
      "channels": "<channels>"
    },
    "name": "social_post"
  }
}

Input Schema

NameRequiredDescriptionDefault
textNo
whenNoe.g. 2026-10-20T09:00:00-07:00; left out: now.
mediaNofile_ids from the store: images (JPEG, PNG, GIF, WebP, AVIF; up to 10 MB) or MP4 videos.
threadNoFollow-up posts after the first: a thread on X, Bluesky, Mastodon and Threads, comments on the others.
channelsYes
per_channelNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (which only say non-readonly, non-destructive, non-idempotent), the description discloses cost ($0.02/channel), refund conditions, the all-or-none channel validation, the TikTok owner-confirmation flow with waiting_for_owner and the 3-day/one-day-past-when timeout, the UPLOAD draft alternative with a 24-hour window, and the resulting social.post_confirmed/post_published/post_declined/post_failed events. This is exactly the behavioral context annotations cannot carry.

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?

Content is dense but front-loaded (post now/scheduled, channels, text/thread/media, per_channel), and most sentences earn their place. The one flaw is the duplicated pricing line ('$0.02 per channel, refunded when...' and later 'Costs $0.02 per channel posted to; nothing if none are found'), which could be consolidated.

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 6-parameter mutation tool with a nested per_channel object and no output schema, the description covers scheduling, per-network settings, validation semantics, confirmation flow, cost/refund, and the event names that serve as return signals. Nothing an agent needs to invoke it correctly appears missing.

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

Parameters5/5

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

Schema coverage is only 50% and per_channel is a nested object, so the description must compensate — and it does: it explains that text is the post, thread is follow-up posts (threads vs comments per network), media are file_ids uploaded via Postiz, when is ISO 8601 with offset up to a year ahead, and per_channel overrides text/media/thread/settings with network-specific requirements (Discord/Slack channel id, Medium/Dev.to/Hashnode/WordPress title, Instagram post_type).

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?

The description states a specific verb (post) and resource (social channels), covers scheduled vs immediate posting, and names the related sibling tools social_post_check, social_confirm_post and social_channel_rules. An agent can immediately tell this is the publishing tool rather than social_posts (listing) or social_channel_rules (schema lookup).

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?

It explicitly routes the agent through alternatives for the TikTok flow ('social_post_check gives what to show and ask', 'pass their answer to social_confirm_post') and points to social_channel_rules for per-network settings. What is missing is an explicit when-not clause (e.g. use social_posts to review, social_delete_post to remove), but the context for calling it is clear.

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