transcribe-mcp
# transcribe-mcp
Transcribe audio and video, and find the silence worth cutting — from any MCP client.
**No account, no API key, no subscription.** Your agent pays a fraction of a cent per call,
in USDC, straight from a wallet you control.
```json
{
"mcpServers": {
"transcribe": {
"command": "npx",
"args": ["-y", "transcribe-mcp"],
"env": { "TRANSCRIBE_MCP_WALLET_KEY": "0x..." }
}
}
}
```
That is the whole setup. There is nothing to sign up for.
## Tools
| tool | what it does | price |
|---|---|---|
| `transcribe_url` | a public audio/video URL → text, timings, detected language | **$0.05** |
| `find_dead_air` | subtitles or timings → the spans worth cutting, and what you'd save | **$0.002** |
| `shop_info` | prices, limits and how payment works | **free** |
`find_dead_air` eats exactly what `transcribe_url` returns, so the two chain:
transcribe a talk, then cut the silence out of it.
```
"cuts": [{ "from": 2.55, "to": 10.85, "seconds": 8.3, "reason": "silence" }],
"stats": { "sourceSeconds": 20, "speechSeconds": 5.05, "wouldSavePercent": 74.75 }
```
## Why pay-per-call instead of an API key
Because an agent cannot fill in a signup form. [x402](https://x402.org) is an HTTP-native
payment: the server answers `402 Payment Required` with a price, the client pays it, the
request goes through. No dashboard, no key rotation, no minimum, no monthly bill. If you
never call it, you never pay anything.
Settlement is USDC on **Base** (`eip155:8453`).
## Running it without a wallet
It starts fine. `shop_info` answers, `tools/list` works, and the paid tools tell you what
to set. Look before you fund anything.
## What it will not do
- **It will not overspend.** Every call is filtered through a $0.10 ceiling; a quote above
it is dropped and the client refuses to pay rather than guessing.
- **It will not charge you for a refusal.** Bad arguments are caught locally and never
leave your machine. A `4xx` from the shop never settles.
- **It will not lie about a sale.** If the settlement header is missing, it says so
instead of reporting a payment it cannot prove.
Files are capped at 800 KB. Oversized ones are refused for free, before payment.
## Configuration
| variable | meaning |
|---|---|
| `TRANSCRIBE_MCP_WALLET_KEY` | private key of a wallet holding a little USDC on Base. Required only for the paid tools. |
Use a **dedicated wallet with a few dollars in it**, not your main one. This is true of every
tool you hand a private key to, and it is true here.
## Tests
```
npm test
```
MIT.
TDQS
Scored across 3 tools
Each tool serves a completely distinct role: transcribe_url handles audio-to-text, find_dead_air post-processes timings to find silence, and shop_info provides pricing metadata. There is zero overlap in purpose.
Tool names follow a clear verb_noun pattern (transcribe_url, find_dead_air, shop_info) with snake_case. shop_info deviates slightly from the domain-action style of the others, but it is still predictable and readable.
Three tools is perfectly scoped for this server: a core action (transcribe), a derived analysis (find_dead_air), and informational helper (shop_info). No tool feels extraneous, and the count matches the narrow purpose well.
The tool surface covers the key transcription workflow and provides a helpful cost info tool. An obvious gap is the lack of an update or delete operation for transcripts, but for a consumption-oriented service this is reasonable. The surface feels complete for its intended use.