Skip to main content
Glama

Social Media MCP by Publinio

prepare_campaign

Idempotent

Save supplied platform-specific captions, existing media, future times and sourced claims as a reviewable draft campaign. Never generates media or publishes. Content in any language is supported. Creates drafts only: do not report these posts as scheduled. When the user requests scheduling, use schedule_campaign with this exact returned snapshot.

Input Schema

NameRequiredDescriptionDefault
postsYes
titleYes
brandIdYes
factIdsNo
idempotencyKeyYes

Output Schema

NameRequiredDescriptionDefault
idYes
factsYes
postsYes
stateYes
titleYes
claimsYes
brandIdYes
approvedYes
snapshotYes
approvedByYes
factsValidYes
validationNo
xPublishingNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  2. Changed2 schema fields changed
    • changedInput schema / properties / posts / items / properties / platform / enum
      Previous value: -[
      -  "facebook",
      -  "instagram",
      -  "tiktok",
      -  "youtube",
      -  "linkedin",
      -  "linkedin_company",
      -  "x",
      -  "threads",
      -  "pinterest",
      -  "wordpress",
      -  "bluesky",
      -  "reddit"
      -]New value: +[
      +  "facebook",
      +  "instagram",
      +  "tiktok",
      +  "youtube",
      +  "linkedin",
      +  "linkedin_company",
      +  "x",
      +  "threads",
      +  "pinterest",
      +  "wordpress",
      +  "bluesky",
      +  "reddit",
      +  "telegram",
      +  "mastodon"
      +]
    • addedInput schema / properties / posts / items / properties / settings / properties / mastodon_settings
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "language": {
      +          "maxLength": 40,
      +          "type": "string"
      +        },
      +        "mediaDescriptions": {
      +          "items": {
      +            "maxLength": 1500,
      +            "type": "string"
      +          },
      +          "maxItems": 4,
      +          "type": "array"
      +        },
      +        "sensitive": {
      +          "type": "boolean"
      +        },
      +        "spoilerText": {
      +          "maxLength": 10000,
      +          "type": "string"
      +        },
      +        "visibility": {
      +          "enum": [
      +            "public",
      +            "unlisted",
      +            "private",
      +            "direct"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "visibility",
      +        "spoilerText",
      +        "sensitive",
      +        "language",
      +        "mediaDescriptions"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  3. Changed3 schema fields changed
    • removedInput schema / properties / posts / items / properties / content / minLength
      Removed value: -1
    • addedInput schema / properties / posts / items / properties / settings / properties / instagram_share_to_feed
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / posts / items / properties / settings / properties / publishing_format
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "post",
      +        "reel",
      +        "story"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  4. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the write/idempotency profile is covered. The description adds genuinely new behavioral facts: it never generates media or publishes, it accepts any language, and posts must not be reported as scheduled. It stops short of permissions or duplicate-key behavior, keeping it at a strong 4 rather than 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.

Conciseness4/5

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

The purpose is front-loaded and each sentence adds a decision-relevant constraint (draft-only, no publishing, language support, scheduling handoff). There is mild thematic repetition around 'draft'/'not scheduled', but the text stays tight and earns its length.

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?

An output schema exists, so return values need no explanation, and the description fully covers the critical draft-vs-schedule decision and non-publishing guarantee. Given the deeply nested settings object with zero schema descriptions, more parameter-level guidance would help, but the high-level call contract is complete.

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 0%, so the description carries the burden. It loosely maps concepts to the posts payload (captions=content, media=mediaAssetId(s), future times=scheduledAt, sourced claims=claims/factIds), but it says nothing about brandId, title, idempotencyKey, or the extensive per-platform settings object, leaving much of the 5-parameter surface undocumented.

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 gives a precise verb ('Save ... as a reviewable draft campaign') and enumerates the resource content it stores (captions, media, future times, sourced claims). It explicitly separates itself from schedule_campaign, so an agent can distinguish the two without opening either 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?

It states when to use it ('Creates drafts only') and names the alternative with the exact condition and handoff ('When the user requests scheduling, use schedule_campaign with this exact returned snapshot'). This is explicit routing guidance rather than implied usage.

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