Skip to main content
Glama

Server Details

Find & cut horizontal and vertical video clips (Shorts/Reels), transcribe & summarize. Pay per job.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 57 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 9 tools

Disambiguation4/5

The clip tools (find_clips, clips_from_job, clips_from_video) clearly overlap in purpose, but the descriptions explicitly contrast them (find_clips vs. clips_from_job vs. clips_from_video, and transcribe vs. summarize) so an agent can disambiguate with care. The heavy cross-referencing makes boundaries legible but the surface is dense and one misread selection is plausible.

Naming Consistency4/5

Most names follow a predictable verb-led or resource-led snake_case pattern (find_clips, get_job_status, complete_upload, edit_from_transcript, clips_from_job). Minor deviations exist (bare verbs summarize/transcribe, the noun-phrase mpp_smoke_test, and the noun-first clips_from_* form), but the convention stays readable throughout.

Tool Count5/5

Nine tools is well-scoped for a media-processing service: ingest (complete_upload), analysis (transcribe, summarize, find_clips), derivations (clips_from_job, clips_from_video, edit_from_transcript), plus status and a payment smoke test. Each tool earns its place with no redundancy or bloat.

Completeness4/5

The ingest-to-analysis-to-edit lifecycle is well covered, but the descriptions repeatedly reference a publish_to_youtube tool and an extract_vertical_clip REST job type that are not present in this set, leaving publishing (a natural end of the clip pipeline) as a dead end within this surface.

Available Tools

9 tools
clips_from_jobAInspect

Cut one or more clips from any prior video job (find_clips, summarize, or video transcribe). Operates on a parent job — possessing the parent source_job_id is the capability, no upload step. Contrast with clips_from_video, which takes a local filename and uploads a video that has never been in Weftly before; use this tool whenever a video job already exists. Two choices are required on every new job, with no default — if the customer's intent is genuinely ambiguous, ask rather than guess: orientation (horizontal keeps the source framing; vertical crops to 9:16 for TikTok/Reels/Shorts) and output (files delivers one file per clip; reel concatenates every clip into a single file). Two-call flow: (1) call with source_job_id + clips (1+ objects {start, end, title?} in source seconds) + orientation + output to receive {job_id, payment_challenge}; (2) pay via MPP and call again with job_id + payment_credential to start processing. Price: output: "reel" bills a flat $0.50 regardless of segment count; output: "files" bills N × $0.50 for N clips, charged once for the whole batch (Stripe quantity). See /.well-known/mpp.json for the Tempo USDC rate. output: "files" caps a batch at 5 clips; output: "reel" concatenates every clip into one file, capped at 30 minutes of total output for orientation: "horizontal" or, for orientation: "vertical", the selected profile's cap: 240s for tiktok-primary and tiktok-primary-720p, 180s for instagram-reels, 60s for instagram-stories. The 240s ceiling is an encode limit (crop+scale cost per segment against the container's own timeout), not a platform rule; the shorter profile caps are the destination's own limit. orientation: "vertical" accepts profile (default tiktok-primary; also tiktok-primary-720p, instagram-reels, instagram-stories) and subject (center/auto/follow, default follow — switches crop between active speakers across clip and segment boundaries, the mode that makes multi-speaker interview clips usable; manual/subject_id need per-clip data this tool cannot supply — use the REST API's extract_vertical_clip job type directly for those); both are rejected for orientation: "horizontal", which keeps the source framing and has no crop to aim. include_transcript (default true) applies only to output: "reel" — mirrors extract_clip's clipped SRT + word-level transcript outputs — and is rejected for output: "files". Outputs: output: "files" writes roles clip-1-video through clip-N-video plus a clips-manifest (JSON) recording each clip's timing, output role, and any per-clip failure — a batch delivering fewer than N clips is not refunded, only one delivering zero is; output: "reel" writes role clip-video (frame-accurate boundaries, 15ms audio fades at segment joins) plus, when include_transcript is true, roles clip-srt + clip-words. Every output is audio loudness-normalized to -14 LUFS / -1.5 dBTP; vertical output is additionally cropped to the selected profile's dimensions (1080×1920 by default) and burned with word-level captions by default (center-third placement, uppercase, one short line per card) — pass captions: false to render vertical output without them; horizontal output never gets captions. Payment: pay by credit card via the Stripe Checkout link (open the returned payment_url in any browser) or Tempo USDC via mppx; the challenge's WWW-Authenticate header and /.well-known/mpp.json are authoritative for which methods are offered. Source must still be in storage (72h TTL for find_clips parents, 24h elsewhere — check expires_at from get_job_status on the parent). Multiple clips_from_job calls against one parent are independent paid jobs. Retrying with job_id alone recovers the current state. Failed jobs auto-refund.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipsNo
job_idNo
outputNo
profileNo
subjectNo
captionsNo
orientationNo
source_job_idNo
include_transcriptNo
payment_credentialNo

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: two mandatory no-default choices, the two-call pay-then-process flow, pricing model, batch caps (5 clips / 30min / profile-specific ceilings), auto-refund on failed jobs, retry semantics, loudness normalization, and storage TTLs. This is unusually complete behavioral disclosure.

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?

Purpose and the sibling contrast are front-loaded, and the density is largely functional for a complex 10-param tool. It is nonetheless a very long single blob with some repetition (payment re-explained, well-known URL referenced twice), which costs it a point.

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?

Complete for a no-output-schema, no-annotation mutation tool: return artifacts (role names like clip-1-video, clips-manifest, clip-srt/clip-words), payment recovery, failure/refund behavior, and constraints are all spelled out. Nothing an agent needs to invoke and interpret it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 10 params, yet the description explains nearly all of them: orientation semantics, output behavior, profile/subject options with defaults and rejection rules, include_transcript applicability, captions default, and the clips object shape and the job_id/source_job_id/payment_credential roles in the flow.

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+resource ('Cut one or more clips from any prior video job') and immediately scopes it to parent jobs, explicitly contrasting with the sibling `clips_from_video`. An agent can distinguish the two without opening either schema.

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?

Gives an explicit selection rule versus the alternative ('use this tool whenever a video job already exists'), names the sibling it is not, and even routes to the REST API's `extract_vertical_clip` when `manual`/`subject_id` are needed. When-to-use is fully disambiguated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clips_from_videoAInspect

Find clips in a video AND cut up to 5 of them, under ONE payment. This is the alternative to calling find_clips and then clips_from_job yourself — prefer it whenever the user wants clips delivered end-to-end from a video they have not yet uploaded. CARD PAYMENT ONLY — this chain authorizes a Stripe hold (up to $4.50) before the final price is known (the total depends on how many clips are found and delivered), a shape MPP push settlement cannot express. A caller with no card-checkout capability (a wallet-only MPP agent) should NOT call this tool — call find_clips then clips_from_job instead, paying per step in USDC. Two-call flow: (1) call with filename and content_type (video only) — and an optional query to switch clip discovery from "best clips" to matching specific content (e.g. "the part about pricing") — to receive {job_id, status: "awaiting_payment", checkout_url}; (2) once the user says they have authorized payment, call again with the SAME job_id (no other fields needed) to recover state — this returns the same checkout_url if still unauthorized, or an upload step once the card hold is authorized (the client performs the upload, never you). Retrying with a NEW call instead of the same job_id authorizes a SECOND card hold for the same video — always resume with job_id, exactly like every other job-creating tool here. The card hold authorizes the worst case (one $2.00 find_clips analysis plus up to 5 × $0.50 clips), not a charge — the customer is charged once, at the end, for exactly what was delivered (fewer clips than the maximum is normal, not a failure). Clips are auto-selected by score and delivered as a clips-manifest output alongside the transcript and clip candidates on the same job. Poll with get_job_status(job_id) for the transcript and candidates; the clips themselves land as the job progresses through its chained stages. Set orientation to choose the shape: vertical (the default) cuts 9:16 clips for TikTok, Reels and Shorts; horizontal cuts 16:9 clips for YouTube or a website embed. horizontal CUTS the clips and hands them back — it does not upload or publish anything to YouTube; publishing is publish_to_youtube, a separate job the user has to ask for. Pick from what the user says they want the clips FOR, and if that is genuinely ambiguous, ask rather than guessing — the two produce different files at the same price. orientation: "vertical" clips are burned with word-level captions by default (center-third placement, uppercase, one short line per card); pass captions: false to render them without. orientation: "horizontal" clips never get captions.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
job_idNo
captionsNo
filenameNo
job_typeYes
thread_idNo
orientationNo
content_typeNo

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden — and it does: payment model (card-only, Stripe hold up to $4.50, charged once at the end), the two-call resume protocol, and the critical warning that re-calling without job_id authorizes a SECOND hold. It also discloses that horizontal does not publish (publishing is publish_to_youtube), preventing a realistic misuse.

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?

Purpose and routing lead the description, and nearly every sentence carries operational weight (payment shape, resume protocol, orientation choice). It is nonetheless a dense block that revisits the payment/retry theme more than once, so it is longer than strictly necessary.

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?

There is no output schema, and the description fills that gap: it describes the first-call return ({job_id, status: 'awaiting_payment', checkout_url}), the second-call return (checkout_url or upload step), and the final clips-manifest output alongside transcript and candidates. An agent has everything needed to drive the full chain.

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 coverage is 0% across 8 parameters, so the description must compensate, and it explains most of them well: query (switches discovery to content matching), filename + content_type (video only), job_id (same-id resume semantics), orientation (vertical vs horizontal and their caption defaults), and captions. It gives no meaning for thread_id or for the job_type enum (clips_from_video vs clips_youtube), which the schema lists as required.

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 opening sentence states a specific verb and resource ('Find clips in a video AND cut up to 5 of them, under ONE payment') and immediately names itself as the alternative to the find_clips + clips_from_job sequence. An agent can distinguish it from both siblings without opening any schema.

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?

Explicit when-to-use ('prefer it whenever the user wants clips delivered end-to-end from a video they have not yet uploaded'), explicit when-NOT ('a wallet-only MPP agent should NOT call this tool — call find_clips then clips_from_job instead'), plus a tie-break rule for the ambiguous orientation case. This is as complete as usage guidance gets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_uploadAInspect

Confirm that the file has been uploaded (via HTTP PUT to the upload_url from transcribe or summarize) and start processing. Verifies that the file is present in storage and that the job has been paid. Returns status "processing". Poll get_job_status to track progress and retrieve download URLs when done.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id returned from a previous transcribe or summarize call.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool verifies file presence in storage and job payment, and that it returns status 'processing'. This covers key behavioral aspects, though it omits error scenarios or authentication requirements.

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?

The description is two concise sentences, front-loaded with the primary action and immediately providing necessary context on preconditions and next steps. Every sentence adds value with no unnecessary wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description provides sufficient context: it explains the upload prerequisite, the verification behavior, the returned status, and how to track progress. It lacks explicit failure handling but is otherwise complete.

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?

The schema fully describes job_id as 'The job_id returned from a previous transcribe or summarize call.' The description does not add extra semantic detail beyond that, but since schema coverage is 100%, the baseline of 3 is appropriate.

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 clearly states the tool's function: 'Confirm that the file has been uploaded (via HTTP PUT to the upload_url from transcribe or summarize) and start processing.' This specifies a concrete verb and resource, and distinguishes it from siblings like transcribe/summarize (which initiate jobs) and get_job_status (which polls progress).

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 clear context: it should be used after uploading the file via HTTP PUT to the upload_url, and it explicitly recommends polling get_job_status afterward. It doesn't explicitly state when not to use the tool, but the precondition and follow-up are clear enough to guide proper usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_from_transcriptAInspect

Cut and re-assemble a video from an edited copy of its own word-level transcript — the text-editing counterpart to clips_from_job's timestamp-based cutting. Operates on a parent job (find_clips, summarize, or video transcribe) that has a word-level transcript; possessing the parent source_job_id is the capability, no upload step. Get the editable text first via get_job_status(job_id, format: "edit") or the download route — one [NNNN]-marked line per sentence — then edit it in any text editor: delete words or whole lines, move whole lines, but do not add or change a word (a marker used twice, or any added/changed word, invalidates the whole edit and is rejected before payment). Two-call flow: (1) call with source_job_id + the full edited text as edited_transcript (sent inline, max 262144 UTF-8 bytes) + optional title to receive {job_id, payment_challenge} — an invalid edit is rejected here, before any charge, with the exact failing lines; (2) pay via MPP (Tempo USDC) or open the Stripe Checkout payment_url in a browser, then call again with job_id + payment_credential to start processing. Flat price: $1.00 — see /.well-known/mpp.json for the Tempo USDC rate. Up to 300 cuts and 60 minutes of output per call; repeated phrases match their first occurrence, left to right. Outputs: role clip-video (the edited video), plus clip-srt and clip-words re-timed to match the edit. Source must still be in storage (72h TTL for find_clips parents, 24h elsewhere — check expires_at from get_job_status on the parent). Use whenever the edit is easier to describe in text than in timestamps — tightening a clip or a short segment by deleting filler words and tangents, or reordering a handful of sentences; use extract_clip (via clips_from_job) instead when you already know the exact start/end seconds you want. Retrying with job_id alone recovers the current state. A rejected edit creates no job, so show its errors to the user from the response that returned them. Failed jobs auto-refund.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
job_idNo
source_job_idNo
edited_transcriptNo
payment_credentialNo

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: the exact two-call payment flow, rejection of invalid edits before any charge, the do-not-add-or-change-a-word constraint, up to 300 cuts/60 minute output, first-occurrence matching for repeated phrases, 72h vs 24h TTL differences, retry-with-job_id recovery, and auto-refund on failure. This is an unusually complete behavioral disclosure for a paid, stateful tool.

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 purpose and alternative, then flows into the numbered two-call flow. Every sentence is substantive given the tool's complexity (payment, validation, TTLs), though the density is high and a reader must parse a lot in one pass.

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?

Despite no annotations and no output schema, the description covers return artifacts (clip-video, clip-srt, clip-words re-timed), error handling, pricing, and lifecycle. Nothing an agent needs to invoke this complex paid flow correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are 5 undocumented parameters with 0 required, so the description must compensate fully. It does: it maps source_job_id + edited_transcript (inline, max 262144 UTF-8 bytes) + optional title to call one, and job_id + payment_credential to call two, and explains the transcript's [NNNN] line format.

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+resource: 'Cut and re-assemble a video from an edited copy of its own word-level transcript.' It explicitly distinguishes itself from sibling clips_from_job ('the text-editing counterpart to clips_from_job's timestamp-based cutting') and from extract_clip, so an agent can place it without opening any schema.

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?

Gives an explicit decision rule: 'Use whenever the edit is easier to describe in text than in timestamps... use extract_clip instead when you already know the exact start/end seconds.' It also names prerequisites (parent must have a word-level transcript, source still in storage) and the sibling tools that produce valid parents (find_clips, summarize, transcribe).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_clipsAInspect

START HERE for any clip workflow on a video — find_clips is the canonical entry point and includes a full transcription as a free byproduct. Do not call transcribe first: doing so doubles the upload, doubles the spend, and produces the same transcript. Identify ranked candidate clips in a video — what to cut for highlights, social, or testimonials. Three-call flow: (1) call with filename (and optional query) to receive {job_id, payment_challenge}; (2) pay via MPP, then call with job_id + payment_credential to receive {upload_url} (presigned PUT, 1h expiry); (3) PUT the bytes, then complete_upload(job_id), then poll get_job_status(job_id). On completion, get_job_status returns three outputs: role clip-candidates (JSON matching /.well-known/weftly-clips-v1.schema.json — includes source_job_id and source_expires_at), role transcript (SRT, free byproduct), role transcript-words (JSON matching /.well-known/weftly-transcript-v2.schema.json, free byproduct). Each candidate carries transcript_text — the full text of what's in the clip — so callers can preview content before paying for clips_from_job. Optional query parameter switches to query mode (e.g., "they discuss pricing", "the part about hiring") with the same output shape; the mode field in clip-candidates.json indicates which mode produced the result. Flat price: $2.00 video — see /.well-known/mpp.json. Source-reuse contract: the source video stays in storage for 72h after find_clips completes. Hand the find_clips job_id (also returned as source_job_id in the candidates JSON) to clips_from_job as its source_job_id — within those 72h it cuts directly from the stored source: no re-upload, no re-transcribe, just $0.50 per cut (more for a multi-clip output: "files" batch). Pass the same source_job_id to as many clips_from_job calls as you need. Use for interviews, podcasts, sales calls, all-hands recordings. Retrying with job_id alone returns current state. Failed jobs auto-refund.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional. Switches the analyzer from "best clips" discovery mode to query mode — finds segments matching this content (e.g., "they discuss pricing", "the part about hiring"). Same output shape either way; the `mode` field in clip-candidates.json tells consumers how to interpret per-candidate scoring.
job_idNoJob ID returned from a previous call. Include along with payment_credential to confirm payment and receive the presigned upload URL. Also include alone to recover the current challenge/state if the original response was lost.
filenameNoFilename with extension (e.g. "podcast.mp3"). Required on the first call — used to infer media type (audio vs video) and label outputs. Supported extensions: mp3, wav, m4a, ogg, flac, mp4, mov, webm, mkv.
payment_credentialNoMPP payment credential (full Authorization header value, e.g. "Payment eyJ...") obtained by paying the challenge returned from the first call. Include with job_id to verify payment and receive the upload URL.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses the payment challenge workflow, presigned PUT with 1h expiry, three-step upload completion, the three output roles (clip-candidates, transcript, transcript-words), source retention for 72h, flat pricing ($2.00) and auto-refund on failure, plus retry semantics with job_id. This is exceptional transparency.

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?

The description is long but appropriately so for a multi-step, high-stakes workflow. It is front-loaded with 'START HERE' and the critical anti-pattern warning, then follows a logical sequence (call flow, outputs, pricing, reuse). While dense, every sentence contributes essential information—no filler. The length is justified by the tool's complexity.

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 the tool's complexity, lack of annotations, and lack of output schema, the description is remarkably complete. It covers the entire lifecycle: initial call, payment, upload, completion, output schemas (referenced via /.well-known/ endpoints), source-reuse contract, pricing, failure behavior, and retry semantics. An agent has everything needed to correctly invoke and interpret the tool.

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?

While schema coverage is 100% and each parameter has a description, the description adds workflow-specific meaning beyond the schema: it explains that filename is required on the first call, job_id can be used alone to recover state, and payment_credential must accompany job_id to confirm payment. It also clarifies that query switches the analyzer mode. This goes well beyond the schema's basic definitions.

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 states a precise purpose: 'Identify ranked candidate clips in a video — what to cut for highlights, social, or testimonials.' It also clearly positions itself as the canonical entry point ('START HERE for any clip workflow') and explicitly distinguishes itself from transcribe and clips_from_job, so an agent can differentiate it from siblings immediately.

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?

The description is explicit about when to use the tool: 'START HERE' and 'Do not call transcribe first' with a concrete reason (doubles upload and spend). It lays out the exact three-call flow, explains optional query mode, references clips_from_job for subsequent cuts, and even lists applicable use cases (interviews, podcasts, sales calls). No alternatives are left ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_job_statusAInspect

Check the status of a transcribe or summarize job. Returns the current state and, when completed, an outputs array. Each output has either content (returned inline) or a presigned, time-limited (1 hour) download_url. Small text outputs (e.g. transcript SRT, clip-candidates, summary) come inline as content; larger outputs — transcript-words JSON for any non-trivial recording, plus video outputs like clip-video / clip-vertical-video — come as a download_url to fetch when needed. Optionally pass format (srt, txt, vtt, json, words, edit) to get the transcript content inline in the top-level transcript field — txt and vtt are derived from the stored SRT; json is v1 (segments only); words is v2 (segments + per-word timestamps matching /.well-known/weftly-transcript-v2.schema.json); edit is a plain-text "[NNNN] words..." paragraph list, one line per paragraph, for editing by hand — send the edited text to edit_from_transcript to cut a re-timed video from it. Poll this periodically after calling complete_upload — wait at least 60 seconds between checks. For files under 10 minutes, jobs usually complete within 1-2 minutes. For long files (1hr+), expect 10-30 minutes. Derivative jobs (extract_clip, extract_vertical_clip, publish_youtube, clips_vertical, clips_horizontal, edit_from_transcript) have no upload step and no awaiting_upload/awaiting_complete_upload states — a paid derivative job reports processing once its parent source is confirmed still in storage, or a terminal source_expired if the parent source has expired: stop polling, and re-run the parent job named in source_job_id to get a fresh source before retrying. publish_youtube is the one exception: its upload starts by itself as soon as payment settles, so a paid job goes straight to publishing. If it reports awaiting_trigger instead, the upload did not start — almost always because the YouTube account is not connected yet; connect it and the publish can be resumed. A completed publish_youtube job's outputs array carries a youtube_url-roled entry with a url field pointing straight at the published video, instead of a download_url.

Also use this to recover from lost state: if the original challenge was lost, call get_job_status(job_id) to retrieve a fresh challenge (status "awaiting_payment") or the upload URL (status "awaiting_upload").

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoWhen the job is completed, return the transcript inline in this format instead of only a download URL. Options: "srt" (SubRip with timestamps), "txt" (plain text — no timestamps), "vtt" (WebVTT), "json" (v1, segments only), "words" (v2, segments + per-word timestamps matching /.well-known/weftly-transcript-v2.schema.json), "edit" (plain text, one "[NNNN] words..." line per paragraph — edit it and send it to edit_from_transcript to cut a re-timed video from it). Omit for download URLs only.
job_idYesThe job_id returned from a previous transcribe or summarize call.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it delivers: it discloses state values, the inline-vs-download_url output split, 1-hour URL expiry, expected completion times, derivative-job state exceptions, and the publish_youtube edge case. This is far richer than a generic status check.

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?

Long but dense and well front-loaded: the core status/output facts come first, followed by polling, derivative jobs, and recovery. Each paragraph has a distinct purpose with no filler, though it is somewhat wordier than necessary because it echoes format-enum details already present in the schema.

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 tool with no output schema, this description explains the output shape, role-keyed entries, state transitions, timing expectations, and failure recovery paths. An agent has everything it needs to call the tool correctly and interpret the result.

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 coverage is 100%, so the baseline is 3. The description adds real value by explaining that format returns transcript inline in a top-level field, describing derivation relationships (txt/vtt from SRT, json vs words), and noting job_id can recover a lost challenge or upload URL. It still partly repeats the schema's enum details, so it stops short of 5.

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?

Opens with a precise verb+resource: 'Check the status of a transcribe or summarize job', and immediately states what it returns (current state and outputs). It also explicitly covers derivative jobs and lost-state recovery, so an agent can distinguish it from siblings like complete_upload or clips_from_job.

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?

Provides explicit when-to-use guidance: poll after complete_upload, wait at least 60 seconds, use it to recover lost state, and understand how derivative jobs differ. It names the triggering workflow and gives concrete timing expectations, leaving no ambiguity about how to apply the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mpp_smoke_testAInspect

Smoke-test the MPP payment plumbing end-to-end via this MCP server, for $0.01 USDC. Two-call flow: (1) call with no arguments to receive an MPP payment_challenge; (2) pay via MPP and call again with payment_credential set to the resulting Authorization header value (e.g. "Payment eyJ...") to receive {paid: true, timestamp, receipt_ref, payment_method}. Uses the exact same createPayToAddress + createMppHandler verification path as paid product tools (transcribe, summarize), so a green run here means real paid calls will work too. Stateless — no job is created, no database row written. Use this whenever you want to confirm a wallet, the MCP transport, the worker, and the production payment middleware are all healthy without paying a transcribe price. Cost: $0.01 USDC per attempt.

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_credentialNoMPP payment credential (full Authorization header value, e.g. "Payment eyJ...") obtained by paying the challenge returned from the first call. Include to verify payment and receive {paid: true}. Omit on the first call.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: statelessness ('no job is created, no database row written'), the $0.01 USDC cost per attempt, the two-call protocol with expected responses, and the relationship to paid product tools. This is comprehensive and exceeds what annotations would typically provide.

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?

The description is relatively long but each sentence contributes meaningful information: the flow, cost, statelessness, and use case. While it could be tightened, the structure logically moves from purpose to flow to benefits, making it effective despite its length.

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?

The description is complete for the tool's complexity: it covers the two-call flow, expected response format, cost, side effects (none), and when to use it. No output schema exists, but the description describes the response structure ('{paid: true, timestamp, receipt_ref, payment_method}') so the agent knows what to expect.

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 already has 100% coverage for the single parameter, so the baseline is 3. The description adds value by explaining the credential's role in the two-call flow, providing an example format ('Payment eyJ...'), and explicitly stating to omit it on the first call. This enriches the schema's description without redundancy.

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 clearly states this is a smoke test for MPP payment plumbing, with a specific verb ('smoke-test') and resource ('MPP payment plumbing via this MCP server'). It distinguishes itself from sibling paid tools by explicitly noting it uses the same verification path as transcribe/summarize but costs only $0.01 USDC and creates no job.

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?

Explicit usage guidance is provided: 'Use this whenever you want to confirm a wallet, the MCP transport, the worker, and the production payment middleware are all healthy without paying a transcribe price.' It also explains the two-call flow, making it clear when and how to use it as an alternative to paid tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

summarizeAInspect

Summarize an audio or video file — returns both a text summary AND the full transcript (with per-word timestamps). Do not also call transcribe on the same file. Three-call flow: (1) call with filename to receive {job_id, payment_challenge}; (2) pay via MPP, then call with job_id + payment_credential to receive {upload_url} (presigned PUT, 1h expiry); (3) PUT the bytes, then complete_upload(job_id), then poll get_job_status(job_id). On completion, get_job_status returns three outputs: role summary (plain text), role transcript (SRT), and role transcript-words (JSON matching /.well-known/weftly-transcript-v2.schema.json, with segment-level and per-word timestamps). For other formats, pass format=srt|txt|vtt|json|words|edit to get_job_status to receive transcript content inline — txt and vtt are derived from SRT, json is v1 (segments only), words is v2 (segments + words), edit is a plain-text "[NNNN] words..." paragraph list for editing by hand. Flat price: audio $0.75, video $1.25 — see /.well-known/mpp.json for the authoritative table. Use for meetings, long-form interviews, lectures, and podcast episodes; the words output additionally supports creating clips, multicamera edits, or edit-video-from-transcript. Retrying any call with job_id alone returns current state (idempotent). Failed jobs auto-refund.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNoJob ID returned from a previous call. Include along with payment_credential to confirm payment and receive the presigned upload URL. Also include alone to recover the current challenge/state if the original response was lost.
filenameNoFilename with extension (e.g. "podcast.mp3"). Required on the first call — used to infer media type (audio vs video) and label outputs. Supported extensions: mp3, wav, m4a, ogg, flac, mp4, mov, webm, mkv.
payment_credentialNoMPP payment credential (full Authorization header value, e.g. "Payment eyJ...") obtained by paying the challenge returned from the first call. Include with job_id to verify payment and receive the upload URL.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the multi-step stateful flow (job creation, payment, upload, completion), the presigned PUT URL expiry (1h), idempotency on retry with job_id alone, and automatic refund on failed jobs. It also details the output structure (roles 'summary', 'transcript', 'transcript-words') and the format options. This level of transparency is exceptional and leaves no hidden side effects or prerequisites unstated.

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?

The description is a single, dense paragraph, but every sentence carries essential information: the core output, the warning against transcribe, the three-call flow, the output formats, pricing, and use cases. It is not concise in word count, but it is efficiently organized—front-loading the main purpose, then the procedural details, then pricing and use cases. No filler is present; the length is justified by the tool's complexity. A slightly structured list could improve scannability, but the content earns its length.

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 tool with a multi-step payment flow, multiple output formats, and a dependency on external endpoints (mpp.json, weftly-transcript-v2 schema), the description covers all necessary details: the exact sequence of calls, the payment mechanism, the upload URL expiry, the output roles, the format derivations, and the fallback for retries. There is no output schema, so the description must explain the return values, which it does comprehensively. An agent could successfully invoke this tool from the description alone.

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 input schema already documents each parameter (job_id, filename, payment_credential) with descriptions and formats (100% coverage). The description adds meaningful context beyond the schema by explaining the call flow—when each parameter is required (filename on first call, job_id+payment_credential on second) and the purpose of each step. It also enriches the filename parameter by listing supported extensions and clarifying that it infers media type. While the schema covers the syntax, the description adds the semantics of sequencing, which is valuable.

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 states a specific verb ('Summarize'), a specific resource ('an audio or video file'), and the dual output (text summary plus full transcript with per-word timestamps). It explicitly distinguishes itself from the sibling tool 'transcribe' by instructing 'Do not also call transcribe on the same file,' which clearly separates the two tools. The description also enumerates the output roles and formats, leaving no ambiguity about what the tool produces.

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?

The description gives explicit usage context: 'Use for meetings, long-form interviews, lectures, and podcast episodes' and notes when the 'words' output is beneficial (creating clips, multicamera edits). It also provides a clear when-not instruction ('Do not also call transcribe') and explains the full three-call flow, including the need for payment and upload, which is essential for correct invocation. This is far beyond a vague suggestion—it tells the agent exactly when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcribeAInspect

Transcribe audio or video to text, including per-word timestamps for precise editing. Three-call flow: (1) call with filename to receive {job_id, payment_challenge}; (2) pay via MPP, then call with job_id + payment_credential to receive {upload_url} (presigned PUT, 1h expiry); (3) PUT the bytes, then complete_upload(job_id), then poll get_job_status(job_id). On completion, get_job_status returns two outputs: role transcript (SRT) and role transcript-words (JSON matching /.well-known/weftly-transcript-v2.schema.json, with segment-level and per-word timestamps). For other formats, pass format=srt|txt|vtt|json|words|edit to get_job_status to receive content inline — txt and vtt are derived from SRT, json is v1 (segments only), words is v2 (segments + words), edit is a plain-text "[NNNN] words..." paragraph list for editing by hand. Flat price: audio $0.50, video $1.00 — see /.well-known/mpp.json for the authoritative table. Use for podcasts, interviews, meetings, lectures, and especially for creating clips, multicamera edits, or edit-video-from-transcript where word boundaries matter. Retrying any call with job_id alone returns current state (idempotent). Failed jobs auto-refund.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNoJob ID returned from a previous call. Include along with payment_credential to confirm payment and receive the presigned upload URL. Also include alone to recover the current challenge/state if the original response was lost.
filenameNoFilename with extension (e.g. "podcast.mp3"). Required on the first call — used to infer media type (audio vs video) and label outputs. Supported extensions: mp3, wav, m4a, ogg, flac, mp4, mov, webm, mkv.
payment_credentialNoMPP payment credential (full Authorization header value, e.g. "Payment eyJ...") obtained by paying the challenge returned from the first call. Include with job_id to verify payment and receive the upload URL.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral disclosure. It discloses the multi-step payment flow, presigned URL expiry (1h), idempotency ('Retrying any call with job_id alone returns current state'), auto-refund on failure, and details the exact output roles and formats. This is exceptionally transparent for a complex tool.

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?

The description is long but every sentence earns its place. It is front-loaded with the core purpose, then the flow, then formats, pricing, and edge cases. It avoids fluff and uses structured lists (numbered steps, pipe-separated formats). Slightly longer than minimal but appropriately dense for the tool's complexity.

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 the three-call flow, no output schema, and multiple formats, the description covers everything an agent needs: the exact call sequence, parameter usage, output formats via get_job_status, pricing table reference, idempotency, and refunds. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already has a description, but the tool description adds meaningful context beyond the schema: filename infers media type, payment_credential is the full Authorization header value, and job_id alone recovers state if the response was lost. It explains how each parameter fits into the three-call flow, substantially enriching semantics.

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-resource pair ('Transcribe audio or video to text') and immediately distinguishes itself by noting per-word timestamps for precise editing. It also names the three-call flow and output formats, clearly differentiating it from sibling tools like get_job_status or edit_from_transcript without requiring schema inspection.

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?

Explicitly lists use cases: 'podcasts, interviews, meetings, lectures, and especially for creating clips, multicamera edits, or edit-video-from-transcript where word boundaries matter.' It also prescribes the sequential calls to other tools (complete_upload, get_job_status). However, it does not explicitly state when NOT to use it or name an alternative tool for other cases, so it stops short of a 5.

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.

  1. 2 tool updates
    • Changedclips_from_job1 field changed
      • addedInput schema / properties / captions
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedclips_from_video1 field changed
      • addedInput schema / properties / captions
        Added value: +{
        +  "type": "boolean"
        +}
  2. 1 tool update
    • Removedpublish_to_youtube
  3. 10 tool updates
    • Addedclips_from_job
    • Addedclips_from_video
    • Removedclips_horizontal
    • Removedclips_vertical
    • Addededit_from_transcript
    • Removedextract_clip
    • Removedextract_vertical_clip
    • Changedget_job_status2 fields changed
      • changedInput schema / properties / format / description
        Previous value: -"When the job is completed, return the transcript inline in this format instead of only a download URL. Options: \"srt\" (SubRip with timestamps), \"txt\" (plain text — no timestamps), \"vtt\" (WebVTT), \"json\" (v1, segments only), \"words\" (v2, segments + per-word timestamps matching /.well-known/weftly-transcript-v2.schema.json). Omit for download URLs only."New value: +"When the job is completed, return the transcript inline in this format instead of only a download URL. Options: \"srt\" (SubRip with timestamps), \"txt\" (plain text — no timestamps), \"vtt\" (WebVTT), \"json\" (v1, segments only), \"words\" (v2, segments + per-word timestamps matching /.well-known/weftly-transcript-v2.schema.json), \"edit\" (plain text, one \"[NNNN] words...\" line per paragraph — edit it and send it to edit_from_transcript to cut a re-timed video from it). Omit for download URLs only."
      • changedInput schema / properties / format / enum
        Previous value: -[
        -  "srt",
        -  "txt",
        -  "vtt",
        -  "json",
        -  "words"
        -]New value: +[
        +  "srt",
        +  "txt",
        +  "vtt",
        +  "json",
        +  "words",
        +  "edit"
        +]
    • Removedget_youtube_publish_status
    • Removedtrigger_youtube_publish

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources