Skip to main content
Glama

Attach Video to Post

set_post_video
DestructiveIdempotent

Attaches a video (MP4 or MOV, max 200MB) to a draft or scheduled post, from either an HTTPS URL (video_url) or a file already uploaded to FeedSquad storage through a signed upload URL (upload_id); exactly one of the two is required. A URL is downloaded and rehosted to durable storage, so a scheduled post keeps working after the source URL expires. An upload_id attaches once, and only while it belongs to this account, has not expired and holds an MP4 or MOV no larger than its declared size whose content matches its declared type; upload errors carry error.data = { code, recovery } with codes UPLOAD_NOT_FOUND, UPLOAD_EXPIRED, UPLOAD_ALREADY_USED, UPLOAD_NOT_RECEIVED, UPLOAD_TOO_LARGE, UNSUPPORTED_FORMAT, VIDEO_QUOTA_EXCEEDED and UPLOAD_NOT_AVAILABLE. Counts against the 5GB monthly video budget (account usage reports what remains). Optional thumbnail_url sets the X poster frame. A post holds one media format at a time (single image, carousel or video): replace=true swaps an existing image or carousel for this video. Published posts cannot be changed. dry_run=true validates the URL and size, or the uploaded file, without consuming quota or the upload. 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>"
    },
    "name": "set_post_video"
  }
}

Input Schema

NameRequiredDescriptionDefault
dry_runNoWhen true, the call validates the URL and size, or the uploaded file, without downloading, attaching or consuming quota or the upload.
post_idYesThe post id to attach a video to.
replaceNoWhen true, the call discards any existing single image or carousel on the post and attaches this video instead.
alt_textNoOptional accessibility text.
upload_idNoThe upload_id of a video file already uploaded to FeedSquad storage through a signed upload URL. Attaches the stored file once. Takes video_url or upload_id, not both.
video_urlNoHTTPS URL of the video (MP4 or MOV, max 200MB). Server validates via HEAD, downloads, and rehosts to durable storage. Takes video_url or upload_id, not both.
thumbnail_urlNoOptional HTTPS URL of a poster-frame image (X uses it for the native video preview).

Output Schema

NameRequiredDescriptionDefault
kindYes
dry_runNo
post_idYes
mime_typeNo
upload_idNo
video_urlNo
size_bytesNo
status_afterNo
dashboard_urlNo
status_beforeNo
thumbnail_urlNo
approval_resetNo
approval_requiredNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, idempotentHint=true, openWorldHint=true), the description discloses a great deal of behavior that annotations cannot express: quota consumption against a 5GB monthly budget, single-use upload_id semantics, plan gating, the draft-regression/approval-required side effect, and a complete error-code taxonomy under error.data. At a smaller scale, the single-use upload_id behavior arguably sits uneasily with idempotentHint=true, but that is disclosed rather than contradicted.

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?

It is front-loaded with the core action and every sentence carries operational information, but the content is delivered as one very dense run-on paragraph mixing validation rules, error codes, billing and status transitions. Slightly shot grouping would make it easier to scan without losing anything.

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 mutating, quota-consuming, plan-gated tool with 7 parameters, the description covers prerequisites, one-of-two input selection, side effects, error recovery and plan restrictions, and the output schema already documents status_before, status_after and approval_required. Nothing an agent needs in order to call it correctly is missing.

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?

The schema coverage is 100%, so a baseline of 3 applies, but the description adds real meaning: it states the mutual exclusivity of video_url and upload_id, the validation rules an upload_id must satisfy (ownership, expiry, declared size and type), that thumbnail_url becomes the X poster frame, and what dry_run does without consuming quota.

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 opens with a specific verb and resource – 'Attaches a video (MP4 or MOV, max 200MB) to a draft or scheduled post' – and immediately scopes the two source modes. An agent can distinguish it from set_post_image and set_post_carousel because the description states that a post holds one media format at a time and replace=true swaps an existing image or carousel.

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 gives explicit routing rules: use upload_id for a file already in FeedSquad storage, use video_url otherwise, and exactly one is required. It also names when not to use it (published posts cannot be changed, Free Handler calls are refused) and when to set replace=true, so the conditions and exclusions are all present.

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