Skip to main content
Glama

ReelScribe MCP Server

An MCP (Model Context Protocol) server that connects AI assistants to ReelScribe — transcribe Instagram Reels, TikTok videos, and YouTube videos directly from Claude, Cursor, Windsurf, and other MCP-compatible clients.

Setup

Hosted connector (Cloudflare Workers)

The endpoint is https://reelscribe.app/api/mcp. Add it as a remote connector in Claude or as an MCP connection in ChatGPT developer mode, then sign in to your ReelScribe account and approve access. Directory publication is a separate review process.

Hosted transcription returns a requestId immediately. Use get_transcription with that ID to retrieve the transcript after processing; submitting a duplicate returns the existing transcript. Account administration is available on the website.

Deploying

  1. Deploy the accompanying ReelScribe API OAuth change, including the Convex includeRetention response on /admin/get-user-by-clerk-id.

  2. In the production Clerk instance, create and advertise the custom scope reelscribe:mcp, with consent text explaining permission to read transcripts and credit balance, and submit transcriptions that spend credits. Enable CIMD client onboarding, require S256 PKCE, and set the default scopes to reelscribe:mcp. For expanded workflows register an optional separate reelscribe:manage scope, retained under its existing name for compatibility. Its consent text must explain only batch/channel submissions that spend credits. Default scopes are reelscribe:mcp reelscribe:manage; a single-video client may request only reelscribe:mcp. Existing connections must explicitly approve the extra transcription permission on reconnect. Keep opaque access tokens enabled. Allow the intended clients to request the custom scope; enable DCR only for clients needing it.

  3. Authenticate Wrangler with permission to deploy Workers in the SIÁN account. If Wrangler lists multiple accounts, set CLOUDFLARE_ACCOUNT_ID to that account.

  4. Run bun run typecheck, bun test, bun run worker:build, then bun run worker:deploy.

  5. Verify /health, the public OAuth metadata, an unauthenticated /mcp 401 challenge, and the complete sign-in and transcription flow in both clients.

The branded URL is forwarded by the ReelScribe website to the existing Cloudflare Worker with branded=1, which selects matching OAuth resource metadata. The original https://reelscribe-mcp.sian-agency.workers.dev/mcp endpoint and its OAuth discovery remain available for existing connections. The domain is managed outside Cloudflare, so a direct Worker custom subdomain would require DNS changes.

The Worker holds no shared user API key or Clerk secret. It forwards each caller's token to ReelScribe's API, which verifies it with Clerk and resolves only that token's user. The base OAuth scope permits transcript, credit and job reads and single-video submission. Batch/channel submissions require separately granted reelscribe:manage consent. Despite its legacy name, this scope grants only transcription submission. Even existing management grants cannot access downloads, deletion, analytics or settings.

Local stdio setup remains available below.

1. Get an API Key

Sign up at reelscribe.app (25 free credits) and generate an API key from your API settings.

2. Configure Your MCP Client

Add to your MCP client configuration:

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "reelscribe": {
      "command": "npx",
      "args": ["-y", "reelscribe-mcp-server"],
      "env": {
        "REELSCRIBE_API_KEY": "rs_your_api_key_here"
      }
    }
  }
}

Claude Code (~/.claude.json or project .mcp.json):

{
  "mcpServers": {
    "reelscribe": {
      "command": "npx",
      "args": ["-y", "reelscribe-mcp-server"],
      "env": {
        "REELSCRIBE_API_KEY": "rs_your_api_key_here"
      }
    }
  }
}

Cursor (Settings > MCP):

{
  "mcpServers": {
    "reelscribe": {
      "command": "npx",
      "args": ["-y", "reelscribe-mcp-server"],
      "env": {
        "REELSCRIBE_API_KEY": "rs_your_api_key_here"
      }
    }
  }
}

Related MCP server: ytmcp

Available Tools

Tool

Description

transcribe_video

Submit a video URL (1 credit). Optional includeComments for Instagram, TikTok and YouTube. Hosted server returns a job ID; local server waits for the result.

get_transcription

Get a transcription by ID or requestId. Returns full transcript text.

list_transcriptions

List one page of your transcriptions (default 20, max 200), newest first. Status, platform, creator, date, job and request filters.

search_transcriptions

Find transcriptions by the original video URL, within a bounded recent window.

get_credits

Check credit balance, subscription tier, stored transcription count, and retention.

validate_url

Check if a URL is supported without submitting.

| transcribe_bulk | Submit a URL list (including URLs read from CSV); tier limits and 1 credit per new video apply. | | transcribe_instagram_channel | Paid Instagram channel scraping, 1–50 reels and optional date filter. | | list_jobs | Read progress and page through owned batch/channel jobs. |

The nine tools focus on transcription. Downloads, library management, retries, cancellation, analytics, settings and billing are available in the web app. Batch and channel submissions require an API key or explicit additional reelscribe:manage transcription consent; legacy base-only OAuth tokens cannot perform them. Facebook comments remain unsupported. The hosted 2.2.1 release does not publish the deferred npm release.

Comment extraction

Set includeComments: true on transcribe_video to request a selection of top comments alongside a new Instagram, TikTok or YouTube transcription. It is off by default and the total cost remains 1 credit. Pinned and creator comments are prioritized where available; YouTube does not expose a pinned flag. Facebook comment extraction is unsupported. This is not a full comment-thread export.

Completed results include a comments array with text, author, likes, isPinned and isCreator; it is null when no comments were returned. stats.comments is the video's total comment count, separate from those rows. Existing matching transcripts are reused as-is, without adding new comments.

{ "url": "https://www.youtube.com/watch?v=vXUPEow4Itw", "includeComments": true }

Pagination

list_transcriptions returns a page, never a whole library. Pass nextCursor back as cursor while hasMore is true to walk the rest.

The API does not report a library total, so this server does not invent one: libraryTotal is a number only when a response provably covers the entire result set (first page, no further pages), and null otherwise. For a library-wide figure, get_credits reports library.completedTranscriptions — itself a bounded count, flagged with library.isCapped when the real number is higher.

Transcripts in list results are 500-character previews with the full length in transcriptChars; call get_transcription with an id to read one in full.

Storage and retention

There is no storage quota. Per-tier count limits were retired on 2026-07-31 — a library is bounded by time instead, and get_credits reports the retention that applies to the account (unlimited while subscribed, a rolling window otherwise). Transcriptions created before the policy date are never auto-deleted.

Supported Platforms

  • Instagram — Reels, Posts (/p/), IGTV (/tv/)

  • TikTok — Videos, short links (vm.tiktok.com, vt.tiktok.com)

  • YouTube — Videos, Shorts, short links (youtu.be)

  • Facebook — Videos (/watch?v=, /videos/), Reels, short links (fb.watch)

Example Usage

"Transcribe this TikTok video: https://www.tiktok.com/@user/video/123456"

"Check my credit balance"

"List my completed transcriptions"

"Did I already transcribe this video? https://www.instagram.com/reel/ABC123/"

Pricing

  • Free: 25 credits on signup

  • Creator: $9.99/mo — 1,000 credits

  • Agency: $24.99/mo — 3,000 credits

  • Enterprise: $59.99/mo — 10,000 credits

Each transcription costs 1 credit. View pricing

Changelog

2.1.0

  • Optional includeComments on transcribe_video for Instagram, TikTok and YouTube, forwarded through the existing API without an extra credit charge.

  • Typed comment rows in retrieved transcripts; unsupported Facebook requests are rejected before creating a job.

2.0.0

Compatibility with the ReelScribe /v1 API changes of 2026-07-31. 1.0.5 and earlier report wrong numbers against the current API and should be upgraded.

Breaking:

  • list_transcriptions no longer reports total. That field became the length of the page when the endpoint went cursor-paginated, so 1.0.5 answered "how many transcriptions do I have?" with the page size — 100 for a library of 2,000 — and nothing in the response revealed it. Replaced by returned (this page), libraryTotal (a number only when the response covers everything, otherwise null), hasMore and nextCursor.

  • list_transcriptions returns 500-character transcript previews plus transcriptChars, not full transcript text. Use get_transcription for the full text.

  • get_credits no longer reports storage.limit. Per-tier storage caps were retired; the API now returns -1 ("no limit") for every tier, which rendered as "unlimited" and hid a real 30-day retention window. Replaced by library.completedTranscriptions / library.isCapped and a retention block.

Added:

  • cursor and limit parameters on list_transcriptions (default 20, max 200).

  • Facebook video and Reel URLs are validated locally, which the API has accepted all along — validate_url and transcribe_video used to reject them before a request was made.

  • search_transcriptions reports matchesReturned and states that its window is bounded, so found: false is no longer readable as "never transcribed".

License

MIT

Available Tools

9 tools
get_creditsA
Read-onlyIdempotent
Inspect

Check your ReelScribe credit balance, subscription tier, how many completed transcriptions are stored, and how long they are kept. Each transcription costs 1 credit. There is no storage quota — a library is bounded by time (see retention), not by a count limit. library.completedTranscriptions is a bounded count: when library.isCapped is true the real number is higher than the returned count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), but the description adds genuinely new behavioral context: there is no storage quota, the library is bounded by time via `retention`, and `library.completedTranscriptions` is a bounded count where `isCapped=true` means the real value is higher than reported. That last point is important data-accuracy disclosure an agent could not infer from the schema.

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-loads what the tool returns, then adds two short clarifying notes about cost and library capping. Four sentences with no filler, though the backticked field references (`retention`, `library.completedTranscriptions`, `library.isCapped`) get dense for a short description.

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?

There is no output schema, so the description carries the return-value burden, and it covers the main items (balance, tier, library counts, retention) plus the `isCapped` caveat. It does not sketch the full response shape or the format of the retention value, which is a minor gap for a simple no-arg read 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?

The tool takes zero parameters, so there are no parameter semantics to document and the baseline of 4 applies. The description correctly does not waste space on non-existent inputs.

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 (check) and enumerates the exact resources returned: credit balance, subscription tier, stored completed transcriptions, and retention duration. It is clearly distinguishable from the transcription-oriented siblings (transcribe_video, list_transcriptions, etc.) since no other tool exposes account/billing state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: mentioning 'Each transcription costs 1 credit' suggests calling this as a pre-flight affordability check. It never states when to prefer this over siblings or any condition where it should not be called, so guidance is implied rather than explicit.

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

get_transcriptionA
Read-onlyIdempotent
Inspect

Get a transcription by its ID or requestId. Returns the full transcription text and any extracted comments when completed, or status/error info if still processing or failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoTranscription ID
requestIdNoTranscription job request ID

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description adds genuinely non-redundant behavioral detail: the response shape varies by state (full text plus extracted comments when completed, status/error otherwise), which is important for an agent deciding whether to retry or poll. It does not note whether a lookup by a nonexistent ID errors or returns null.

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?

Two sentences, no filler. The retrieval contract is front-loaded and the state-dependent return behavior follows immediately; every clause earns its place.

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?

With no output schema, the description correctly carries the burden of explaining return values across states, and annotations cover the safety profile. The one real gap is that both parameters are optional (required: 0) yet the description never says what happens if neither is provided, nor whether it polls or fails while processing.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented as 'Transcription ID' and 'Transcription job request ID'. The description only restates that lookup is possible by either key, adding no syntax or precedence detail (e.g., which wins if both are supplied). Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (retrieve a transcription) and specifies the two lookup keys, which cleanly separates it from list_transcriptions and search_transcriptions. It stops short of naming a sibling explicitly or describing the broader transcribe workflow, so it earns a solid 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: call this after a transcription exists, using either the transcription ID or the job request ID. There is no explicit when-to-use/when-not guidance, no mention of alternatives such as list_transcriptions for discovering IDs, and no guidance on polling when the job is still processing.

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

list_jobsB
Read-onlyIdempotent
Inspect

List one page of batch/channel jobs or read progress for a specific bulk job ID. Results belong to the connected account.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
bulkJobIdNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered by structured data. The description adds two real behavioral facts — results are paginated one page at a time and are scoped to the connected account — but says nothing about ordering, cursor lifetime, or whether listing includes completed/failed jobs.

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?

Two short sentences, front-loaded with the core action and the mode distinction, with no filler. The trailing sentence about account scope is brief and purposeful, though slightly vague.

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

Completeness3/5

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

With no output schema and 0% schema description coverage, the definition should describe what a returned job record contains (status, type, timing) and how cursor pages terminate. It covers the action and scope but leaves the return payload opaque.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It implies bulkJobId selects a progress read, but never names 'cursor' or explains that it advances pagination, leaving one of two parameters unexplained in both schema and prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('List') plus resource ('batch/channel jobs') and distinguishes two modes: paging through jobs vs. reading progress for a specific bulkJobId. It is clear what the tool does, though it does not name any sibling by contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the presence of bulkJobId suggests a targeted progress read, while omitting it implies listing a page. There is no explicit 'use this when... use X instead' guidance and no mention of how it relates to siblings such as transcribe_bulk or get_transcription.

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

list_transcriptionsA
Read-onlyIdempotent
Inspect

List ONE PAGE of your transcriptions, newest first (default 20, max 200). The API does not report a library total. hasMore and nextCursor describe pagination; cursor selects a subsequent page. libraryTotal is populated only for a complete first-page result. Transcripts are returned as previews.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoRows per page (default 20, max 200)
ownerNoExact creator/channel name
cursorNo`nextCursor` from a previous call, to fetch the following page
statusNoFilter by transcription status
endDateNo
platformNo
bulkJobIdNo
startDateNoInclusive creation date, epoch milliseconds
requestIdFilterNoExact transcription request ID filter

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive, so the bar is lower; the description adds non-obvious behavior: no library total is reported, libraryTotal is populated only for a complete first-page result, and results come back as previews. These are genuine behavioral disclosures beyond the structured fields.

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?

Three dense sentences, all front-loaded with the most important constraint (ONE PAGE, newest first) first. Every sentence carries distinct information about pagination or return shape; no filler.

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?

With no output schema, the description helpfully characterizes the return payload (hasMore, nextCursor, libraryTotal, previews), which an agent needs to paginate correctly. It is nearly complete; only a few filter params (platform, bulkJobId, date range) go unexplained across both schema and description.

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

Parameters3/5

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

Schema coverage is 67%, so the schema documents most params. The description clarifies cursor's relationship to nextCursor and restates the limit default/max, but leaves owner, platform, bulkJobId, requestIdFilter and endDate to the schema (several of which have no schema description at all). It adds value on cursor but doesn't fully compensate for the uncovered params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('list your transcriptions') with a clear scope modifier (ONE PAGE, newest first). It does not, however, name or distinguish itself from sibling list/search tools like search_transcriptions, so an agent must infer the boundary rather than being told it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the pagination flow well ('cursor selects a subsequent page', 'hasMore/nextCursor describe pagination'), which implies how to iterate. But it gives no explicit when-to-use guidance versus search_transcriptions or get_transcription, and no when-not-to-use exclusions.

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

search_transcriptionsA
Read-onlyIdempotent
Inspect

Find transcriptions whose original video URL contains the given string. Returns the newest match in full, plus ids of any other matches. Useful for checking whether a video has already been transcribed. The search covers a bounded window of your most recent transcriptions and returns a capped number of matches, so found: false means "not found in that window" — it does not prove the video was never transcribed, and matchesReturned is not a library-wide count.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe video URL to search for

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral context: the search is scoped to a bounded window of recent transcriptions, results are capped, and thus `found: false` does not prove absence while `matchesReturned` is not a library-wide count. This directly prevents agent misinterpretation of results.

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-loads what the tool does, then the result shape, then the caveats, with no filler. The final clause is a dense run-on packing two distinct caveats, but both earn their place for a tool whose failure mode is a misleading empty result.

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, so the description carries the return contract itself: newest match returned in full plus ids of other matches, with explicit meaning for `found` and `matchesReturned`. Combined with annotations and a fully documented single param, nothing needed to call or interpret the tool is missing.

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

Parameters4/5

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

With one parameter at 100% schema coverage, the baseline is 3; however the description adds real semantics beyond the schema by specifying that matching is substring containment against the *original* video URL, not exact equality. That clarifies how to formulate the input value.

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 (find/search) plus resource (transcriptions) and the exact matching rule (original video URL contains the given string). It is clearly distinguishable from get_transcription (fetch a known one), list_transcriptions (enumerate), and transcribe_video (create one).

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?

Gives explicit usage context: 'Useful for checking whether a video has already been transcribed.' It even clarifies the semantics of a negative result, which is a usage-level caveat. It stops short of naming a sibling alternative or stating when-not-to-use, so it is strong but not a 5.

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

transcribe_bulkA
Destructive
Inspect

Submit up to 1,000 video URLs as a batch. The account tier sets the actual batch limit; each new video costs 1 credit. Existing transcripts are reused. Returns a bulk job ID. Requires an API key or additional batch transcription consent.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare the safety profile (destructiveHint=true, idempotentHint=false, openWorldHint=true) but say nothing about cost or consent. The description supplies the missing operational context: 1 credit per new video, tier-dependent batch ceiling, reuse of existing transcripts, and the API-key/consent gate. It does not explain what 'destructive' means here (credit consumption, job side effects) or how to track the returned job.

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?

Five short sentences, all carrying distinct information (limit, cost, reuse, return value, auth), with the core action front-loaded. Dense and waste-free, though slightly staccato and fragmentary.

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?

No output schema exists, so the description correctly states the return value ('a bulk job ID'). Combined with cost, reuse, tier limits, and the auth gate, an agent has what it needs to invoke correctly; only polling/status follow-up is unaddressed, and list_jobs sibling likely covers that.

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?

One parameter with 0% schema description coverage, so the description must compensate. It confirms the 1,000-URL ceiling (matching maxItems) and adds the credit cost per URL, but says nothing about URL validity constraints or what happens on partial failure within the array.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Submit ... video URLs as a batch') and the scale (up to 1,000), which signals it is the plural counterpart to transcribe_video without naming it. Clear enough to route correctly, but the sibling differentiation is implied by 'batch' rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'batch' implies when to use this over transcribe_video, and it names a prerequisite ('Requires an API key or additional batch transcription consent'), but it never states the condition for choosing bulk over single submission or when this tool should not be used.

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

transcribe_instagram_channelA
Destructive
Inspect

Transcribe up to 50 reels from an Instagram channel, optionally after a date. Paid plans only. Reserves 1 credit per requested reel under the same refund rules as the website. Requires an API key or additional batch transcription consent.

ParametersJSON Schema
NameRequiredDescriptionDefault
reelCountYes
channelUsernameYes
onlyPostsNewerThanNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, readOnlyHint=false and non-idempotency, and the description adds real behavioral context: 1 credit reserved per requested reel, refund rules, paid-plan gating, and the consent/API-key requirement. It still omits what happens on partial failure or how credits are refunded in edge cases, but it goes meaningfully 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the action and resource, with eligibility and cost details following. Every sentence carries distinct information; only the refund-rules clause is slightly opaque without further detail.

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 credit-consuming, non-idempotent batch tool with no output schema, the description covers limits, cost, eligibility, and consent requirements, which is most of what an agent needs before invoking. Return shape and pagination behavior are absent, but no output schema exists to lean on.

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

Parameters3/5

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

Schema coverage is 0%, so the description must carry the load. It does convey the reelCount cap ('up to 50 reels') and the optional date filter ('optionally after a date'), but it adds no format, pattern, or username-syntax detail for channelUsername or onlyPostsNewerThan. It partially compensates but leaves gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Transcribe ... reels from an Instagram channel') with a hard scope limit of 50. It is clearly distinguishable from get/list/search siblings by resource, though it does not explicitly contrast with the closely related transcribe_bulk or transcribe_video.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives useful eligibility conditions ('Paid plans only', 'Requires an API key or additional batch transcription consent') and the optional date scoping. However, it never states when to choose this over transcribe_bulk or transcribe_video, so the routing decision between siblings is left to inference.

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

transcribe_videoA
DestructiveIdempotent
Inspect

Submit a video URL for transcription and wait for the result. Supports Instagram Reels/Posts, TikTok videos, YouTube videos/Shorts, and Facebook videos/Reels. New jobs cost 1 credit. Existing matching transcripts may be reused without another charge. There is no storage quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesVideo URL (Instagram, TikTok, YouTube, or Facebook)
includeCommentsNoAlso extract top comments for Instagram, TikTok and YouTube, with pinned/creator comments first where available; not the full thread. Defaults to false. Facebook is unsupported. Total cost remains 1 credit; existing transcripts are reused without new comment extraction.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare openWorldHint, idempotentHint and destructiveHint, but the description adds genuinely new operational context: 1 credit per new job, free reuse of matching existing transcripts, and no storage quota. It does not explain what the destructiveHint implies (e.g. credit consumption or job side effects), leaving that annotation unexplained.

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?

Four short, front-loaded sentences that each carry information: purpose first, then supported platforms, then the two cost rules. Slightly compressed and no wasted clauses, though the cost/reuse lines sit after the platform list rather than being grouped.

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

Completeness3/5

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

For a tool that creates jobs, consumes credits and has no output schema, the description covers cost and reuse well but never says what is returned, how long the blocking wait may take, or how to fetch a transcript later. Those gaps are meaningful given the absence of an output schema, though existing transcripts being reused is well communicated.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (url and includeComments) are already fully documented in the schema. The description adds no extra parameter semantics, which is the expected baseline of 3 when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Submit a video URL for transcription and wait for the result') and enumerates the supported platforms (Instagram, TikTok, YouTube, Facebook), which concisely delimits scope. It does not name any sibling, so the split from get_transcription or transcribe_bulk must be inferred from the submit-vs-retrieve wording.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: an agent can infer it should call this to obtain a transcript for a single video URL. There is no explicit when-to-use / when-not-to-use guidance and no pointer to alternatives like get_transcription for retrieval or transcribe_bulk for multiple URLs.

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

validate_urlA
Read-onlyIdempotent
Inspect

Check if a URL is a supported video platform (Instagram, TikTok, YouTube, Facebook) without submitting for transcription. Returns the detected platform and normalized URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to validate

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description adds value beyond that by stating it has no transcription side effect and by disclosing the return shape (detected platform + normalized URL), which annotations do not convey.

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?

Two sentences, no filler, front-loaded with the validation purpose followed by the return values. Every clause earns its place.

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?

No output schema exists, so the description must summarize the response, and it does so explicitly (detected platform and normalized URL). Combined with the annotation-provided safety profile, an agent has everything needed to call it correctly.

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?

Only one parameter and schema description coverage is 100%, so the schema fully documents 'url'. The description adds nothing about format or accepted URL variants, so the baseline 3 applies.

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 (check/validate) applied to a specific resource (URL) and enumerates the supported platforms. It also distinguishes itself from the sibling transcribe_video by clarifying it does not submit for transcription.

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 phrase 'without submitting for transcription' clearly frames when to use this tool (pre-flight support check) rather than triggering a job. No explicit named alternative or when-not condition is given, but the context for use is unambiguous.

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. 9 tool updatesv2.2.1
    • First observedget_credits
    • First observedget_transcription
    • First observedlist_jobs
    • First observedlist_transcriptions
    • First observedsearch_transcriptions
    • First observedtranscribe_bulk
    • First observedtranscribe_instagram_channel
    • First observedtranscribe_video
    • First observedvalidate_url

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation4/5

Each tool has a distinct action/resource: single vs bulk vs channel transcription are clearly scoped by their descriptions, and get/list/search are separable by purpose. Minor potential confusion between list_transcriptions and search_transcriptions, but descriptions make the boundary clear.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (transcribe_video, get_transcription, list_transcriptions, search_transcriptions, validate_url, list_jobs, get_credits). transcribe_instagram_channel extends the pattern predictably.

Tool Count5/5

Nine tools is well-scoped for a transcription service covering single, bulk, and channel workflows plus retrieval, validation, job listing, and billing. No tool appears redundant.

Completeness4/5

Core lifecycle is covered: submit (single/bulk/channel), retrieve (get/list/search), validate URLs, track jobs, and check credits. Minor gap: no delete/cleanup or export operation for stored transcriptions, though time-based retention may make deletion unnecessary.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers