Skip to main content
Glama

ffpipe — video conversion, probe & frames

convert_video

Queue an asynchronous video conversion: fetches sourceUrl (or, with upload: true, waits for you to PUT the bytes to the returned uploadUrl), converts to MP4 scaled to fit maxWidth x maxHeight (defaults 1920x1080, cap 4096). Returns { jobId, status: "queued" | "awaiting_upload", statusUrl, uploadUrl?, uploadExpiresAt? } - poll with get_job_status (jobId + the t token from statusUrl) until finished/error. Download results within 24 hours. Paid: $0.02 USDC via x402 (base mainnet), or a convert-kind retryVoucher.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
uploadNoSet true to upload the bytes yourself instead of giving a sourceUrl (exactly one of the two). The paid result then returns status awaiting_upload plus uploadUrl and uploadExpiresAt: HTTP PUT the raw bytes to uploadUrl before the deadline (201 -> queued). You are charged at acceptance; an abandoned upload window errors with no refund, while a pipeline failure after your upload earns a retryVoucher.
maxWidthNoMax output width, default 1920
maxHeightNoMax output height, default 1080
sourceUrlNohttps URL of the input media (<= 100 MiB). Fetched from datacenter IP ranges - prefer a presigned URL from storage you control; no IP literals, no localhost/.internal/.local. Provide EXACTLY ONE of sourceUrl or upload.
retryVoucherNoRetry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond annotations: async queueing, upload behavior, payment requirement ($0.02 via x402), retryVoucher alternative, 24-hour download window, and the need to poll until finished/error. Since annotations only give generic read/write/side-effect flags, the description carries the burden, and it does so thoroughly.

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?

Six dense clauses are packed with essential owner: function, source/upload modes, dimensions, output format, polling, retention, cost, and payment alternatives. No filler; the main operation is frontloaded.

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?

Given no output schema, the description compensates by specifying return fields, statuses, polling relationship, upload target, timeout/download window, and cost. This is complete enough for an agent to invoke the tool successfully without external documentation.

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%, so the schema already explains every parameter, including defaults and constraints. The description repeats and slightly recontextualizes maxWidth/maxHeight defaults, the sourceUrl fetch behavior, and the upload path, but it does not materially add per-parameter meaning beyond schema; it mainly explains the overall workflow and payment.

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 by naming the operation — queue asynchronous video conversion — and states exact output format and scope (fetches sourceUrl or upload, converts to MP4, scales to fit dimensions). This distinguishes it from siblings like extract_frames, probe_media, and get_job_status, which are clearly different operations.

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 description provides strong context for when the tool should be used: it is the entry point for conversion, then the caller polls get_job_status with the returned jobId and token. It also clearly distinguishes the sourceUrl vs upload:true paths. It does not explicitly say when not to use it relative to extract_frames or probe_media, or name those alternatives, so it stops one point short of fully explicit deferral.

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