dev.ffpipe/ffpipe

MCPcommunitylive
v0.2.0dev.ffpipeUnknownUpdated 1mo ago

Convert, probe, and split video into frames — real FFmpeg, paid per job with x402 on Base.

Endpoint healthlive
checked 9 days ago · 199ms
100% of the last 5 checks reached this endpoint
Works in
ClaudeCursorCopilotChatGPTGemini

Inferred from the transports this listing declares (streamable-http). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Automatically indexed from public sources. Not yet verified by the developer on Forge.Claim this listing →
1mo agoLast update
Package
Authordev.ffpipe
LicenseUnknown
Version0.2.0
Sourcemcp-registry
Trust Status
B
60/100Good
✓Listed in Forge index+10/10
—Publisher identity verified+0/30
→ Publisher: this listing has no repository on file, so `forge publish` cannot verify ownership automatically. Use "Claim this listing" above — Forge reviews these by hand.
—Domain verification+0/10
→ Not currently available for this listing type — the domain-verification check only runs for npm-backed packages today, so this row cannot be earned here yet regardless of what's hosted at the domain.
✓Prompt-injection scan · clean+30/30
✓Obfuscation / exfil scan · clean+20/20
StatusCommunity-indexed
PublisherUnverified
SignatureUnsigned
Domain—
Provenance—
DependenciesNot audited
Tool surface6 tools · none privileged
Security scan✓ Cleanvlive · 9d agoHow well does this scan work?
EvalsNone
IndexedAug 17, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

6 tools · none privileged
Observed live from the vendor's endpoint9d ago

Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.

  • https://ffpipe.dev/mcp6 tools · 199ms
convert_videoQueue 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…

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…

ParameterTypeDescription
sourceUrlstringhttps 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/.i…
uploadbooleanSet 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 uploadUr…
maxWidthintegerMax output width, default 1920
maxHeightintegerMax output height, default 1080
retryVoucherstringRetry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched.
probe_mediaQueue 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_summ…

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_summ…

ParameterTypeDescription
sourceUrlstringhttps 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/.i…
uploadbooleanSet 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 uploadUr…
outputFormatstringFormat of the delivered analysis, default json. Only json carries the ffpipe_summary block; the rest are raw. flat is delivered as .txt.
sectionsarrayWhich sections to report. Default: format, streams, chapters.
summarybooleanKeep the normalized ffpipe_summary block (json only). Default true; send false for byte-exact raw output.
selectStreamsstringRestrict the analysis to matching streams, e.g. "v:0" (first video stream) or "a" (all audio).
showFramesbooleanReport 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.
showPacketsbooleanReport per-PACKET detail. Same bounded-window treatment as showFrames.
showEntriesstringKeep only the named fields, e.g. "frame=pict_type,pts_time,key_frame" or "format=duration". Section and field names only.
readIntervalsstringLimit the analysis to a window, e.g. "%+60" (first 60 seconds), "30%+10" (10 seconds from 0:30), "%+#500" (first 500 packets).
countFramesbooleanCount frames exactly. Requires decoding the whole file - slow on long sources.
countPacketsbooleanCount packets exactly. Same cost caveat as countFrames.
retryVoucherstringRetry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched.
extract_framesQueue 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, i…

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, i…

ParameterTypeDescription
sourceUrlstringhttps 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/.i…
uploadbooleanSet 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 uploadUr…
mode*stringHow 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)…
nintegerevery_nth only: keep every Nth DECODED frame (a frame index, not a time).
fpsnumberinterval only: frames per second, may be below 1 (0.5 = one frame every two seconds).
countintegerevenly_spaced only: how many frames to spread across the window.
timestampsarraytimestamps only: seconds into the source, one accurate frame each. Sorted for you.
startTimenumberWindow start in seconds (default 0).
endTimenumberWindow end in seconds (0 or omitted = to the end); must exceed startTime.
maxOutputWidthintegerFit box width applied to the source's DISPLAY dimensions: aspect preserved, never upscaled, oriented to the input. 0 = no limit on this axis.
maxOutputHeightintegerFit box height, same rules as maxOutputWidth.
formatstringImage format of each frame, default jpeg (small and accepted by every vision API). png is lossless.
qualityintegerEncoder quality for jpeg/webp, default 85; ignored for png.
maxFramesintegerCeiling on frames produced, default and hard limit 1000. A request whose sampling would exceed it fails before any decoding.
retryVoucherstringRetry-voucher credential (`uuid.hmac`) from a failed paid job's status - pays for this call instead of x402. Single use, kind-matched.
get_job_statusFree 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 | er…

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 | er…

ParameterTypeDescription
jobId*stringJob id from the acceptance
token*stringOwnership token - the `t` query parameter of statusUrl
get_balanceFree. 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 con…

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 con…

No input schema was published for this tool.

leave_feedbackTell 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…

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…

ParameterTypeDescription
typestringWhat this is: "feature_request" for a capability ffpipe does not offer yet, "bug" for something broken, "feedback" for anything else. Defaults to "feedback".
message*stringWhat 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 w…
jobIdstringOptional job id this relates to. Context only - ownership is NOT checked and no token is needed.
contactstringOptional. An email or handle to reply at, up to 200 characters. Omit it and the submission stays anonymous.

6 of 6 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

Convert, probe, and split video into frames — real FFmpeg, paid per job with x402 on Base.

Keywords
mcp
Alternatives
Comparing tool surfaces…

No dependency coverage

This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.

Topics

Related in images, video & audio