Skip to main content
Glama
PlanPost MCP Server
by lukBB

bulk_create_posts

Destructive

Create up to 50 scheduled social posts from one manifest with shared defaults, so you avoid repeating fields and get per-row results even if one entry fails.

Instructions

Create a whole campaign of posts from one manifest. Each entry accepts the same fields as create_post; defaults supplies values shared by every entry (campaign, connectionIds, timezone, ...) so you don't repeat them. Rows are independent — one bad row fails alone and the rest still get created. Max 50 per call. Returns a per-row result with ids, warnings and edit links. X (Twitter): nothing sent to X may contain a link (URL, bare domain or t.co) — not the post, any thread segment, or a first comment (posted to X as a reply). The X API bills each link post at $0.20 vs $0.015, so the API rejects them; put a link-free version in platformContent.twitter.

Input Schema

NameRequiredDescriptionDefault
postsYesArray of post payloads. Each accepts every create_post field: content, connectionIds, platformContent, platformSettings, postType, threadSegments, label, campaign, schedule/scheduledFor, media, platformMedia, utm.
defaultsNoFields merged into every entry before its own values (which always win). Ideal for campaign, connectionIds and timezone.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the safety profile (destructive, open-world, non-idempotent); the description adds what they cannot — per-row independence with partial-failure semantics ('one bad row fails alone'), the 50-row ceiling, the shape of the per-row result (ids, warnings, edit links), and a platform-specific rejection rule for X links. The X billing rationale explains why the API rejects link posts, which is genuinely actionable behavior rather than restated metadata.

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?

Front-loaded with the batch purpose, then defaults behavior, failure semantics, limits, return shape, then the platform caveat. Every sentence carries information, though the X rule runs long and the pricing detail, while useful justification, is the most expendable clause.

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 destructive, open-world, non-idempotent bulk mutation with nested arbitrary payloads and no output schema, the description covers limits, partial-failure behavior, merge precedence, and the return shape. An agent has everything needed to size a call and interpret the result without guessing.

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% and the schema already documents the merge precedence for `defaults`, so most parameter meaning is carried there. The description still adds value by naming the practical defaults (campaign, connectionIds, timezone) and, more importantly, by tying the X link restriction to the platformContent.twitter field, which the schema does not mention.

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?

Opens with a specific verb plus resource and scope: 'Create a whole campaign of posts from one manifest.' It immediately distinguishes itself from the sibling create_post by explaining that each entry accepts the same fields as create_post, so an agent knows this is the batch form of that tool 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The batch context and the 'Max 50 per call' cap give clear conditions for use, and the create_post reference implies the single-post alternative. It never explicitly says 'use create_post for a single post,' so the routing is implied rather than stated, which keeps this short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.