ffpipe — video conversion, probe & frames
Server Details
Convert, probe, and split video into frames — real FFmpeg, paid per job with x402 on Base.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
6 toolsconvert_videoAInspect
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.05 USDC via x402 (base mainnet), or a convert-kind retryVoucher.
| Name | Required | Description | Default |
|---|---|---|---|
| upload | No | Set 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. | |
| maxWidth | No | Max output width, default 1920 | |
| maxHeight | No | Max output height, default 1080 | |
| sourceUrl | No | https 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. | |
| retryVoucher | No | Retry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description fully discloses async behavior, payment details ($0.05, x402 or retryVoucher), upload workflow (PUT bytes before deadline, no refund on abandoned upload), result structure, polling via get_job_status, and 24-hour download window. Annotations only provide readOnlyHint=false, idempotentHint=false, destructiveHint=false, which are consistent; description adds all critical behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured and efficient, covering purpose, workflow, constraints, and payment in a few sentences. Slightly dense but not verbose; all information is necessary. Could be slightly more scannable with bullet points, but still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description is complete for a complex tool with 5 parameters, no output schema, and rich behavioral context. It explains async lifecycle, payment, upload vs source, dimension limits, polling mechanism, and error handling. Leaves no major gaps for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions, but the tool description adds high-level context: default dimensions (1920x1080), cap (4096), upload vs sourceUrl choice, payment via voucher, and the overall workflow. Description enhances understanding beyond individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool queues an asynchronous video conversion, specifies source URL or upload mode, output format (MP4), scaling constraints with defaults and cap, and payment model. It distinguishes itself from siblings by covering conversion, not extraction, probing, or status polling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly covers when to use (to convert video), async workflow (queue then poll), and mentions sibling tool get_job_status for polling. Includes constraints (max 100 MiB, no IP literals, etc.) and alternatives for payment (x402 vs retryVoucher). Does not list explicit exclusion scenarios, but the detailed async flow and payment options provide strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_framesAInspect
Queue an asynchronous frame extraction - the tool to reach for when you need to SEE a video: fetches sourceUrl (or, with upload: true, waits for you to PUT the bytes to the returned uploadUrl) and extracts still frames as jpeg, webp or png. mode is REQUIRED and picks the sampling (all, every_nth, interval, keyframes, evenly_spaced, timestamps); there is no default because every candidate implies a rate you did not ask for. A finished job's resultUrl is a JSON MANIFEST: source display dimensions, fps, rotation, an echo of your parameters, frame_count, and one entry per frame with index, pts_time (seconds in the source) and its own download url on this gateway - fetch the manifest, then the frames you want. Up to 1000 frames per job; "all"/"interval" on a long source can exceed that and fail fast, so prefer interval, evenly_spaced or timestamps. Unreadable input, audio-only files and still images FAIL here (probe_media diagnoses those). Download within 24 hours. Paid: $0.03 USDC via x402 (base mainnet), or a frames-kind retryVoucher.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | every_nth only: keep every Nth DECODED frame (a frame index, not a time). | |
| fps | No | interval only: frames per second, may be below 1 (0.5 = one frame every two seconds). | |
| mode | Yes | How to pick frames (required): "all" every frame; "every_nth" every Nth decoded frame (needs n); "interval" a fixed rate in seconds (needs fps, may be below 1); "keyframes" keyframes only, cheap on long sources; "evenly_spaced" count samples across the window (needs count); "timestamps" one frame per given second (needs timestamps). | |
| count | No | evenly_spaced only: how many frames to spread across the window. | |
| format | No | Image format of each frame, default jpeg (small and accepted by every vision API). png is lossless. | |
| upload | No | Set 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. | |
| endTime | No | Window end in seconds (0 or omitted = to the end); must exceed startTime. | |
| quality | No | Encoder quality for jpeg/webp, default 85; ignored for png. | |
| maxFrames | No | Ceiling on frames produced, default and hard limit 1000. A request whose sampling would exceed it fails before any decoding. | |
| sourceUrl | No | https 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. | |
| startTime | No | Window start in seconds (default 0). | |
| timestamps | No | timestamps only: seconds into the source, one accurate frame each. Sorted for you. | |
| retryVoucher | No | Retry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched. | |
| maxOutputWidth | No | Fit box width applied to the source's DISPLAY dimensions: aspect preserved, never upscaled, oriented to the input. 0 = no limit on this axis. | |
| maxOutputHeight | No | Fit box height, same rules as maxOutputWidth. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no readonly, destructive, or idempotent hints, but the description fully compensates by detailing the async queue behavior, upload workflow, payment via x402 or retryVoucher, 24-hour download window, 1000-frame limit, and failure conditions (exceeding limit, unreadable input, audio-only, still images). This is far beyond what annotations offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the purpose, but it runs long (multi-sentence paragraph). Every sentence adds value, but the length could be slightly trimmed for quicker scanning. Still, it is well-organized and avoids redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (15 params, async queue, payment, upload options), the description covers all critical aspects: behavior, failure modes, pricing, voucher usage, and manifest format. No output schema exists, so the description's explanation of the result URL content is essential and well-handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. However, the description adds significant value by explaining the absence of a default for mode (avoids assuming a rate), clarifying the upload flow (status awaiting_upload), and describing the manifest structure (resultUrl JSON). It also warns about the exact-one constraint between sourceUrl and upload, which is implicit in the schema. It does not explain every parameter in prose but compensates through rich context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queues asynchronous frame extraction for video, specifying output formats and the core requirement to 'SEE a video'. It is distinct from siblings like convert_video (which likely transforms format) and probe_media (which diagnoses files).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool (when you need to see a video), warns against using 'all'/'interval' on long sources, suggests preferring interval/evenly_spaced/timestamps, and mentions probe_media for diagnosing unreadable inputs. It also clarifies the upload vs sourceUrl distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceCheck your credit balance (free)ARead-onlyIdempotentInspect
Free. Reports the credit balance of the account this client is connected to, plus what one credit is worth, what each operation costs in credits, the monthly free allowance and whether a card is on file to unlock it. Takes no input: it reads the account behind the credential your client already connected with. If you have a connected account, paid tools are funded from this balance and never present a payment challenge - so call this to find out how much work you can still queue, and top up at the account page named in the answer. Anonymous callers (x402 buyers, who pay per call instead) have no balance and get an unauthorized error; either way nothing here is charged.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value beyond these by stating it is free, takes no input, reads the account behind the credential, never presents a payment challenge, and details the error case for anonymous callers. No contradiction with annotations. The extra context about permissions and error handling is helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, starting with the key fact 'Free' and then the core purpose. It is about 3-4 sentences long, each sentence adding distinct value (balance, cost breakdown, usage guidance, error case). It is not overly verbose, but could be slightly tighter by removing redundant phrasing like 'connected to' and 'connected with'. Still, it is efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully explains what the tool returns: credit balance, credit worth, operation costs, monthly free allowance, and whether a card is on file. It also mentions the account page name for top-ups. The error case for anonymous callers is covered. The tool has no parameters and is simple, but the description leaves no gaps for an AI agent to understand its behavior and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so description cannot add parameter-level meaning. According to guidelines, baseline is 4 for 0 params. The description correctly notes 'Takes no input: it reads the account behind the credential your client already connected with.' This is sufficient and does not repeat schema information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reports the credit balance and related financial details (credit worth, operation costs, free allowance, card on file). It is a unique tool among siblings (convert_video, extract_frames, etc.) as it focuses on account balance and usage limits, not media processing. The verb 'reports' and resource 'credit balance' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises calling this tool to find out how much work can be queued and to get the top-up link. It distinguishes between paid account holders (who have balance) and anonymous callers (who get unauthorized error). It does not explicitly name alternatives, but the context is clear and the sibling tools are unrelated (e.g., convert_video, get_job_status). The guidance is practical and sufficient for an AI agent to decide when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statusGet job status (free)ARead-onlyIdempotentInspect
Free status lookup for a job accepted by convert_video / probe_media / extract_frames. Requires the job's ownership token - the t query parameter of the statusUrl returned at acceptance (store the whole statusUrl; it cannot be regenerated). Status goes [awaiting_upload ->] queued -> finished | error; awaiting_upload jobs report uploadExpiresAt but NEVER the uploadUrl (that credential is handed out exactly once, in the acceptance result); finished jobs carry resultUrl/thumbnailUrl/durationMs (served by this gateway, free to re-download within 24 hours of completion; GET them following redirects); a failed charged job carries retryVoucher. A bad token and an unknown jobId both answer not_found, deliberately.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Job id from the acceptance | |
| token | Yes | Ownership token - the `t` query parameter of statusUrl |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint, idempotentHint, and destructiveHint. The description goes far beyond by detailing the status lifecycle (including awaiting_upload, queued, finished, error), explaining what each state returns (e.g., uploadExpiresAt, resultUrl, retryVoucher), and even noting that bad tokens vs unknown jobIds both return not_found deliberately. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that packs a lot of information without wasted words. It front-loads the purpose and token requirement, then efficiently covers the status lifecycle. While it's somewhat long, every sentence adds value, so it earns a high score for conciseness given the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully documents what the response contains for each status (uploadExpiresAt, resultUrl, thumbnailUrl, durationMs, retryVoucher), including the 24-hour free re-download window and redirect behavior. It also covers edge cases like awaiting_upload not having an uploadUrl. For a tool with this complexity, the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for jobId and token. The description adds critical context: it explains that the token is the 't' query parameter of the statusUrl and warns that the token cannot be regenerated, which is essential for correct usage and not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it is a 'Free status lookup for a job accepted by' and lists three specific sibling tools (convert_video, probe_media, extract_frames), making the verb+resource highly specific and clearly distinguishing it from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (after job acceptance), what is required (ownership token from statusUrl), and provides critical guidance on storing the token because it cannot be regenerated. It does not explicitly state when not to use it, but the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leave_feedbackRequest a capability / report a problem (free)AInspect
Tell us what you needed. If ffpipe does not offer the operation you came for - another output format, extracting a frame, a different transformation entirely - say so here: these requests are aggregated and they drive directly what gets built next, so a one-line "I wanted X" is genuinely useful to us. Also the place for bug reports and any other feedback. Free, unauthenticated, and one-way: nothing is returned but an acknowledgement, and no job is created. Include jobId if a specific job prompted this (context only - it is not checked and is not required), and contact if you want a reply. Message limit 2000 characters.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | What this is: "feature_request" for a capability ffpipe does not offer yet, "bug" for something broken, "feedback" for anything else. Defaults to "feedback". | |
| jobId | No | Optional job id this relates to. Context only - ownership is NOT checked and no token is needed. | |
| contact | No | Optional. An email or handle to reply at, up to 200 characters. Omit it and the submission stays anonymous. | |
| message | Yes | What you wanted, what went wrong, or what you think. Plain text, 1 to 2000 characters. Be concrete: "needed a single frame as a jpeg at a given timestamp" is worth more to us than "more features". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide minimal behavioral hints (none are true), so the description carries the full burden. It explicitly states this is free, unauthenticated, one-way, returns only an acknowledgment, and creates no job. This provides comprehensive transparency about the tool's behavior beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is densely informative with every sentence adding value: it explains the why, when, and how, plus constraints and side effects. It front-loads the core intent and progressively adds detail, achieving high conciseness without waste at 4 sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 params, no output schema, no nesting) and the rich annotations coverage, the description fully explains the tool's purpose, constraints, and outcomes. No gaps remain—the agent can correctly select and invoke it without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by further contextualizing jobId as 'not checked and not required' and describing the message length limit. It reinforces the parameter meanings from the schema, though it doesn't add entirely new semantics, so 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for requesting capabilities, reporting problems, or giving feedback. It uses specific verbs like 'tell us what you needed' and 'report a problem,' and distinguishes it from sibling tools like convert_video or extract_frames by positioning it as a non-operation feedback mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use this tool instead of others: when ffpipe lacks a desired operation, for bug reports, or other feedback. It also tells users to include jobId for context and contact for a reply, providing very clear usage guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probe_mediaARead-onlyInspect
Queue an asynchronous media inspection: fetches sourceUrl (or, with upload: true, waits for you to PUT the bytes to the returned uploadUrl) and returns its technical metadata as a downloadable file. In the default json format the result is the full raw analysis plus one added top-level "ffpipe_summary" object: container, duration_s, size_bytes, has_video, has_audio, video_codec, audio_codec, coded_width/height, display_width/height, rotation, fps, is_hdr, audio_channels, audio_sample_rate. USE display_width/display_height as the size the picture actually is - phones store portrait video as a landscape frame plus a rotation flag. A file that cannot be decoded is still a SUCCESS whose result carries the diagnosis. Returns { jobId, status, statusUrl, ... } - poll with get_job_status until finished/error, then download resultUrl within 24 hours. Paid: $0.01 USDC via x402 (base mainnet), or a probe-kind retryVoucher.
| Name | Required | Description | Default |
|---|---|---|---|
| upload | No | Set 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. | |
| summary | No | Keep the normalized ffpipe_summary block (json only). Default true; send false for byte-exact raw output. | |
| sections | No | Which sections to report. Default: format, streams, chapters. | |
| sourceUrl | No | https 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. | |
| showFrames | No | Report per-FRAME detail. Large: a bounded window is applied for you unless you send readIntervals. Pair with showEntries to keep only the fields you need. | |
| countFrames | No | Count frames exactly. Requires decoding the whole file - slow on long sources. | |
| showEntries | No | Keep only the named fields, e.g. "frame=pict_type,pts_time,key_frame" or "format=duration". Section and field names only. | |
| showPackets | No | Report per-PACKET detail. Same bounded-window treatment as showFrames. | |
| countPackets | No | Count packets exactly. Same cost caveat as countFrames. | |
| outputFormat | No | Format of the delivered analysis, default json. Only json carries the ffpipe_summary block; the rest are raw. flat is delivered as .txt. | |
| retryVoucher | No | Retry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched. | |
| readIntervals | No | Limit the analysis to a window, e.g. "%+60" (first 60 seconds), "30%+10" (10 seconds from 0:30), "%+#500" (first 500 packets). | |
| selectStreams | No | Restrict the analysis to matching streams, e.g. "v:0" (first video stream) or "a" (all audio). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds significant behavioral context: async nature (polling required), result lifetime (24 hours), error handling (undecodable files return SUCCESS with diagnosis), payment and voucher mechanics, and upload flow details. This goes well beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is comprehensive but verbose, mixing core purpose, parameter details, pricing, and result format in a dense block. While every sentence adds value, it could be better structured (e.g., separate sections for usage, parameters, output, pricing). It is adequate but not optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (13 parameters, no output schema), the description covers return format (including the summary object), async polling, error handling, pricing, and parameter nuances (e.g., upload flow, readIntervals syntax). No gaps are apparent; the agent has enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining output structure (ffpipe_summary block), upload process, readIntervals syntax, and the meaning of display_width/height. These clarifications are not present in the schema and aid correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Queue an asynchronous media inspection: fetches sourceUrl ... and returns its technical metadata as a downloadable file.' It uses a specific verb ('inspect'), specifies the resource (media via URL or upload), and distinguishes itself from sibling tools like convert_video or extract_frames.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides when to use this tool (for media inspection to get technical metadata) and provides detailed usage context such as payment ($0.01 via x402 or retryVoucher), async polling via get_job_status, and result expiration. It does not explicitly state when not to use it or name alternatives, but the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
- Added
extract_frames - Added
probe_media
1 tool update
- Added
get_balance
3 tool updates
- First observed
convert_video - First observed
get_job_status - First observed
leave_feedback
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Run FFmpeg and FFprobe in the cloud: convert, compress, trim and analyze video and audio.
FFmpeg as a service for AI agents: typed video editing tools, async jobs, downloadable outputs.
Hosted MCP tools for FFmpeg-style video and audio processing through FFMPEG API.
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables video processing tasks such as resizing, audio extraction, and metadata inspection using FFmpeg, with base64 input/output for stateless and portable operation.1-
- AlicenseAqualityDmaintenanceProvides video manipulation via ffmpeg (frame extraction, format conversion, trimming, audio adjustments, filters, and subtitle handling) without requiring an external API key.20MIT
- FlicenseNot gradedqualityDmaintenanceEnables image and video processing through FFmpeg, including compression, format conversion, resizing, and batch processing operations for common media formats.-
- FlicenseAqualityDmaintenanceEnables comprehensive video and audio processing using FFmpeg, supporting tasks like metadata extraction, clipping, scaling, and adding transitions or overlays. It provides a high-performance interface for building media processing microservices via FastMCP.1210-
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool targets a distinct capability: convert_video, extract_frames, probe_media, get_job_status, get_balance, and leave_feedback are clearly separated. However, there is a minor overlap potential between convert_video and extract_frames for users wanting to get video stills, but descriptions clarify the difference well.
All tool names follow a consistent verb_noun pattern (convert_video, extract_frames, get_balance, get_job_status, leave_feedback, probe_media). The verbs are descriptive and the nouns clearly indicate the resource or action, making them predictable and easy to navigate.
With 6 tools, the set is well-scoped for a video processing service. Each tool serves a core function: two for processing (convert, extract), one for analysis (probe), one for status tracking, one for account management, and one for feedback. No tool is superfluous, and the count feels proportional to the domain.
The toolset covers essential video operations: conversion, frame extraction, media probing, with robust status tracking and account management. Obvious gaps include the lack of a cancel_job tool for stopping queued jobs and no explicit download management tool beyond the 24-hour window, but the core lifecycle is well-covered.