Skip to main content
Glama

Attach Image Carousel to Post

set_post_carousel
DestructiveIdempotent

Attaches 2-10 images as a swipeable carousel to a draft or scheduled post. Takes an ordered array of HTTPS image URLs (each max 10MB); order is kept as slide order and every image is rehosted to durable storage. Works on all three platforms: X renders the first 4 slides and Threads up to 10 (native multi-image); on LinkedIn the slides are composed server-side into a multi-page PDF and published as a swipeable document carousel. Slides may be JPEG, PNG, WebP or GIF; WebP and GIF slides are stored as JPEG or PNG (first frame only, so an animated GIF loses its animation). A post holds one media format at a time (single image, carousel or video): replace=true swaps an existing image or video for this carousel. Published posts cannot be changed. dry_run=true validates all URLs without writing. Included with paid Handler only: on Free Handler the call is refused as not included in the plan. Attaching media to an approved (ready or scheduled) post returns it to draft, and it needs approval again before it can publish. Every response carries status_before, status_after and approval_required.

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": {
      "post_id": "<post_id>",
      "image_urls": "<image_urls>"
    },
    "name": "set_post_carousel"
  }
}

Input Schema

NameRequiredDescriptionDefault
dry_runNoWhen true, the call validates all URLs without downloading or writing.
post_idYesThe post id to attach a carousel to.
replaceNoWhen true, the call discards any existing single image or video on the post and attaches this carousel instead.
image_urlsYesOrdered array of 2-10 HTTPS image URLs. Order is preserved as the carousel slide order. JPEG, PNG, WebP or GIF; WebP and GIF are stored as JPEG or PNG (first frame).

Output Schema

NameRequiredDescriptionDefault
kindYes
formatNo
dry_runNo
post_idYes
slide_countNo
document_urlNo
status_afterNo
carousel_urlsNo
dashboard_urlNo
status_beforeNo
thumbnail_urlNo
approval_resetNo
approval_requiredNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the supplied annotations (destructiveHint, idempotentHint, openWorldHint) by disclosing what the write actually does: every image is rehosted to durable storage, WebP/GIF are transcoded to JPEG/PNG with first-frame-only loss of animation, and LinkedIn slides are composed server-side into a PDF document carousel. It also flags the side effect that attaching media demotes an approved post back to draft and requires re-approval, plus per-platform rendering limits and plan gating.

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 core action and scope in the first sentence, then layered constraints. Every sentence carries information, but it is delivered as one dense unbroken paragraph, which makes the platform-specific and plan-gating details harder to scan than they need to be.

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, cross-platform, side-effecting write tool it covers everything an agent needs before calling: eligibility, format limits, platform behaviour, overwrite semantics, dry-run validation, plan restrictions, and the approval-state consequence. An output schema exists, and the description still helpfully names the status_before/status_after/approval_required fields an agent should read.

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 description coverage is already 100%, so the baseline is 3; the description adds real meaning beyond it — a 10MB per-image size cap that appears nowhere in the schema, order-is-slide-order semantics, and the concrete consequence of replace=true on existing media. The post_id parameter itself gets no additional explanation beyond what the schema states.

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 ('Attaches 2-10 images as a swipeable carousel to a draft or scheduled post') and immediately bounds it by count, target state, and platform behaviour. An agent can distinguish this from set_post_image and set_post_video because the description explicitly frames carousel as one of three mutually exclusive media formats.

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?

Gives concrete when-conditions and exclusions: only draft or scheduled posts (published posts cannot be changed), replace=true required to overwrite an existing image or video, dry_run=true to validate without writing, and paid-plan-only access. It stops short of naming the sibling tools (set_post_image, set_post_video, upload_asset) it should be chosen over, so routing between the three is inferred rather than stated.

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