Skip to main content
Glama

Create draft post

create-post

Save text as a new draft in Postel, optionally with images or videos downloaded from public URLs and a LinkedIn first comment (up to 1250 characters). Does not publish or schedule. Each call creates a separate draft. Drafts are free on every plan.

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": {
      "content": "<content>"
    },
    "name": "create-post"
  }
}

Input Schema

NameRequiredDescriptionDefault
statusNoPost status (default: DRAFT)
contentYesThe post content
platformNoDestination platform: "x" (default), "linkedin", "bluesky", "mastodon", "youtube", "instagram" or "tiktok"
mediaUrlsNoPublic image or video URLs to download and attach (max 4). X: up to 4 images, or one video or GIF. LinkedIn: images, or one video.
firstCommentNoLinkedIn only: comment posted under the post right after it is published. Max 1250 characters.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / platform / description
      Previous value: -"Destination platform: \"x\" (default), \"linkedin\", \"bluesky\", \"mastodon\", \"youtube\" or \"tiktok\""New value: +"Destination platform: \"x\" (default), \"linkedin\", \"bluesky\", \"mastodon\", \"youtube\", \"instagram\" or \"tiktok\""
  2. Changed1 schema field changed
    • changedInput schema / properties / platform / description
      Previous value: -"Destination platform: \"x\" (default), \"linkedin\", \"bluesky\" or \"mastodon\""New value: +"Destination platform: \"x\" (default), \"linkedin\", \"bluesky\", \"mastodon\", \"youtube\" or \"tiktok\""
  3. Changed1 schema field changed
    • changedInput schema / properties / platform / enum
      Previous value: -[
      -  "x",
      -  "linkedin",
      -  "bluesky",
      -  "mastodon"
      -]New value: +[
      +  "x",
      +  "linkedin",
      +  "linkedin_page",
      +  "bluesky",
      +  "mastodon",
      +  "threads",
      +  "youtube",
      +  "instagram",
      +  "tiktok"
      +]
  4. Changed4 schema fields changed
    • changedInput schema / properties / content / description
      Previous value: -"The post content (tweet text)"New value: +"The post content"
    • addedInput schema / properties / firstComment
      Added value: +{
      +  "description": "LinkedIn only: comment posted under the post right after it is published. Max 1250 characters.",
      +  "maxLength": 1250,
      +  "type": "string"
      +}
    • addedInput schema / properties / mediaUrls
      Added value: +{
      +  "description": "Public image or video URLs to download and attach (max 4). X: up to 4 images, or one video or GIF. LinkedIn: images, or one video.",
      +  "items": {
      +    "description": "Public http(s) URL of an image or video",
      +    "format": "uri",
      +    "maxLength": 2048,
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "type": "array"
      +}
    • addedInput schema / properties / platform
      Added value: +{
      +  "description": "Destination platform: \"x\" (default), \"linkedin\", \"bluesky\" or \"mastodon\"",
      +  "enum": [
      +    "x",
      +    "linkedin",
      +    "bluesky",
      +    "mastodon"
      +  ],
      +  "type": "string"
      +}
  5. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so safety is partly covered; the description adds genuinely new context: drafts are never published or scheduled, repeated calls produce duplicate drafts rather than updating, media is fetched server-side from public URLs (consistent with openWorldHint), and drafts cost nothing on any plan. It does not say what is returned (e.g. a draft ID) or mention auth/rate limits, which is why it is not 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.

Conciseness5/5

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

Four short sentences, each carrying distinct information (what it does, what it does not do, duplication behavior, cost). The most decision-relevant negative constraint is front-loaded right after the core action.

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 5-parameter draft-creation tool with annotations and no output schema, the definition covers purpose, exclusions, side effects, and quota. The main remaining gap is that the agent is not told what a successful call yields, but with no output schema that is a minor omission rather than a blocking one.

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%, including platform enums, the 4-item media cap, and the 1250-character LinkedIn comment limit, so the schema already carries parameter meaning. The description only echoes the media-URL and first-comment behavior without adding format or validation detail beyond the schema; 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 (save text as a new draft), names the product (Postel), and explicitly rules out publishing or scheduling. This cleanly separates it from publish-post, schedule-post, and create-posts without the agent needing to open any schema.

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?

The clause 'Does not publish or schedule' gives a clear negative boundary that routes the agent to publish-post/schedule-post for those outcomes, and 'Each call creates a separate draft' tells the agent this is not an upsert. It stops short of naming the sibling alternatives explicitly, so it is strong but not a full when/when-not/alternative triad.

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.