MCP server for GetTranscribe - AI-powered video transcription. Deployed on Cloudflare Workers with Streamable HTTP transport.
GetTranscribe MCP server demonstrates solid definition quality with consistent naming patterns, comprehensive parameter schemas, and clear descriptions across all 12 tools. All tools follow verb_noun naming convention (gettranscribe_list_*, gettranscribe_get_*, gettranscribe_create_*, gettranscribe_delete_*, gettranscribe_move_*, gettranscribe_download_*, gettranscribe_query_*). Tool descriptions range from 94-246 characters, within recommended bounds (10-1024 chars). All input parameters include type definitions and descriptions. However, there are notable gaps: (1) output schemas are not documented in the source, no response structure definitions visible; (2) error handling patterns are not evident in tool descriptions; (3) some tools expose api_key as an optional parameter despite server-side OAuth support, creating inconsistency in credential handling; (4) admin tools (gettranscribe_appstore_connect_request, gettranscribe_query_database, gettranscribe_describe_schema) have complex multi-parameter chains and documented workflows but lack explicit error recovery guidance. The admin SQL tools contain helpful guidance ('REQUIRED WORKFLOW') but stop short of error handling and retry patterns.
Admin only (user id 1 or 2). Send any HTTP request to Apple's App Store Connect API (https://api.appstoreconnect.apple.com). Pass a relative path such as /v1/apps, /v1/apps/{id}, /v1/salesReports, /v1/financeReports, etc. Auth (JWT ES256) is handled by the server — do not pass Apple credentials. Sales/finance report endpoints return gzip (application/a-gzip); this tool auto-decompresses them to TSV text — do not expect JSON for those. Use filter[…] and include query params as documented by Apple. GET for reads; POST/PATCH/DELETE for mutations (be careful — these change ASC data).
Create a new folder for organizing transcriptions
Initiate an async transcription job for a video URL (YouTube, Instagram, TikTok, etc.). Returns a job ID to poll.
Delete a folder (transcriptions are orphaned but not deleted)
Admin only (user id 1 or 2). START HERE before writing SQL. Step 1: call with no args to list every public table. Step 2: call again with table=<name> to see columns + indexes for that table. Then use gettranscribe_query_database with a SELECT that only uses those columns. Covers the full public schema (users, wallets, transcriptions, jobs, folders, webhooks, etc.). Read-only.
Output schemas not documented. Tool descriptions explain what tools do but do not specify the structure of returned data (field names, types, nested objects). LLMs cannot plan downstream tool calls or extract required fields without documented response schemas.
api_key parameter exposed as optional input across all tools despite OAuth support. Security best practice requires server-side secret injection only; exposing credentials as tool parameters risks logging them in agent traces and prompt history. The server supports OAuth but inconsistently requires manual api_key fallback.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | A | 83 | 2025-06-18+ | v2 |
| 2026-03-09 | C | 61 | 2025-06-18+ | v1 |
Download the original video file from a transcription. Returns a signed URL valid for 1 hour.
Fetch a single transcription by ID with full transcript text, metadata, word timestamps, and segments
Poll the status of an async transcription job. Returns status (pending, processing, completed, failed) and the transcription_id once completed.
List all user folders for organizing transcriptions
List user transcriptions with pagination and filtering
Move a transcription to a folder (or remove from folder if folder_id is null)
Admin only (user id 1 or 2). Run ONE read-only SELECT (or WITH … SELECT) against any public table. REQUIRED WORKFLOW: (1) gettranscribe_describe_schema with no args → pick tables, (2) describe_schema with table=<name> → confirm columns, (3) then call this tool. Do not guess column names. Mutations/DDL rejected. Auto LIMIT default 100 (max 500). TOAST safety: never SELECT * / transcription / original_transcription / segments / words / analysis blobs on transcriptions or transcription_demo for multi-row queries — use char_count, word_count, platform, created_at, etc. Heavy text only with WHERE id = <single id> when the user explicitly needs that row.
Admin-only tools (gettranscribe_appstore_connect_request, gettranscribe_describe_schema, gettranscribe_query_database) lack explicit permission gate documentation in descriptions. While the server-side code checks isMcpAdminUserId(), the tool descriptions should state 'Admin only (user_id 1 or 2)' to inform LLMs of access restrictions before attempting calls.
Error handling and recovery guidance absent. Tool descriptions do not specify what errors can occur (e.g., 'Transcription not found', 'Invalid URL', 'API rate limit') or how LLMs should respond. Descriptions lack actionable recovery patterns like 'Try gettranscribe_list_transcriptions to find the correct ID'.
gettranscribe_appstore_connect_request has ambiguous naming. The name does not clearly indicate what it does (proxies HTTP requests to Apple ASC). Descriptions are detailed but the verb 'appstore_connect_request' is not idiomatic. Consider: 'gettranscribe_call_appstore_connect_api' or 'gettranscribe_appstore_connect_api'.
Destructive operation (gettranscribe_delete_folder) has no confirmation or dry-run mechanism documented. Description states 'transcriptions are orphaned but not deleted' but provides no pre-deletion review option. Best practice: offer a preview or confirmation step for irreversible operations.