Sats4AI
Sats4AI is a remote MCP server providing 25+ AI-powered tools via Bitcoin Lightning micropayments — no signup, API keys, or KYC required.
AI Generation
🖼️ Generate images from text prompts (Flux, Stable Diffusion, etc.)
🎬 Generate videos from text prompts (async)
🎞️ Animate images into videos
💬 Generate text with AI language models (262K context, file attachments, vision support)
🎵 Generate music with AI vocals and optional lyrics
🧊 Convert photos to 3D GLB models
🖊️ Edit images with AI instructions
Audio & Speech
🗣️ Text-to-speech with multiple AI voices
📝 Transcribe audio to text in 13 languages
🎤 Clone a voice from an audio sample
📚 Convert books (EPUB/PDF/TXT) to AI-narrated audiobooks
Vision & Documents
👁️ Analyze image content using AI vision models
📄 OCR — extract text from PDFs and images
🔄 Convert files between 200+ formats
📎 Merge multiple PDFs into one
Communication
📧 Send emails to any address
📱 Send SMS worldwide
📞 Place automated phone calls with TTS or audio playback
Utility & Payment Management
📋 List available AI models and pricing
⚡ Create Lightning invoices for services
✅ Check payment status for a given payment ID
🔄 Check job status for async operations (video, 3D)
📦 Retrieve results from completed async jobs
Enables AI agents to interact with the Bitcoin Lightning Network to create and verify micropayments, facilitating programmatic access to various pay-as-you-go AI services.
sats4ai-mcp
The permissionless communication supercharger for AI agents. 40+ tools paid with Bitcoin Lightning. No signup, no API keys, no KYC.
A remote MCP (Model Context Protocol) server that gives AI agents access to AI phone calls in any language, voice in 602 languages, translation across 119, fax, SMS, transcription, audiobooks, image generation, music, document extraction, and more — all paid per-use with Lightning Network micropayments.
Quick Setup
Claude Desktop
Add to your claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"sats4ai": {
"url": "https://sats4ai.com/api/mcp"
}
}
}Claude Code
claude mcp add sats4ai --transport http https://sats4ai.com/api/mcpVerify the connection: ask the agent "list the first 3 Sats4AI models" — it should call list_models and return results. For agents that pay invoices autonomously, also add a Lightning wallet MCP (see Payment via Agent Wallets).
Cursor
Settings → MCP → Edit Config, then add:
{
"mcpServers": {
"sats4ai": {
"url": "https://sats4ai.com/api/mcp"
}
}
}Restart Cursor. In a new chat, ask "what Sats4AI tools are available?" to confirm tool discovery. For autonomous payments, pair with a Lightning wallet MCP (see Payment via Agent Wallets).
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json (create it if missing). Important: Windsurf uses serverUrl (not url) for remote HTTP MCP servers:
{
"mcpServers": {
"sats4ai": {
"serverUrl": "https://sats4ai.com/api/mcp"
}
}
}Restart Windsurf. Sats4AI tools appear in the Cascade tool list. Cascade has a 100-tool cap across all MCPs, so keep the active set lean. For autonomous payments, pair with a Lightning wallet MCP (see Payment via Agent Wallets).
stdio proxy (legacy MCP clients)
For clients that don't support remote HTTP servers, use the bundled stdio proxy:
npx sats4ai-mcpOr in your config:
{
"mcpServers": {
"sats4ai": {
"command": "npx",
"args": ["sats4ai-mcp"]
}
}
}Any MCP Client
The server URL is:
https://sats4ai.com/api/mcpThis is a remote HTTP server — no local process, no dependencies, no installation needed.
Related MCP server: PDF Reader MCP Server
What Can It Do?
Once connected, just ask your agent. These prompts exercise the full flow — discover, pay the Lightning invoice, get the result:
"Translate this paragraph to Spanish with Sats4AI — create the payment, pay the invoice with my lightning wallet, then run the translation."
"Check what an SMS to +33612345678 costs, then send it: 'Your appointment is confirmed for 3pm tomorrow.'"
"Generate an image of a lighthouse in a thunderstorm — pay the invoice and show me the result."
"Send an AI voice agent to call +14155551234 and reschedule my dentist appointment, then give me the transcript."
"Turn this EPUB into an audiobook — create the payment, then poll
check_job_statusuntil it's done.""Remove the background from this image."
"Transcribe this audio file, then translate the transcript to English."
"Get a quote for faxing this 3-page PDF to +4930123456, then send it."
Available Tools
AI Generation
Tool | Description | Price |
| Generate images from text prompts | 100-200 sats |
| Generate videos from text prompts | ~250-400 sats/sec by resolution (768p 250 / 2K 400) |
| Animate a still image into video | ~250-400 sats/sec by resolution (768p 250 / 2K 400) |
| Chat with AI language models (Kimi K3, 1M context, vision) | ~1 sat/10 chars (best) · ~1 sat/1000 (standard) |
| Translate text across 119 languages | from 1 sat/1000 chars |
| Translate into 452 languages frontier models don't serve — Bhojpuri, Maithili, Magahi, Manipuri, Quechua, Shan… each with a measured quality score | from 50 sats |
| Generate songs with AI vocals, or an instrumental (structure tags, no words) | 5 sats/sec, 15-300s (75-1,500 sats) · written lyrics +25 |
| Convert a photo to a 3D GLB model | 1,600 sats |
Translation price varies by language. The target language picks the engine, so a language served by a stronger model costs more than the standard 1 sat/1000 characters.
GET /api/languagesreturns the exact price, the model and its measured chrF score for every language, and the 402 challenge always quotes the real amount before you pay.
Audio & Speech
Tool | Description | Price |
| Text to speech (3 tiers, 602+ languages) | per-char, from 1 sat |
| Speech to text (13 languages) | 10 sats/min |
| Clone a voice from an audio sample | 7,500 sats |
| Convert books (EPUB/PDF/TXT) to AI-narrated audiobooks | 500+ sats |
| Translate a whole EPUB into another language — EPUB in, EPUB out, markup intact (async; | per character on the target language's engine rate, min 50 sats |
Image Processing
Tool | Description | Price |
| Remove background from any image (BiRefNet, SOTA) | 44 sats |
| Upscale images 2x/4x with Real-ESRGAN | 5 sats |
| Restore blurry/damaged faces (CodeFormer) | 25 sats |
| Colorize B&W photos (DDColor, ICCV 2023) | 5 sats |
| Remove camera-shake blur (NAFNet, ECCV 2022) | 110 sats |
| Typographic title card (PNG/JPEG) — deterministic layout, the text you send is the text that appears | 5 sats |
| Classify image safety (normal/suggestive/explicit) | 2 sats |
| Detect objects with bounding boxes (Grounding DINO) | 5 sats |
| Remove objects by description — no mask needed | 130 sats |
| Edit images with AI instructions | Dynamic (varies by model) — check |
Vision & Documents
Tool | Description | Price |
| Analyze and describe image content | 21 sats |
| Extract text from PDFs and images | 10 sats/page |
| Receipt to structured JSON | 25 sats/page |
| Convert between 200+ file formats | 100 sats |
| Merge multiple PDFs into one | 100 sats |
| HTML/Markdown to PDF | 50 sats |
| Sign a PDF with a typed or drawn signature | 1,000 sats |
| Airline boarding pass (PDF/screenshot) to a Google Wallet pass | 100 sats/pass |
Communication
Tool | Description | Price |
| Send email to any address | 200 sats |
| Send SMS worldwide | Dynamic (varies by destination) — |
| Place automated phone calls | Dynamic (varies by destination) — |
| Send an AI voice agent to make a two-way call | Varies by destination and duration — |
| Send a fax worldwide (PDF URL or typed text) | 500 sats (≤10 pages), +50 sats/page after |
| Open a 24h window to receive a fax, delivered to email | 500 sats (+200 OCR add-on) |
Helper Tools
Tool | Description |
| Browse available AI models and pricing |
| Get pricing for a specific model |
| Create a Lightning invoice for a service |
| Check if payment was received |
| Poll async jobs (video, 3D, audiobook, EPUB translation) |
| Get completed job results |
| Request a refund for a failed service |
| Upvote or downvote a planned service |
| See upcoming services and vote |
How It Works
Agent calls
list_modelsto discover available models and pricingAgent calls
create_payment— gets a Lightning invoicePayment is made via the agent's Lightning wallet (e.g., lightning-wallet-mcp)
Agent calls the tool (e.g.,
image,text) with thepaymentIdResult is returned — base64 image, text, URL, etc.
No API keys. No accounts. No rate limits tied to identity. Just Bitcoin and AI.
Error Handling & Refunds
When a paid tool fails after payment, the JSON-RPC error response includes refund information:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32603,
"message": "Image generation failed",
"data": {
"refund": {
"charge_id": 12345,
"refund_amount": 200,
"lnurl_withdraw": "lnurl1dp68gurn8ghj7..."
}
}
}
}Claim the refund using any LNURL-compatible wallet or the claim_lnurl_withdraw tool from lightning-wallet.
Errors also carry an error_code plus a recovery suggestion, an example, and — when the code is retryable — retry_after_seconds, in error.data. The same fields appear on a tool result with isError: true and on every FAILED final from await_result, so one vocabulary covers every path: branch on error_code, never on the error text. Payment-lifecycle codes: PAYMENT_NOT_FOUND (wrong paymentId), PAYMENT_PENDING (invoice not paid yet), PAYMENT_ALREADY_USED (each payment covers one call); a refunded failure reads L402_REFUND_ISSUED with the refund attached. Full catalog: GET https://sats4ai.com/api/error-codes.
Payment via Agent Wallets
Pair with a Lightning wallet MCP server so your agent can pay autonomously:
{
"mcpServers": {
"sats4ai": {
"url": "https://sats4ai.com/api/mcp"
},
"lightning-wallet": {
"command": "npx",
"args": ["lightning-wallet-mcp"]
}
}
}The agent uses lightning-wallet to pay invoices from sats4ai, enabling fully autonomous AI tool usage.
Block Buzz
Running Block Buzz, the open-source workspace where AI agents are first-class teammates? A Buzz agent is a Goose / Codex / Claude Code subprocess, and Buzz spawns it inheriting its MCP config — so this server works inside a Buzz workspace with no Buzz-specific setup.
The one-step path is the Sats4AI persona pack: it adds an @sats4ai teammate wired to this server plus a Lightning wallet, so it can look up a price, pay the invoice, and return the result in-channel.
git clone https://github.com/cnghockey/sats4ai-buzz-pack
buzz pack validate ./sats4ai-buzz-packWiring it by hand instead? Add sats4ai (and a wallet MCP) to whichever agent Buzz runs — its config carries straight over. Note that Buzz's .mcp.json is stdio-only, so use the npx sats4ai-mcp proxy form (shown above), not the remote url form.
L402 API
For direct HTTP integration without MCP, use the L402 API:
# Step 1: Request -> get 402 + Lightning invoice
curl -X POST https://sats4ai.com/api/l402/generate-image \
-H "Content-Type: application/json" \
-d '{"input": {"prompt": "a cat in space"}}' -i
# Step 2: Pay the invoice with any Lightning wallet
# Step 3: Re-send with proof
curl -X POST https://sats4ai.com/api/l402/generate-image \
-H "Content-Type: application/json" \
-H "Authorization: L402 <macaroon>:<preimage>" \
-d '{"input": {"prompt": "a cat in space"}}'Or skip the manual steps entirely: our L402 endpoints speak the standard L402 protocol, so lnget — Lightning Labs' own L402 client — pays them automatically. Point it at your Lightning node and call the endpoint:
lnget -X POST -d '{"text": "Hello", "targetLanguage": "Spanish"}' \
--content-type application/json --max-cost 50 \
https://sats4ai.com/api/l402/translate-text
# Fetches the 402, pays the invoice, retries, prints the result.Full L402 docs: sats4ai.com/l402 | Code examples: sats4ai-l402-examples
Service Discovery
Machine-readable endpoints for agent discovery:
# Full service catalog with pricing, quality benchmarks, and performance metadata
GET https://sats4ai.com/.well-known/l402-services
# MCP tool catalog with latency (p50/p95), reliability, and failure modes
GET https://sats4ai.com/api/mcp/discovery
# Semantic search — find tools by capability
GET https://sats4ai.com/api/discover?q=translate
# Per-service metadata with enums and input schemas
GET https://sats4ai.com/api/l402/{service}Every paid tool includes performance metadata (latency p50/p95, reliability rating, known failure modes) so agents can make informed decisions about which tools to call and how long to wait.
Programmatic Usage
const { SERVER_URL, TOOLS, getClaudeConfig } = require("sats4ai-mcp");
console.log(SERVER_URL); // "https://sats4ai.com/api/mcp"
console.log(TOOLS); // ["image", "video", "text", ...]
console.log(getClaudeConfig()) // { mcpServers: { sats4ai: { url: "..." } } }Security
Found a vulnerability? Do not open a public issue. Email sats4ai@gmail.com. See SECURITY.md for full disclosure policy and scope.
Links
Website: sats4ai.com
MCP Docs: sats4ai.com/mcp
L402 API Docs: sats4ai.com/l402
L402 Code Examples: github.com/cnghockey/sats4ai-l402-examples
Service Discovery: sats4ai.com/.well-known/l402-services
Semantic Search: sats4ai.com/api/discover
Security Policy: SECURITY.md
License
MIT
Available Tools
49 toolsai_callAInspect
When your task hits a wall that requires a human — booking, negotiating, navigating IVR menus, getting information from a business — send an AI voice agent to handle the call. The agent follows your instructions, has a real two-way conversation, auto-retries on voicemail (up to 3 attempts), and returns a full transcript with structured analysis. May return state='pending_confirm' with clarification questions if critical info is missing — call confirm_ai_call to proceed. Async — poll with check_job_status(jobType='ai-call'). ~150-250 sats for a 3-min US call. Languages: en-US, en-GB, es-ES, fr-FR, de-DE, ja-JP, zh-CN, multi. Pay with Bitcoin Lightning — no telecom account, no API key, no subscription. When NOT to use: not when you want to drive the conversation with your own LLM (use open_voice_bridge — you keep the brain, we provide PSTN/STT/TTS primitives). Not for one-shot TTS broadcasts or IVR delivery (use place_call). Not for SMS (use send_sms). Requires create_payment with toolName='ai_call', phoneNumber, and durationMinutes.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| phoneNumber | Yes | Phone number in E.164 format (e.g., +14155550100) | |
| task | Yes | Instructions for the AI agent (what to say, ask, or accomplish) | |
| durationMinutes | No | Max call duration 1-10 minutes (default: 3) | |
| language | No | Language the agent should speak to the called party. Pass this when you know the destination's preferred language (e.g. calling a French pizzeria → fr-FR, a Japanese restaurant → ja-JP). If omitted, we guess from the destination country: +33 → fr-FR, +49 → de-DE, +34 → es-ES, etc. Bilingual regions (Canada, Belgium, Switzerland, Singapore) and unknown countries default to en-US — override explicitly when you need a non-English language in those regions. Voice is auto-selected per language. | |
| beginMessage | No | Optional opening line for the agent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description fully discloses behavior: async polling via check_job_status, auto-retry on voicemail (up to 3), state='pending_confirm' requiring confirm_ai_call, cost range (~150-250 sats), languages, and payment method (Bitcoin Lightning). This is comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy (multiple paragraphs) but front-loaded with key purpose and usage. Every sentence adds value, making it more informative than verbose. However, it could be slightly more concise without losing detail. Still, it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and complexity (6 params, async, state machine, payment prerequisite), the description fully covers the workflow: async polling, required confirm_ai_call on pending_confirm, cost, languages, and exclusions. It leaves no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value beyond schema for the 'language' parameter (explains guessing logic and override cases) and 'task' (what constitutes instructions). The 'beginMessage' is also clarified. However, the schema already describes parameters well; the description provides incremental context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'send an AI voice agent to handle the call' for human-interaction tasks like booking, negotiating, and IVR navigation. It distinguishes from sibling tools (open_voice_bridge, place_call, send_sms) by specifying when NOT to use each alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when-to-use (human-required tasks) and when-not-to-use scenarios, naming specific sibling tools as alternatives (open_voice_bridge, place_call, send_sms). Also mentions prerequisite create_payment. This is exemplary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_imageAInspect
Analyze and describe image content, answer visual questions, extract information from screenshots or photos. Uses Qwen VL — multimodal vision-language model with strong OCR, chart reading, and spatial reasoning. 21 sats per image. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='analyze_image'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| prompt | Yes | Question or analysis prompt for the image | |
| imageBase64 | Yes | Base64 encoded image to analyze | |
| modelId | No | Optional. Omit for default model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It discloses payment requirement, model used, and capabilities, but does not detail failure modes, rate limits, or whether the operation is read-only (assumed from analysis). The cost and model information are valuable behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise (four sentences) and front-loaded with the core purpose. However, the sentence 'Uses Qwen VL — multimodal vision-language model with strong OCR, chart reading, and spatial reasoning.' could be slightly more concise without losing meaning. Overall, it efficiently communicates key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters (3 required) and no output schema, the description covers essential aspects: purpose, prerequisites (payment flow), model details, and parameter notes. It provides sufficient context for an AI agent to decide when and how to invoke the tool correctly, including the mandatory payment step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters have descriptions). The description adds value beyond the schema by explaining the payment requirement for 'paymentId', noting that 'modelId' is optional, and mentioning the model's capabilities (Qwen VL) which helps interpret the 'prompt' parameter. This enhances understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Analyze and describe image content, answer visual questions, extract information from screenshots or photos.' It also specifies the underlying model (Qwen VL) and its capabilities (OCR, chart reading, spatial reasoning), making it distinct from sibling tools like 'detect_objects' or 'generate_image'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the prerequisite: 'Requires create_payment with toolName='analyze_image'.' It also mentions cost (21 sats) and that no API key is needed. However, it does not explicitly differentiate when to use this tool versus other image-related tools (e.g., 'detect_objects', 'generate_image'), relying on the purpose to imply appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
animate_imageAInspect
Animate a still image into video with text guidance. Uses Grok Imagine Video — preserves source image fidelity while generating natural motion and camera movement. Async — returns requestId, poll with check_job_status. 100 sats/sec, duration 3-15 seconds. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='animate_image'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| prompt | Yes | Text prompt describing the animation | |
| modelId | No | Optional. Omit for default model. | |
| imageBase64 | Yes | Base64 encoded image to animate | |
| duration | Yes | Duration in seconds (3-15) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key traits: async polling, cost per second, duration range, Bitcoin Lightning payment, no API key needed. Lacks details on failure modes or image constraints, but covers major aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each providing distinct value: purpose, async nature, cost, and payment. No redundant or vague statements; highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, inputs, prerequisites, async behavior, cost, and duration. Lacks output format details (no output schema) and potential error conditions, but sufficient for an async tool with polling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already has 100% description coverage; the tool description adds value by explaining payment flow (create_payment with toolName) and duration range. This extra context aids the agent beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts a still image to video with text guidance, using a specific model. It distinguishes from siblings like generate_video by specifying 'animate a still image' and preserving source fidelity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: async behavior, prerequisite create_payment, and payment method. Does not explicitly list when not to use or alternatives, but the context is sufficient for typical usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_job_statusAInspect
Poll the status of an async job. Use this after calling any async tool (generate_video, animate_image, generate_3d_model, transcribe_audio, epub_to_audiobook, ai_call) that returns a requestId. Returns JSON: { status: 'queued' | 'processing' | 'completed' | 'failed', requestId, jobType }. For epub-audiobook, also includes progress (0-100) and chapterProgress array. Poll every 5-10 seconds. When status is 'completed', call get_job_result to retrieve the output. When status is 'failed', the response includes an error message — do not retry automatically. This tool is free and does not require payment. Do NOT use for synchronous tools (generate_image, generate_text, etc.) — those return results immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | The requestId returned by the async tool (e.g., from generate_video, animate_image, generate_3d_model, transcribe_audio, epub_to_audiobook, ai_call) | |
| jobType | Yes | Must match the async tool: video=generate_video, video-image=animate_image, image-3d=generate_3d_model, transcription=transcribe_audio, epub-audiobook=epub_to_audiobook, ai-call=ai_call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes response format with statuses, progress for epub-audiobook, and that it is free. No annotation provided, so description carries full burden. Missing auth or rate limit details, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with purpose first, then usage details. Slightly verbose but each paragraph adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a polling tool: covers all job types, next steps, progress details for specific case. No missing information for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds significant meaning beyond schema: explains requestId comes from async tools and gives mapping for jobType enum to tool names. Schema coverage is 100%, description enhances usability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Poll the status of an async job' with specific verb and resource. Lists which tools are async, distinguishing from synchronous siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (after async tools returning requestId), polling interval (5-10 seconds), and what to do on completion (get_job_result) or failure (do not retry). Also advises against use for synchronous tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_payment_statusAInspect
Check whether a Lightning invoice has been paid. Returns JSON: { status: 'paid' | 'pending' | 'expired', paymentId }. Call after create_payment to verify the user has paid before calling the target tool. Invoices expire after 10 minutes — if expired, create a new payment. Most MCP clients with a connected wallet pay instantly, so a single check is usually sufficient. This tool is free and does not require payment.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | The paymentId returned by create_payment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return JSON structure, expiry behavior, and that the tool is free and non-destructive. No annotations to contradict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences with no redundancy; first sentence states the core purpose immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description fully explains return format, lifecycle context (expiry, follow-up steps), and tool cost; complete for a simple check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes the parameter fully (the paymentId from create_payment). Description adds minimal extra meaning beyond the schema, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool checks if an invoice is paid, specifies return format with three statuses, and distinguishes from siblings by noting it is called after create_payment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit instructions: call after create_payment, before target tool; mentions 10-minute expiry and action if expired; notes instant payment in most clients.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_voiceAInspect
Clone any voice from a single audio sample. Returns a reusable voice_id for text_to_speech — speak in the cloned voice indefinitely. High-fidelity reproduction capturing tone, cadence, and accent. Turbo (faster) or HD (higher quality) modes. 7,500 sats per clone. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='clone_voice'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| voiceFileUrl | Yes | Public URL to audio file of the voice to clone | |
| model | No | Voice model: turbo (faster) or hd (higher quality) | speech-02-turbo |
| accuracy | No | Text validation accuracy 0-1 (default 0.7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. Discloses pricing, payment requirement, output type, and quality modes. Lacks details on file format constraints, duration limits, or error conditions, which would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences: purpose/output, quality modes, pricing/payment. Every sentence adds value, no fluff, front-loaded with most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main purpose, inputs, modes, payment requirement, and output type. No output schema, but description mentions voice_id. Missing file format and size constraints, but overall adequate for a tool with 4 parameters and 100% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 4 parameters described). Description adds context: explains paymentId must be paid, voiceFileUrl must be public, and model enum meanings. Goes beyond schema by explaining the payment flow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Clone any voice from a single audio sample' and describes the output as a reusable voice_id for text-to-speech. Distinguishes from sibling tools like text_to_speech by explicitly linking the output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies prerequisite: requires create_payment with toolName='clone_voice'. Mentions cost (7,500 sats) and payment method (Bitcoin Lightning). Provides context on model selection (Turbo vs HD) but does not explicitly state when not 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.
colorize_imageAInspect
Colorize black-and-white or grayscale photos. DDColor (dual-decoder, ICCV 2023) — vivid, natural colorization. Impossible for text/vision LLMs. 5 sats per image, pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='colorize_image'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| imageBase64 | Yes | Base64-encoded grayscale or B&W image (PNG, JPEG) or data URI | |
| model_size | No | Model variant: 'large' (best quality) or 'tiny' (faster). Default: large |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses cost (5 sats), payment method (Bitcoin Lightning, no API key), and prerequisite step. Does not mention rate limits or time estimates, but otherwise transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences with front-loaded purpose. No unnecessary words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers purpose, usage instructions, prerequisites, cost, and parameter details completely enough to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds context: specifies that paymentId must be valid/paid, imageBase64 should be Base64-encoded grayscale/B&W image, and explains model_size enum and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it colorizes black-and-white or grayscale photos, names the algorithm (DDColor), and highlights that it's impossible for text/vision LLMs, distinguishing it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-to-use guidance (colorizing B&W photos), mentions that it requires create_payment with toolName='colorize_image', and explains the pay-per-request model with Bitcoin Lightning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_ai_callAInspect
Confirm an AI call after reviewing push-back questions, optionally providing answers to missing info. Required when ai_call returns state='pending_confirm'. Uses the original payment — no new payment needed. Returns call_id for polling with check_job_status(jobType='ai-call').
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID from the ai_call response | |
| answers | No | Key-value answers to the push-back questions (keys are the question strings, values are your answers). Omit to confirm the task as-is. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the tool reuses the original payment and returns a call_id for polling. However, it does not mention whether it is a read or write operation or what happens on failure, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences cover action, prerequisite, payment implication, and return value with no wasted words. Each sentence serves a distinct purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the prerequisite, payment reuse, and return value for polling, which is sufficient given the tool's simplicity. It lacks details on error handling or alternative flows, but these are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds minimal semantic value beyond the schema. It repeats the sessionId and answers descriptions but does not introduce new parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool confirms an AI call after reviewing push-back questions, specifying the resource (AI call) and verb (confirm). It distinguishes from sibling ai_call by indicating it is used when state='pending_confirm'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context for when to use (when ai_call returns pending_confirm) and notes that no new payment is needed. It also mentions polling with check_job_status, but does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_fileAInspect
Convert files between 200+ formats: documents (PDF, DOCX, XLSX), images (PNG, JPG, WEBP, SVG), audio (MP3, WAV, FLAC), video (MP4, AVI, MOV). Industrial-grade conversion engine — preserves formatting and quality. Returns download URL. 100 sats. Pay per request with Bitcoin Lightning — no API key, no account, no subscription needed. Requires create_payment with toolName='convert_file'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| fileBase64 | No | Base64-encoded file (provide this OR fileUrl) | |
| fileUrl | No | Public URL to the file (provide this OR fileBase64) | |
| extensionFrom | Yes | Source format without dot (e.g., 'pdf', 'docx') | |
| extensionTo | Yes | Target format without dot (e.g., 'pdf', 'docx') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the conversion engine preserves formatting and quality and returns a download URL, giving moderate behavioral context. However, it omits details like file size limits, processing time, or error behavior that could be important for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five sentences, front-loaded with the core purpose, and each sentence adds distinct information: supported formats, engine quality, output type, cost, and payment requirement. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and no annotations, the description provides a solid overall picture: purpose, payment flow, and output format. It lacks details on error handling and limits, but for a straightforward conversion tool with a well-known interface, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all 5 parameters described. The description adds minimal parameter-level insight beyond the schema—it mentions paymentId requirement implicitly via '100 sats' but does not elaborate on fileUrl vs fileBase64 trade-offs. Baseline 3 is appropriate given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts files between 200+ formats, listing examples across document, image, audio, and video categories. It uses a specific verb-resource pair ('Convert files') and highlights the breadth of supported formats, but does not explicitly differentiate from sibling tools like convert_html_to_pdf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the payment model (100 sats per request, Bitcoin Lightning, no account needed) and instructs the user to call create_payment with toolName='convert_file'. It does not provide explicit when-not-to-use guidance or contrast with alternatives, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_html_to_pdfAInspect
Convert HTML or Markdown to a pixel-perfect PDF. Returns JSON: { url } — a temporary download URL (valid ~1 hour). Great for generating invoices, reports, receipts, or formatted documents programmatically. Supports full HTML/CSS including tables, images (base64 or URL), and inline styles. For Markdown input, set format='markdown'. 50 sats per conversion. Use convert_file instead for converting existing files between formats (e.g., DOCX→PDF). Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='convert_html_to_pdf'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| html | Yes | HTML or Markdown content to convert | |
| format | No | Input format (default: html) | html |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, but description fully discloses return format (JSON with temporary URL, 1-hour validity), cost (50 sats), payment requirement (create_payment), and input support (HTML/CSS, base64 images). Transparent about all behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is informative but slightly verbose; could be tightened. However, it is well-structured and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description fully explains return format. Covers all essential aspects: input, format, output, cost, prerequisites, and alternatives. Complete for a tool with simple parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema covers parameters 100%, description adds context: explains paymentId's origin, format options, and the purpose of html content. Also implies output structure beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts HTML or Markdown to PDF, with specific use cases (invoices, reports) and distinguishes from sibling tool convert_file for existing file conversions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use: generating documents, setting format='markdown' for Markdown. Also gives alternative: 'Use convert_file instead for converting existing files.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_paymentAInspect
Create a Lightning invoice to pay for one AI service call. Returns JSON: { paymentId, invoice (BOLT11), amount (sats), expiresAt }. Each payment covers exactly one tool call — call this once per operation. Typical flow: list_models → create_payment → check_payment_status → call tool. The invoice expires in 10 minutes. Call list_models first to discover modelId values. modelId is optional — omit it to use the default (best) model. Some tools require extra params at payment time because pricing depends on them: generate_text requires prompt (price = f(char count)); send_sms, place_call, ai_call require phoneNumber; generate_video requires duration, mode, generate_audio; animate_image requires duration (100 sats/sec); edit_image requires resolution (1K=200, 2K=300, 4K=450 sats). If required params are missing, the response includes an error with the missing field names.
| Name | Required | Description | Default |
|---|---|---|---|
| toolName | Yes | Tool name to pay for (e.g., 'generate_text', 'generate_image', 'generate_video', 'send_sms', 'place_call') | |
| modelId | No | Optional. AI model ID from list_models. Omit for default (best) model. | |
| prompt | No | Required for generate_text: the exact prompt (price calculated from char count, locked to payment) | |
| systemPrompt | No | For generate_text: include if using a custom system prompt (affects price) | |
| fileContext | No | For generate_text: include extracted file text if attaching a file (affects price) | |
| phoneNumber | No | Required for send_sms and place_call: phone in E.164 format (e.g., +14155550100) | |
| message | No | Required for send_sms: message text (max 120 chars) | |
| durationMinutes | No | Required for place_call with audioUrl: duration in minutes (1-30) | |
| duration | No | Required for generate_video: duration in seconds (3-15) | |
| mode | No | For generate_video: quality mode (default: 'pro'). standard: 300 sats/sec (no audio), 400 sats/sec (audio). pro: 450 sats/sec (no audio), 550 sats/sec (audio). | |
| generate_audio | No | For generate_video: include AI audio track (default: false). Adds 100 sats/sec. | |
| resolution | No | For edit_image: output resolution. 1K=200 sats, 2K=300 sats, 4K=450 sats. Default: 1K. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses return JSON structure, invoice expiration (10 minutes), error behavior for missing required params, and pricing dependencies for each target tool. Completely transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections for purpose, return values, workflow, expiration, and per-tool requirements. Slightly long but all content is necessary; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive coverage of all aspects: purpose, workflow, return values, expiration, error handling, and detailed conditional parameter requirements for each tool. No gaps given the complexity of 12 parameters and multiple dependent tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already has 100% description coverage for all 12 parameters. The description adds significant value by explaining why parameters are required (pricing formulas) and giving specific pricing rules per tool (e.g., generate_text price per char, generate_video modes with costs).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool creates a Lightning invoice for one AI service call. Immediately distinguishes from sibling tools like get_cost_estimate and check_payment_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the typical workflow (list_models → create_payment → check_payment_status → call tool) and advises to call once per operation. Also details when extra parameters are required based on the tool being paid for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deblur_imageAInspect
Recover detail from camera-shake and accidental motion blur. NAFNet (ECCV 2022, SOTA on GoPro/SIDD benchmarks). Best for: handheld shake, bumped camera, whole-frame uniform blur. NOT effective for: intentional panning blur, bokeh/depth-of-field, or artistic motion effects. Also supports denoising (grainy/noisy photos). 20 sats per image (~2 min processing), pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='deblur_image'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| imageBase64 | Yes | Base64-encoded blurry image (PNG, JPEG, WEBP) or data URI | |
| task_type | No | 'Image Debluring (GoPro)' for camera shake (default), 'Image Debluring (REDS)' for video frame blur, 'Image Denoising' for grain/noise |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses cost (20 sats), processing time (~2 min), payment method (Bitcoin Lightning), and prerequisite (create_payment). Does not mention file size limits or invalid image handling, but overall thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3-4 sentences), front-loaded with the main purpose, and each sentence provides necessary context without redundancy. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and a payment workflow, the description covers the core usage, cost, timing, and dependency on create_payment. Missing output format details, but acceptable for a processing tool with no structured output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining paymentId must be paid, specifying task_type defaults ('Image Debluring (GoPro)'), and clarifying the three options. This goes beyond the schema's enum descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool recovers detail from camera-shake and accidental motion blur, names the model (NAFNet), and lists both effective and ineffective scenarios, distinguishing it from sibling tools like 'upscale_image' or 'edit_image'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (handheld shake, bumped camera, whole-frame uniform blur) and when not to use (intentional panning, bokeh, artistic motion). Also mentions support for denoising and payment requirements, providing clear alternatives and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_nsfwAInspect
Classify image safety (normal / suggestive / explicit). Falcons.ai NSFW detection — 100x cheaper and faster than asking an LLM. Returns classification label and boolean is_nsfw flag. Essential for content moderation pipelines. 2 sats per image, pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='detect_nsfw'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| imageBase64 | Yes | Base64-encoded image (PNG, JPEG, WEBP) or data URI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description must cover behavior. It discloses cost (2 sats), payment flow, faster/cheaper than LLM, and returns label and boolean. Does not mention rate limits or destructive effects, but nothing contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise paragraph front-loads core function, then adds pricing and payment details. No redundant sentences; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, description explains return values. Covers use case, pricing, payment flow, and image format. Complete for a simple two-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both params. Description adds context: paymentId must be valid/paid, imageBase64 can be data URI or formats. Reinforces workflow requirement, adding marginal value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool classifies image safety into normal/suggestive/explicit, returns a label and boolean flag. It distinguishes itself from siblings like detect_objects by specifying NSFW detection and unique pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states use for content moderation pipelines and is cheaper/faster than LLM. Mentions payment requirement via create_payment. Lacks explicit when-not-to-use or alternative tools, but context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_objectsAInspect
Detect and locate objects in an image by name. Grounding DINO (open-set detector, ECCV 2024) — describe what to find in natural language, get bounding box coordinates and confidence scores. Structured pixel data agents can't get from vision LLMs. 5 sats per image, pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='detect_objects'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| imageBase64 | Yes | Base64-encoded image (PNG, JPEG, WEBP) or data URI | |
| query | Yes | Comma-separated object names to detect (e.g. 'cat, dog, person') | |
| box_threshold | No | Confidence threshold for detection boxes (0-1, default 0.25) | |
| text_threshold | No | Confidence threshold for text matching (0-1, default 0.25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses the model (Grounding DINO), the payment mechanism, and the type of output (bounding boxes, scores). However, it lacks detail on error handling, image size limits, or format restrictions beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. Each sentence adds value, though the payment instruction could be slightly more integrated. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, output type, payment model, and prerequisites. It lacks explicit error scenarios but is fairly complete given good schema coverage and no output schema. Minor gaps in behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description adds natural language context for the query parameter but does not elaborate on box_threshold or text_threshold beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool detects and locates objects by name, using Grounding DINO, and provides structured output (bounding boxes, confidence scores). This distinguishes it from sibling tools like 'analyze_image' or 'generate_image'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the payment flow (5 sats per image, Bitcoin Lightning, no signup) and the prerequisite 'create_payment'. It contrasts with vision LLMs but does not explicitly mention sibling tools like 'analyze_image' as alternatives or specify when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_imageAInspect
Edit an image with natural language instructions. Uses Nano Banana 2 — understands context, handles object addition/removal, style transfer, and inpainting. Returns JSON with image URL. Resolution-tiered pricing: 1K=200 sats, 2K=300 sats, 4K=450 sats. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='edit_image' and resolution param.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| prompt | Yes | Editing instructions describing what to change | |
| imageBase64 | Yes | Base64 encoded image to edit | |
| aspectRatio | No | Output aspect ratio (default: match_input_image) | match_input_image |
| outputFormat | No | Output format | jpg |
| resolution | No | Output resolution. 1K=200 sats, 2K=300 sats, 4K=450 sats | 1K |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description covers model used, return format (JSON with image URL), and pricing. Missing details on error handling, input constraints, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise with essential information upfront, but could be more structured (e.g., separate sections for usage, pricing, parameters).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Explains payment flow and resolution options, but lacks details on input image constraints, failure modes, and output schema. Adequate for a paid API tool with complex parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; description adds context about payment requirement and pricing beyond schema, but other parameters like prompt and imageBase64 are already adequately described in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Edit an image with natural language instructions' and lists specific capabilities (object addition/removal, style transfer, inpainting), distinguishing it from siblings like generate_image or remove_object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides payment flow instructions and resolution-tiered pricing, but does not explicitly specify when to use this tool vs. alternatives like remove_object or colorize_image.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
end_voice_bridgeAInspect
Hang up a Voice Bridge call, finalize billing, and return a LNURL-withdraw refund link for unused deposit time. Also returns the final transcript for convenience.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID from open_voice_bridge |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses side effects: finalizes billing, returns refund link for unused deposit, and returns final transcript. Good disclosure beyond basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, no unnecessary words. All information is essential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and no output schema, the description adequately covers all needed information: what the tool does and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for sessionId. Tool description adds no further detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Hang up', the resource 'Voice Bridge call', and additional actions like finalizing billing and returning refund link and transcript. It effectively distinguishes from siblings like 'open_voice_bridge'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage after starting a voice bridge call, but no explicit guidance on when not to use or alternatives. Could mention that polling might be needed before ending.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
epub_to_audiobookAInspect
Convert books (EPUB/PDF/TXT) to full audiobooks with automatic chapter detection, multi-voice narration, and optional translation to any language before narration. 3 voice tiers: OmniVoice Global (602+ langs, 100 chars/sat), Inworld Premium (#1 ranked TTS ELO 1217, 50 chars/sat), Minimax Studio (voice cloning from reference clip, 10 chars/sat). Min 500 sats. Async — returns jobId, poll until completed (5-60+ min). Single payment, full outcome — no multi-step orchestration required. Pay with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='epub_to_audiobook'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| epubBase64 | Yes | Base64-encoded book file (EPUB, PDF, or TXT) | |
| fileName | Yes | Original filename with extension (e.g., 'mybook.epub', 'document.pdf', 'story.txt'). Required to detect format. | |
| voice | No | Voice ID (e.g., Ashley, Deep_Voice_Man, Calm_Woman) | Ashley |
| language | No | Language boost (e.g., English, Spanish, French) | English |
| speed | No | Speech speed 0.5-2.0 | |
| modelId | No | Optional. 3 voice tiers: OmniVoice Global (602+ langs), Inworld Premium (#1 ranked), Minimax Studio (voice clone). Omit for default. | |
| selectedChapterIndices | No | Chapter indices to include (0-based). Omit to auto-select content chapters. | |
| translateToLanguage | No | Translate book to this language before narration. Accepts English names ('Spanish', 'Chinese (Simplified)') or ISO-639 codes / locale tags ('es', 'en-US', 'pt-BR'). Cost added to price. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers behavioral traits: async polling, payment via Bitcoin Lightning, voice tier options with rates, and translation cost. It also specifies the need for a prior create_payment call. Minor omissions: no mention of error handling or failure modes beyond polling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise, packing essential information into a few sentences. It front-loads the primary purpose and then elaborates on key details. Could be slightly tighter but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity and lack of output schema, the description provides sufficient context for an agent to understand the workflow: asynchronous execution, polling, payment integration, and voice tier trade-offs. It does not cover all edge cases but is adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented in the schema. The description adds value by explaining voice tiers and payment integration but does not provide substantial new semantics for individual parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts books (EPUB/PDF/TXT) into full audiobooks with features like chapter detection, multi-voice narration, and translation. It distinguishes itself from sibling tools like text_to_speech by offering a comprehensive conversion pipeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating audiobooks from text files and mentions payment requirements, but it does not explicitly state when to use this tool versus alternatives (e.g., text_to_speech) or provide constraints (e.g., file size limits).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_documentAInspect
Extract text from PDFs and images as clean Markdown. Uses Mistral OCR — handles complex layouts, tables, handwriting, multi-column documents, and mathematical notation. Preserves document hierarchy in structured Markdown. 10 sats/page. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='extract_document' and quantity=pageCount for multi-page PDFs.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| documentBase64 | Yes | Base64 encoded PDF or image | |
| modelId | No | Optional. Omit for default model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description discloses cost (10 sats/page) and payment flow, but lacks details on size limits, supported languages, error handling, or whether operation is destructive. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose, then capabilities, cost, and prerequisite. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key aspects: purpose, capabilities, cost, payment prerequisite. Lacks output format detail (though Markdown is mentioned) and error handling. No output schema to compensate, but overall sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds value by explaining the paymentId must be obtained via create_payment and that documentBase64 is base64 encoded, beyond schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it extracts text from PDFs and images as clean Markdown, specifying handling of complex layouts, tables, handwriting, etc. This distinguishes it from siblings like analyze_image or convert_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions prerequisite payment via create_payment with toolName and quantity, and that no API key is needed. Does not compare to alternatives like convert_file for document extraction, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_receiptAInspect
Extract structured data from receipts, invoices, and financial documents. Uses a dual-model pipeline (Mistral OCR + Kimi K2.5) for high-accuracy extraction. Returns JSON with merchant, date, line items, totals, tax, currency, and expense category. Handles crumpled receipts, faded text, and multi-page invoices. 50 sats/page. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='extract_receipt'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| documentBase64 | Yes | Base64 encoded receipt/invoice image or PDF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the dual-model pipeline (Mistral OCR + Kimi K2.5), capabilities (crumpled, faded, multi-page), pricing model, payment flow (requires create_payment), and authentication method (Bitcoin Lightning, no API key). This provides comprehensive behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but each sentence adds value. It is well-structured with clear information about purpose, process, and requirements. A slight reduction in wordiness could improve conciseness without losing essential detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description explains the return format (JSON with merchant, date, line items, etc.) and the overall pipeline. It covers cost, payment method, and limitations. For a 2-parameter tool, this is highly complete and leaves minimal ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds meaningful context: paymentId must be a valid paid payment from create_payment with toolName='extract_receipt', and documentBase64 is a base64-encoded image or PDF. This goes beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Extract structured data from receipts, invoices, and financial documents' and lists specific output fields (merchant, date, line items, etc.). It distinguishes itself from siblings like 'extract_document' by focusing on financial documents and mentioning the dual-model pipeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: handles crumpled receipts, faded text, and multi-page invoices. It also explains pricing (50 sats/page) and payment requirements. However, it does not explicitly tell when not to use this tool or compare with similar tools like 'extract_document'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_3d_modelAInspect
Convert a single photo into a textured 3D GLB model. Uses Seed3D — generates accurate geometry and materials from one image. Async — returns requestId, poll with check_job_status. 350 sats per model. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='generate_3d_model'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| imageBase64 | Yes | Base64 encoded image (PNG, JPEG, or WEBP) | |
| modelId | No | Optional. Omit for default model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: async operation (returns requestId), cost per model, payment requirement with Bitcoin Lightning (no API key needed), and the use of Seed3D technology. It does not cover error handling or rate limits, but the main behavioral traits are well specified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences) and front-loaded with the main action. Every sentence adds distinct information: purpose, technology, async nature, cost, payment method, and prerequisite. No wasted words, efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 params, async, payment flow) and no output schema, the description covers the primary use case, async polling, cost, and payment prerequisite. It sets expectations for output (GLB model, requestId) but omits error handling details. Overall, it is sufficiently complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value beyond schema: it clarifies that paymentId must be a paid valid ID (referencing create_payment), that imageBase64 should be a single photo in valid formats, and that modelId can be omitted for default. This enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Convert a single photo into a textured 3D GLB model.' It uses a specific verb (convert) and resource (photo to 3D model), and distinguishes from siblings by noting async behavior, cost, and payment requirement, which are unique among sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context: when to use (to generate a 3D model from a photo), async nature (poll with check_job_status), cost (350 sats), and payment method (requires create_payment). It does not explicitly state when not to use or list alternatives, but given no similar sibling tools, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageAInspect
Generate an image from a text prompt. Returns JSON with image URL. Models: Grok Imagine (fast creative generation, 100 sats), Seedream 4 (photorealistic detail, 150 sats), Nano Banana 2 (premium quality, 200 sats, default). Supports img2img with optional base64 input. Stable endpoints — models upgrade automatically as SOTA evolves. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='generate_image'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| prompt | Yes | Text prompt describing the image | |
| modelId | No | Optional. Omit for default (best) model. | |
| imageBase64 | No | Optional base64 image for img2img generation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses return format (JSON with URL), model upgrade policy, payment mechanism, and img2img capability. Lacks error handling or rate limit info, but is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact with four sentences, each providing essential information without redundancy. The main action is front-loaded, and model details are efficiently listed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 params, no output schema, and no annotations, the description covers key aspects: models, costs, payment, img2img, and automatic upgrades. It could mention expected output structure or error cases, but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds meaning: it explains modelId choices (Grok, Seedream, Nano Banana with costs) and clarifies that imageBase64 enables img2img. It also notes that paymentId must be paid, which is not in the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Generate an image from a text prompt,' clearly stating the verb (generate) and resource (image). It distinguishes from sibling tools like animate_image and upscale_image by specifying the output format and model options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: lists models with costs, mentions img2img, and explains payment requirement with explicit reference to create_payment. However, it does not explicitly state when to prefer this tool over siblings like generate_video or text_to_speech.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_musicAInspect
Generate full songs (up to 6 min) with natural AI vocals, BPM/key control (99%+ accuracy), and 14+ section tags for precise arrangement. Uses Music-2.6 — orchestral and traditional instruments, style-aware mixing. Specify BPM, key, genre, mood in prompt. Returns MP3 URL. 300 sats per song. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='generate_music'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| prompt | Yes | Music style with BPM, key, genre, mood, instruments (up to 2,000 chars). Example: 'E minor, 90 BPM, acoustic guitar ballad, male vocal' | |
| modelId | No | Optional. Omit for default model. | |
| lyrics | No | Song lyrics with section tags (up to 3,500 chars). Tags: [Intro], [Verse], [Pre Chorus], [Chorus], [Bridge], [Outro], [Solo], [Hook], [Drop], [Build Up], [Inst], [Interlude], [Transition], [Break], [Post Chorus] | |
| is_instrumental | No | Set true for instrumental-only (no vocals). When true, prompt is required, lyrics are ignored. | |
| lyrics_optimizer | No | Set true to auto-generate lyrics from prompt when lyrics are empty. | |
| sample_rate | No | Audio sample rate. Default: 44100 | |
| bitrate | No | Audio bitrate. Default: 256000 | |
| audio_format | No | Output format. Default: mp3 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, but the description discloses key behaviors: uses Music-2.6 model, returns MP3 URL, costs 300 sats, requires prepaid payment via Bitcoin Lightning. It does not mention error handling or rate limits, but covers essential traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences front-load the purpose and key features, then cover pricing and payment flow. No wasted words; efficient and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, model, output format, prerequisites, and cost. Missing error handling or async details, but for a direct generation tool with 9 parameters and no output schema, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions. The description paraphrases some parameters (e.g., 'Specify BPM, key, genre, mood in prompt') but adds no new meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates full songs with natural AI vocals, BPM/key control, and section tags. It distinguishes from sibling tools like text_to_speech by specifying song generation with vocal and arrangement capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use (specify BPM, key, genre, mood) and requires a payment step, but does not compare to alternatives or state when not to use the tool. Usage context is implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_textAInspect
Generate text using frontier AI language models. Pure per-character pricing (no minimum): Kimi K2.5 (id=6, best, 100 chars/sat, 262K context, vision support, default), GPT-OSS-120B (id=1, better, 333 chars/sat, strong reasoning), Qwen3-32B (id=26, standard, 1000 chars/sat, 119 languages, best value). Supports document Q&A via fileContext and vision analysis via imageBase64 (best model). Stable endpoints — models upgrade automatically. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='generate_text' and the exact prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| prompt | Yes | The text prompt or question | |
| modelId | No | Optional. Omit for default (best) model. | |
| systemPrompt | No | Optional system prompt | |
| maxTokens | No | Max tokens in response | |
| fileContext | No | Extracted file text to include as context | |
| fileName | No | Name of the attached file | |
| imageBase64 | No | Base64 data URI for vision analysis (best model only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. Discloses per-character pricing, model details, automatic upgrades, file/vision support, and payment requirements. Lacks failure modes or rate limits but is otherwise thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and key details; packed with info but slightly long. Could benefit from more structured formatting (e.g., bullet points) but remains clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and moderate complexity, description covers core usage, model options, prerequisites (payment), and special features like vision. Lacks output format info but sufficient for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3. Description adds context: explains model selection (default best), fileContext/imageBase64 usage for Q&A/vision, and paymentId role. Enhances schema understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specifically states 'Generate text using frontier AI language models' and lists distinct models with capabilities (document Q&A, vision), clearly differentiating from siblings like generate_image or transcribe_audio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly requires create_payment with toolName='generate_text' and exact prompt, and mentions no API key needed. Provides clear usage context but doesn't explicitly exclude scenarios or compare with siblings beyond listing features.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoAInspect
Generate a video from a text prompt. Uses Kling v3 — cinematic quality, consistent motion, physics-aware rendering. Standard and pro quality modes with optional AI-generated audio track. Async — returns requestId, poll with check_job_status. Pricing: standard 300-400 sats/sec, pro 450-550 sats/sec (audio adds 100 sats/sec). Duration 3-15 seconds. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='generate_video' and duration, mode, generate_audio params.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| prompt | Yes | Text prompt describing the video | |
| modelId | No | Optional. Omit for default model. | |
| duration | Yes | Duration in seconds (3-15) | |
| mode | No | Quality mode | pro |
| generate_audio | No | Include AI audio track |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively conveys key behavioral traits: async execution (returns requestId, poll with check_job_status), pricing per second, duration constraints, and dependency on payment. It does not cover error handling or full output format, but adds substantial value beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense paragraph that front-loads the core function. It covers purpose, features, async, pricing, and dependencies in about 5 sentences with no redundancy. Could benefit from bullet points for readability, but remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 params, async, no output schema), the description covers input constraints, pricing, and async polling. However, it does not describe the output format or error codes, leaving an incomplete picture. The polling hint partially mitigates, but a full output description is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so baseline is 3. The description enhances parameter semantics by explaining pricing implications of duration and mode, and noting that modelId is optional with a default. It also clarifies the payment flow via create_payment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate a video from a text prompt', specifies the model (Kling v3), and mentions key features like quality modes, audio, and async nature. It distinguishes from sibling tools like generate_image or animate_image by focusing on video generation from text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: when to use (for generating videos from text), payment prerequisites (requires create_payment), and polling (check_job_status). However, it lacks explicit comparisons to alternatives or exclusions, leaving some ambiguity against similar tools like animate_image.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cost_estimateAInspect
Get an exact sat cost quote for a service BEFORE creating a payment. Useful for budget-aware agents to price-check before committing. No payment required, no side effects. Pass service=text-to-speech&chars=1500, service=translate&chars=800, service=transcribe-audio&minutes=5, etc. Returns { amount_sats, breakdown, currency }. Omit params to see the full catalog of supported services.
| Name | Required | Description | Default |
|---|---|---|---|
| service | No | Service id (e.g. 'text-to-speech', 'translate', 'image', 'video', 'transcribe-audio', 'ocr'). Omit to list all services. | |
| model | No | Optional model id for services with multiple tiers | |
| chars | No | Character count — required for TTS and translate | |
| minutes | No | Audio length — required for transcribe-audio | |
| seconds | No | Video duration — required for video / video-from-image | |
| pages | No | Page count — for OCR (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states 'No payment required, no side effects' and 'Returns { amount_sats, breakdown, currency },' fully disclosing behavior and return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, each serving a purpose: purpose, use case, examples, return value, and omitting behavior. No redundancy, fully front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers return format, side-effect safety, and parameter usage patterns. For a query-only tool, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but description adds value by explaining parameter combinations (e.g., 'chars for TTS and translate') and the 'omit to list all' pattern, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get an exact sat cost quote for a service BEFORE creating a payment.' It specifies the verb, resource, and purpose, distinguishing it from sibling tools like create_payment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Useful for budget-aware agents to price-check before committing.' It provides concrete examples (e.g., 'Pass service=text-to-speech&chars=1500') and notes that omitting params lists all services. It lacks explicit when-not-to-use but is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_error_codesAInspect
Get the machine-readable catalog of all error codes this API can return (e.g. TIMEOUT, CONTENT_FILTERED, RATE_LIMITED, L402_REFUND_ISSUED, L402_AUTO_ROUTED). Agents should branch on error_code rather than parsing free-text messages. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that no payment is needed and the return type (machine-readable catalog). However, it does not mention potential side effects, caching behavior, or performance implications. For a simple read-only tool, this is acceptable but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the purpose, followed by examples and usage guidance. Every word adds value, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is complete: it explains what the tool returns (a catalog of error codes with examples) and how to use the output (branch on error_code). No additional context is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (by default, as no parameters exist). The description does not need to add parameter semantics, so baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a machine-readable catalog of all error codes the API can return, with specific examples (TIMEOUT, CONTENT_FILTERED, etc.). It distinguishes itself from any sibling by focusing solely on error code retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It advises agents to branch on error_code rather than parsing free-text messages, which is a clear usage directive. It also notes that no payment is required. However, it doesn't explicitly mention when not to use this tool or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_resultAInspect
Retrieve the final output of a completed async job. Call ONLY after check_job_status returns status='completed' — calling on a non-completed job returns an error. Returns JSON whose shape depends on jobType: video/video-image → { videoUrl, duration }; image-3d → { modelUrl } (GLB format); transcription → { text, language, segments }; epub-audiobook → { audioUrl, chapters }; ai-call → { transcript, duration, summary }. All URLs are temporary (valid ~1 hour) — download immediately. This tool is free and does not require payment. Do NOT use for synchronous tools — those return results directly.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | The requestId returned by the original async tool — same ID used with check_job_status | |
| jobType | Yes | Must match the async tool: video=generate_video, video-image=animate_image, image-3d=generate_3d_model, transcription=transcribe_audio, epub-audiobook=epub_to_audiobook, ai-call=ai_call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses error on non-completed jobs, URL expiry (~1 hour), free usage, and return shape per jobType. With no annotations, the description fully covers behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise (6 sentences), front-loaded with purpose, no redundancy. Every sentence adds unique value. Well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully covers return types, error conditions, URL lifespan, and free status despite no output schema or annotations. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters (100%). Description adds value by clarifying requestId's origin and mapping jobType to specific async tools, going beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieve the final output of a completed async job' and distinguishes from synchronous tools. It specifies the verb (retrieve), resource (final output), and precondition (job must be completed).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when to use: after check_job_status returns completed. States error if called early. Also excludes synchronous tools. Provides clear context for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_pricingAInspect
Get pricing for a specific model by ID. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
| modelId | Yes | The AI model database ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states it's a read operation and requires no payment, which is sufficient for a simple retrieval but lacks details like caching or authentication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, 11 words, front-loaded with purpose. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description is adequate. It does not explain return format but the context is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes 'modelId'. The description adds no extra meaning beyond 'by ID', so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'pricing for a specific model by ID', distinguishing it from siblings like 'list_models' and 'get_cost_estimate'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when pricing info is needed and notes 'No payment required', but provides no explicit when-to-use or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsAInspect
Discover available AI models with numeric IDs, tier labels, capabilities, and per-call pricing in sats. Call this before create_payment to find the right modelId for your task. Returns JSON array: [{ id, name, tier, description, price, isDefault, category }]. Models marked isDefault=true are used when you omit modelId from create_payment. Filter by category to narrow results to a specific tool. This tool is free, requires no payment, and is idempotent — safe to call repeatedly.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by service category (matches tool names) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It clearly states the tool is free, requires no payment, and is idempotent—safe to call repeatedly. It also describes the output format. This fully informs the agent of behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 4 sentences, front-loads the purpose, and uses a clear example of the output format. Every sentence adds essential information with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description provides a full example of the return format. It covers the purpose, usage, filtering, isDefault behavior, and safety aspects. Given the tool's simplicity (one optional parameter), the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the category parameter described. The description adds the context that filtering narrows results 'to a specific tool', which clarifies the enum values correspond to tool names, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Discover available AI models with numeric IDs, tier labels, capabilities, and per-call pricing in sats.' It distinguishes from sibling tools like create_payment and get_model_pricing by specifying its role in selecting a modelId and noting it is free and idempotent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises calling this tool before create_payment to find the right modelId, and explains how the isDefault flag works. It also mentions filtering by category. While it doesn't explicitly compare to other tools like get_model_pricing, the guidance is clear and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_planned_servicesAInspect
List all planned services with current vote counts. Returns JSON array: [{ slug, name, description, votes }], sorted by votes descending. No payment required — this is a free discovery tool. Use the slug values with vote_on_service to cast votes. This tool is idempotent and safe to call repeatedly.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses idempotence, safety, and no payment required. Also mentions sort order. No annotations provided, so description carries the full burden and does so adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four focused sentences, front-loaded with purpose, then output format, then guidance. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no required params and no output schema, the description covers output format, usage guidance, safety, and idempotence fully. It is complete for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, schema coverage is 100%. Description adds value by explaining output format and usage, which goes beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states it lists planned services with vote counts, returns a JSON array with specific fields, and differentiates from sibling vote_on_service by indicating that the slug values can be used with that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage guidance: no payment required, free discovery tool, and how to use results with vote_on_service. Lacks explicit when-not-to-use but is implied by the free nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_pdfsAInspect
Merge multiple PDF files into a single document. Preserves bookmarks, links, and formatting. Returns JSON: { url } — a temporary download URL (valid ~1 hour). Minimum 2 files, no maximum. Files are concatenated in array order. 100 sats per merge regardless of file count. Use convert_file instead if you need format conversion (e.g., DOCX→PDF). Pay per request with Bitcoin Lightning — no API key, no account needed. Requires create_payment with toolName='merge_pdfs'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| files | Yes | Array of base64-encoded PDF files (minimum 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully carries the burden. It discloses bookmark preservation, temporary URL, cost, concatenation order, and payment requirement. Minor omission: no error handling details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: first sentence states purpose, each subsequent sentence adds critical details without redundancy. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description fully explains return format, temporary URL, pricing, and alternative tool, making it sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by specifying base64 encoding, minimum files, and concatenation order, slightly improving clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Merge multiple PDF files into a single document' with specific verb and resource. It distinguishes from the sibling 'convert_file' by mentioning format conversion as an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: 'Use convert_file instead if you need format conversion'. Also provides constraints like 'Minimum 2 files, no maximum' and payment details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_voice_bridgeAInspect
Open a Voice Bridge session: a live phone call where YOUR LLM is the brain. Sats4AI provides PSTN + streaming STT + TTS as composable primitives. You decide when to speak (call voice_bridge_say), you read transcripts as they arrive (call poll_voice_bridge), you close the call when done (call end_voice_bridge). Unused deposit time is refunded via LNURL-withdraw. Use this when you want to keep your conversation context private and drive each turn yourself. When NOT to use: not for fully-managed agent-style calls where we handle the brain (use ai_call). Not for one-shot TTS broadcasts or IVR playback (use place_call). Not when live transcript polling adds no value — the per-turn overhead isn't worth it. Privacy: transcripts held in memory only, garbage-collected 30 minutes after the call ends; call audio is never persisted. Pay with Bitcoin Lightning — no telecom account, no signup. Requires create_payment with toolName='voice_bridge_open', phoneNumber, durationMinutes. Deposit: ~10 sats/min US, ~30 intl, ~80 rare.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID from create_payment (toolName=voice_bridge_open) | |
| phoneNumber | Yes | Destination phone number in E.164 format (e.g., +14155550100) | |
| language | No | BCP-47 language tag (default en-US). See /api/l402/voice-bridge/coverage for the matrix. | |
| durationMinutes | No | Deposit for N minutes, 2-30 (default 3). Unused time refunded. | |
| codec | No | PCMU 8kHz (default, universal) or L16_16000 for HD voice when both endpoints support it | |
| sttEnabled | No | Default true. Set false for TTS-only broadcast calls. | |
| ttsEnabled | No | Default true. Set false to bring-your-own-audio via voice_bridge_say. | |
| refundAddress | No | Lightning address for automatic refund of unused time |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses session lifecycle (speak, poll, end), refund mechanism, privacy policy (transcripts in memory, 30-min GC, no audio persistence), and payment method (Bitcoin Lightning). All critical behavioral traits covered despite no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but justified given complexity; front-loaded with purpose and usage, then details. Every sentence adds value, no waste. Could slightly condense, but effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites, payment, refund, privacy, and interaction pattern. No output schema, but description sufficiently explains the tool's role in a multi-step process. Missing explicit return value, but minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, baseline 3. Description adds context for paymentId (from create_payment), phoneNumber format, durationMinutes as deposit, refundAddress for refund, and language/codec options, raising usefulness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Open a Voice Bridge session: a live phone call where YOUR LLM is the brain.' with specific verb (open) and resource, and distinguishes from siblings ai_call and place_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (privacy, drive turns), when not to use (managed calls, TTS broadcasts, low-value polling), and prerequisites (create_payment).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_callAInspect
Bridge the digital-physical gap — place an automated phone call to deliver a spoken message or play audio to any number. Useful when your task requires notifying a human, delivering alerts, or reaching someone who isn't online. Pay with Bitcoin Lightning — no telecom account, no KYC, no subscription. Requires create_payment with toolName='place_call' and phoneNumber.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| phoneNumber | Yes | Phone number in E.164 format (e.g., +14155550100) | |
| message | No | Text to speak via TTS (max 500 chars). Provide this OR audioUrl. | |
| audioUrl | No | Public URL to audio file. Provide this OR message. | |
| durationMinutes | No | Duration in minutes (1-30). Required for audioUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions payment via Bitcoin Lightning and no account needed, but lacks details on failures, call duration behavior, or return status. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: catchy intro, use case, prerequisite. No fluff, front-loaded with purpose. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema and description of return value (e.g., call ID, status). For a tool with payment and telephony, expected output is important for agent workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions; description adds no new param details beyond restating message/audio choice. Baseline 3 justified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action: place an automated phone call to deliver spoken message or play audio. Distinguishes from siblings like ai_call and send_sms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (notifying humans, alerts, reaching offline) and prerequisite: requires create_payment. Does not explicitly state when not to use but gives clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_voice_bridgeAInspect
Fetch new transcript events from an open Voice Bridge call since the last cursor. Returns partial + final transcripts + system events. Agent should poll in a loop (~500ms-1s). No additional payment.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID from open_voice_bridge | |
| cursor | No | Last seq number seen (default 0 = start from beginning) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions returns types (partial + final transcripts, system events) and payment, but lacks disclosure on side effects, idempotency, or safety (e.g., read-only nature). Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: core function, return types, usage advice. No fluff, front-loaded with essential info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description explains return types but not structure details or error handling. Parameter count low, usage guidance provided. Lacks depth on potential empty returns or system events composition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 100% with descriptions. Description adds default for cursor (0) and origin of sessionId. Text clarifies polling behavior and cursor usage, exceeding schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description specifies the verb 'Fetch', resource 'transcript events from an open Voice Bridge call', and scope 'since the last cursor'. It clearly distinguishes from sibling tools like voice_bridge_say and end_voice_bridge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to poll in a loop at ~500ms-1s interval and notes no additional payment. Provides clear usage context but does not mention when not to use or contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
receive_faxAInspect
When you're expecting a fax back — bank confirmation, court filing, signed document — open a 24h receive window at our shared number +1 320 299 1523. Matched by caller ID (last 10 digits of the sender), delivered to your email as soon as it arrives. Optional OCR add-on (+200 sats) returns a searchable text file alongside the PDF — useful for feeding the content to an agent or archiving. Optional callback_url POSTs an HMAC-signed webhook on delivery so your agent doesn't have to poll. No refund if no fax arrives within the window (prevents subscription squatting). If OCR fails, an LNURL-withdraw for 200 sats is included in the delivery email for partial refund. Pay with Bitcoin Lightning — no dedicated fax number rental, no monthly subscription, no account.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| Yes | Email address to deliver the fax PDF to | ||
| fromNumber | Yes | Expected sender fax number in E.164 format (matched by last 10 digits of caller ID) | |
| ocr | No | Add OCR text extraction (+200 sats). Default: false. | |
| callback_url | No | Optional HTTPS webhook URL. POSTed (HMAC-signed) when fax is delivered. Public HTTPS only — no loopback/RFC1918. | |
| callback_id | No | Optional opaque correlation string (max 128 chars). Echoed in the webhook body. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully explains behaviors: 24h window, caller ID matching, email delivery, optional OCR with cost and partial refund on failure, callback webhook, no refund if no fax arrives, and Bitcoin Lightning payment. No contradictions with schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is several sentences long but every sentence adds value, covering use case, mechanism, optional features, and policy. It is well-structured and informative, though could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description explains the outcome (fax delivered to email, optional OCR file, webhook) but does not specify the immediate return value of the tool (likely a job ID or status). It covers all key aspects for a receive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 6 parameters are described in the schema (100% coverage), and the description adds significant additional meaning: explains fromNumber matching, OCR cost and failure handling, callback_url for webhook, and paymentId prerequisite. This goes well beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for receiving faxes, using a specific shared number with a 24-hour window. It distinguishes itself from sibling tools like send_fax by focusing on inbound reception.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use (expecting a fax back) and provides context like caller ID matching and email delivery. It does not explicitly exclude other use cases or recommend alternatives, but the scenario is clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_backgroundAInspect
Remove background from any image, returning transparent PNG. Uses BiRefNet (state-of-the-art, Papers with Code — Sm 0.901 on DIS5K). Handles hair, fur, glass, transparency, and complex edges. Stable endpoint — model upgrades automatically as SOTA evolves. 5 sats per image, pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='remove_background'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| imageBase64 | Yes | Base64-encoded image (PNG, JPEG, WEBP) or data URI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses model (BiRefNet), capabilities (hair, fur, glass, complex edges), stability, automatic upgrades, cost, and payment method. No annotations provided, so description fully covers behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is fairly concise with 6 sentences, each adding value (purpose, model, handling, stability, cost, prerequisite). Slightly verbose but no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters and no output schema, the description covers input constraints, model details, output format (transparent PNG), cost, and prerequisite. Fully adequate for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are described adequately in the schema. The description adds no additional meaning to the parameters, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'remove' and resource 'background from any image' with a specific outcome 'returning transparent PNG'. Distinct from siblings like 'remove_object' and 'edit_image'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly details the prerequisite payment process: 'Requires create_payment with toolName='remove_background''. Provides context like pay-per-request and no signup, but no explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_objectAInspect
Remove unwanted objects from images by describing what to remove — no mask needed. Combines Grounding DINO detection (ECCV 2024) with Bria Eraser inpainting. Just say 'person', 'car', or 'watermark' and the object is erased and filled convincingly. 15 sats per image, pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='remove_object'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| imageBase64 | Yes | Base64-encoded image (PNG, JPEG, WEBP) or data URI | |
| query | Yes | What to remove (e.g. 'person', 'car', 'watermark', 'text') | |
| box_threshold | No | Detection confidence threshold (0-1, default 0.25) | |
| text_threshold | No | Text matching threshold (0-1, default 0.25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses use of Grounding DINO and Bria Eraser, cost of 15 sats, pay-per-request with Bitcoin Lightning, no API key/signup needed, and requirement for create_payment. However, it doesn't mention image limitations or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences plus a payment instruction. It is concise but packs necessary details. Could be slightly tighter, but overall well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 5 parameters but no output schema. The description does not mention what the tool returns (likely base64 image) or if there is a job ID. Error handling and rate limits are absent. Given the complexity, more detail on return value and potential errors would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. Description adds value by giving examples for 'query', stating default thresholds of 0.25, and explaining that paymentId must be paid. This supplements the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Remove unwanted objects from images' with specific verb and resource. Examples like 'person', 'car', 'watermark' illustrate usage. It distinguishes from sibling tools like 'remove_background' by specifying text-based removal without masks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides when to use: 'just describe what to remove', and mentions no mask needed. It also explains pricing and payment flow. However, it does not explicitly state when not to use it (e.g., for complex edits) or compare with alternatives like 'edit_image'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_refundAInspect
Open a MANUAL 48-hour refund review ticket for a service that FAILED (error, timeout, wrong output). Sends an email to the operator. DO NOT call this for unused-minute refunds on metered services (ai_call, voice_bridge) — those are returned automatically as an LNURL-withdraw link in the service's own response under refund.lnurl_withdraw, no manual ticket needed. If you call this on a metered payment that already has a pending LNURL refund, this tool will detect it and return the existing LNURL instead of creating a duplicate ticket.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | The payment ID from a failed service call | |
| invoice | Yes | Lightning address (e.g., user@wallet.com) or bolt11 invoice for the refund | |
| No | Optional email address for follow-up | ||
| feedback | No | Optional description of what went wrong (max 2000 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool sends an email to the operator, has a 48-hour review period, and detects pending LNURL refunds to avoid duplicates, offering thorough behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose in the first sentence. The remaining sentences add crucial usage guidelines and behavioral quirks without redundancy, but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description provides comprehensive context: purpose, usage boundaries, alternative options, and unexpected behavior (duplicate detection). It fully equips the agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters fully. The description does not add new parameter-level meaning beyond what the schema provides, thus baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool opens a manual 48-hour refund review ticket for failed services, specifying the action and resource. It distinguishes from metered service refunds, providing clarity on scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (for failed services with error/timeout/wrong output) and when not to use (unused-minute refunds on metered services). Provides clear alternative: the LNURL withdraw link from the service's response, and explains duplicate detection behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_faceAInspect
Restore blurry, damaged, or AI-generated faces to sharp, natural quality. Uses CodeFormer (NeurIPS 2022, state-of-the-art FID 32.65 on CelebA-Test). Adjustable fidelity — balance between quality enhancement and identity preservation. Also enhances background and upsamples. Stable endpoint — model upgrades automatically as SOTA evolves. 5 sats per image, pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='restore_face'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| imageBase64 | Yes | Base64-encoded image containing faces (PNG, JPEG, WEBP) or data URI | |
| fidelity | No | Fidelity to input: 0.0 = max quality enhancement, 1.0 = max identity preservation (default 0.5) | |
| background_enhance | No | Also enhance the background (default true) | |
| face_upsample | No | Upsample restored faces (default true) | |
| upscale | No | Output upscale factor 1-4 (default 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses the underlying model (CodeFormer), adjustable fidelity, background enhancement, upsampling, stability, automatic upgrades, pricing, and payment process. This is comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is eight sentences, all adding value. It front-loads the main purpose and efficiently covers multiple aspects without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers purpose, usage, pricing, and payment. It lacks details on return format or limitations (e.g., max image size) but is sufficient for a paid tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mentions fidelity and enhancements but does not add new parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies 'restore blurry, damaged, or AI-generated faces to sharp, natural quality,' using a clear verb and resource. It distinguishes from siblings like deblur_image and upscale_image by focusing on faces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the payment requirement and fidelity adjustment. It implies use for face restoration but does not explicitly state when to avoid it or compare with alternatives. Sibling context is provided but not leveraged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailAInspect
Reach anyone with an email address — useful when your task requires formal communication, sending reports, or contacting someone outside chat. No SMTP server, no domain verification needed. Plain text, max 10,000 chars body, 200 chars subject. 200 sats. Pay with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='send_email'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| to | Yes | Recipient email address | |
| subject | Yes | Email subject (max 200 characters) | |
| body | Yes | Email body text (plain text, max 10,000 characters) | |
| replyTo | No | Optional reply-to email address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses plain text only, max lengths (10k body, 200 subject), cost (200 sats), payment method (Bitcoin Lightning), no SMTP/domain needed, and the prerequisite of create_payment. With no annotations, this provides good behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with purpose, then constraints, then payment details. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers prerequisites, constraints, and use cases, but does not mention return values or error handling. No output schema exists, so more context on expected output or errors would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions. The description adds context about the payment flow (requires create_payment with toolName='send_email') and reiterates limits, but does not significantly enhance parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool sends an email ('Reach anyone with an email address') and specifies its use for formal communication, reports, and contacting people outside chat, distinguishing it from siblings which are mostly multimedia tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly mentions when to use this tool (formal communication, reports, contacting outside chat) and implies that it's for email, but does not exclude alternatives or explain when not to use it. Given no other email tool exists, this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_faxAInspect
When your task requires a paper-trail on the other end — loan paperwork to a bank, signed contract to a notary, booking confirmation to a hotel in Japan — send a fax to any number worldwide. Two modes: 'pdf' (fetch from public URL) or 'text' (we format typed text into a PDF locally). Optional cover page. Pricing: 500 sats for up to 10 pages, +50 sats per additional page. Max 350 pages / 50 MB. Pass 'pages' to create_payment as 'quantity' to get the right invoice. Pay with Bitcoin Lightning — no fax machine, no phone line, no telecom account.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| phoneNumber | Yes | Destination fax number in E.164 format (e.g. +14155550100) | |
| mode | Yes | 'pdf' = send PDF from pdfUrl. 'text' = generate PDF from typed text. | |
| pdfUrl | No | Required for mode=pdf: public HTTPS URL returning application/pdf | |
| text | No | Required for mode=text: message text to format as PDF | |
| coverText | No | Optional cover page text (mode=pdf only, adds 1 page) | |
| pages | No | Expected page count (1-350). Used for pricing. Pass same value to create_payment as 'quantity'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: two modes, pricing (500 sats up to 10 pages, +50 per extra page), max limits (350 pages/50 MB), payment requirement via create_payment, and payment method (Bitcoin Lightning). It also clarifies no fax machine or phone line needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured paragraph. It front-loads purpose and use cases, then logically covers modes, cover page, pricing, limits, and payment. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, two modes, payment dependency, and no output schema, the description is complete. It covers when to use, how to use, pricing, limits, required parameters, and references the sibling create_payment tool for payment.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant meaning beyond the schema: clarifies the two modes, optional cover page usage, that pdfUrl must be a public HTTPS URL, and that pages is used for pricing and must match create_payment's quantity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a fax with two modes (pdf/text), optional cover page, and worldwide destination. It distinguishes from sibling tools like send_email and send_sms by emphasizing the need for a paper trail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete examples of when to use (loan paperwork, signed contract, booking confirmation) and states it works worldwide. However, it does not explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_smsAInspect
Reach a human via SMS when your task requires real-world coordination. Send to any phone number worldwide — messages delivered in seconds. No phone plan, no SIM card, no telecom account needed. Pay with Bitcoin Lightning — no API key, no KYC, no subscription. Requires create_payment with toolName='send_sms' and phoneNumber+message at payment time. The phoneNumber and message must match those used in create_payment.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| phoneNumber | Yes | Phone number in E.164 format (e.g., +14155550100) | |
| message | Yes | Message text (max 120 chars — 40-char disclaimer auto-appended) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full burden. It discloses delivery speed ('seconds'), no need for telecom accounts, payment via Bitcoin Lightning, and the auto-appended disclaimer. Missing details like error handling or delivery confirmation, but adequate for the tool's simplicity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at several sentences, each adding unique information. It front-loads the primary purpose and flow, followed by constraints. No redundant or vague statements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 required parameters, no output schema, and no annotations, the description covers the workflow, prerequisites, and key constraints (matching values, disclaimer). It does not describe return values, but that is acceptable without an output schema. Overall, it sufficiently informs an AI agent for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a description. The description adds value by clarifying that paymentId must be paid, phoneNumber/message must match create_payment, and the message length includes an appended disclaimer. This goes beyond the schema docstrings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends SMS messages for real-world coordination, distinguishing it from other communication tools like send_email or send_fax. The verb 'Reach a human via SMS' is specific and the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use (real-world coordination) and prerequisites (create_payment with matching parameters). However, it does not explicitly state when not to use or name alternatives, though the sibling list implies the tool is specialized for SMS.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_to_speechAInspect
Text-to-speech with 3 tiers: OmniVoice Global (602+ languages including Yoruba, Bengali, Cebuano, Twi, zero-shot voice cloning, 100 chars/sat — use 'language' parameter with ISO code), Inworld Premium (#1 ranked TTS ELO 1217, emotion control, 40+ languages, 50 chars/sat), Minimax Studio (voice cloning from reference clip, 40+ languages, 10 chars/sat). Adjustable speed (0.5-2.0x). Returns audio URL. Pay with Bitcoin Lightning — no API key or signup needed. When NOT to use: not for phone calls (use place_call for one-shot broadcasts, ai_call for AI voice agents, or open_voice_bridge to drive the call with your own LLM). For rare/underserved languages (Yoruba, Twi, Marathi, Cebuano, etc.), pick OmniVoice Global via language= — Inworld/Minimax don't cover these. Requires create_payment with toolName='text_to_speech'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| text | Yes | Text to convert to speech | |
| modelId | No | Optional. 3 tiers: OmniVoice Global (602+ langs, 100 chars/sat), Inworld Premium (#1 ranked, 50 chars/sat), Minimax Studio (voice cloning, 10 chars/sat). Omit for default. | |
| voice | No | Voice ID. 467 total voices. Use list_models to see available TTS models. Or paste a custom cloned voice ID. ## Minimax Studio — voice cloning from reference clip, 10 chars/sat (332 voices) ### Arabic (2) Arabic_CalmWoman (Female, Middle Aged, Serene, calm female); Arabic_FriendlyGuy (Male, Middle Aged, Warm, friendly male) ### Cantonese (6) Cantonese_ProfessionalHost (F) (Female, Middle Aged, Polished, professional female host); Cantonese_GentleLady (Female, Middle Aged, Gentle, refined female); Cantonese_ProfessionalHost (M) (Male, Middle Aged, Polished, professional male host); Cantonese_PlayfulMan (Male, Middle Aged, Fun, playful male); Cantonese_CuteGirl (Female, Young, Cute, endearing young female); Cantonese_KindWoman (Female, Middle Aged, Kind, warm female) ### Chinese (34) Chinese (Mandarin)_Reliable_Executive (Male, Middle Aged, Professional, dependable male); Chinese (Mandarin)_News_Anchor (Male, Middle Aged, Clear, authoritative news voice); Chinese (Mandarin)_Unrestrained_Young_Man (Male, Young, Free-spirited young male); Chinese (Mandarin)_Mature_Woman (Female, Middle Aged, Poised, mature female); Arrogant_Miss (Female, Young, Haughty, proud young female); Robot_Armor (Male, Middle Aged, Robotic, mechanical voice); Chinese (Mandarin)_Kind-hearted_Antie (Female, Old, Warm, caring older female); Chinese (Mandarin)_HK_Flight_Attendant (Female, Young, Professional, polished female); Chinese (Mandarin)_Humorous_Elder (Male, Old, Witty, humorous older male); Chinese (Mandarin)_Gentleman (Male, Middle Aged, Refined, courteous male); Chinese (Mandarin)_Warm_Bestie (Female, Young, Friendly, warm young female); Chinese (Mandarin)_Stubborn_Friend (Male, Young, Persistent, headstrong male); Chinese (Mandarin)_Sweet_Lady (Female, Middle Aged, Gentle, sweet female); Chinese (Mandarin)_Southern_Young_Man (Male, Young, Southern-accented young male); Chinese (Mandarin)_Wise_Women (Female, Middle Aged, Thoughtful, wise female); Chinese (Mandarin)_Gentle_Youth (Male, Young, Soft, gentle young male); Chinese (Mandarin)_Warm_Girl (Female, Young, Warm, inviting young female); Chinese (Mandarin)_Male_Announcer (Male, Middle Aged, Clear, authoritative announcer); Chinese (Mandarin)_Kind-hearted_Elder (Male, Old, Gentle, wise older male); Chinese (Mandarin)_Cute_Spirit (Female, Young, Cute, spirited young female); Chinese (Mandarin)_Radio_Host (Male, Middle Aged, Smooth, professional radio voice); Chinese (Mandarin)_Lyrical_Voice (Female, Middle Aged, Melodic, lyrical female); Chinese (Mandarin)_Straightforward_Boy (Male, Young, Direct, honest young male); Chinese (Mandarin)_Sincere_Adult (Male, Middle Aged, Genuine, sincere male); Chinese (Mandarin)_Gentle_Senior (Male, Old, Gentle, patient older male); Chinese (Mandarin)_Crisp_Girl (Female, Young, Clear, crisp young female); Chinese (Mandarin)_Pure-hearted_Boy (Male, Young, Innocent, pure-hearted young male); Chinese (Mandarin)_Soft_Girl (Female, Young, Soft, delicate young female); Chinese (Mandarin)_IntellectualGirl (Female, Young, Smart, intellectual young female); Chinese (Mandarin)_Warm_HeartedGirl (Female, Young, Warm, caring young female); Chinese (Mandarin)_Laid_BackGirl (Female, Young, Relaxed, laid-back young female); Chinese (Mandarin)_ExplorativeGirl (Female, Young, Curious, adventurous young female); Chinese (Mandarin)_Warm-HeartedAunt (Female, Middle Aged, Caring, nurturing aunt figure); Chinese (Mandarin)_BashfulGirl (Female, Young, Shy, bashful young female) ### Czech (3) czech_male_1_v1 (Male, Middle Aged, Confident, assured presenter); czech_female_5_v7 (Female, Middle Aged, Steady, reliable narrator); czech_female_2_v2 (Female, Middle Aged, Refined, elegant female) ### Dutch (2) Dutch_kindhearted_girl (Female, Young, Compassionate, kind young female); Dutch_bossy_leader (Male, Middle Aged, Commanding, bossy male) ### English (45) English_expressive_narrator (Male, Middle Aged, Expressive, dynamic narrator); English_radiant_girl (Female, Young, Bright, cheerful young female); English_magnetic_voiced_man (Male, Middle Aged, Rich, magnetic male voice); English_compelling_lady1 (Female, Middle Aged, Persuasive, engaging female); English_Aussie_Bloke (Male, Middle Aged, Casual Australian male); English_captivating_female1 (Female, Middle Aged, Alluring, captivating female); English_Upbeat_Woman (Female, Middle Aged, Upbeat, energetic female); English_Trustworth_Man (Male, Middle Aged, Reliable, trustworthy male); English_CalmWoman (Female, Middle Aged, Serene, relaxing female); English_UpsetGirl (Female, Young, Emotional, distressed young female); English_Gentle-voiced_man (Male, Middle Aged, Soft, gentle male voice); English_Whispering_girl (Female, Young, Soft, whispery young female); English_Diligent_Man (Male, Middle Aged, Focused, hardworking male); English_Graceful_Lady (Female, Middle Aged, Elegant, poised female); English_ReservedYoungMan (Male, Young, Quiet, reserved young male); English_PlayfulGirl (Female, Young, Fun, playful young female); English_ManWithDeepVoice (Male, Middle Aged, Deep, resonant male bass); English_MaturePartner (Male, Middle Aged, Mature, dependable male); English_FriendlyPerson (Male, Middle Aged, Warm, approachable male); English_MatureBoss (Female, Middle Aged, Commanding, authoritative female); English_Debator (Male, Middle Aged, Articulate, persuasive male); English_LovelyGirl (Female, Young, Sweet, charming young female); English_Steadymentor (Male, Middle Aged, Steady, mentoring male); English_Deep-VoicedGentleman (Male, Middle Aged, Distinguished, deep-voiced male); English_Wiselady (Female, Middle Aged, Thoughtful, wise female); English_CaptivatingStoryteller (Male, Middle Aged, Engaging, narrative male voice); English_DecentYoungMan (Male, Young, Polite, well-spoken young male); English_SentimentalLady (Female, Middle Aged, Emotional, heartfelt female); English_ImposingManner (Female, Middle Aged, Commanding, regal female); English_SadTeen (Male, Young, Youthful, melancholic teen male); English_PassionateWarrior (Male, Middle Aged, Fierce, passionate male); English_WiseScholar (Male, Old, Learned, scholarly male); English_Soft-spokenGirl (Female, Young, Quiet, gentle young female); English_SereneWoman (Female, Middle Aged, Peaceful, calm female); English_ConfidentWoman (Female, Middle Aged, Self-assured, bold female); English_PatientMan (Male, Middle Aged, Steady, reassuring male); English_Comedian (Male, Middle Aged, Humorous, comedic male); English_BossyLeader (Male, Middle Aged, Commanding, bossy male); English_Strong-WilledBoy (Male, Young, Determined, strong-willed young male); English_StressedLady (Female, Middle Aged, Tense, stressed female); English_AssertiveQueen (Female, Middle Aged, Bold, assertive female); English_AnimeCharacter (Female, Young, Animated, expressive narrator); English_Jovialman (Male, Middle Aged, Cheerful, jolly male); English_WhimsicalGirl (Female, Young, Dreamy, whimsical young female); English_Kind-heartedGirl (Female, Young, Compassionate, kind young female) ### Finnish (3) finnish_male_3_v1 (Male, Middle Aged, Cheerful, upbeat male); finnish_male_1_v2 (Male, Young, Friendly, approachable young male); finnish_female_4_v1 (Female, Middle Aged, Bold, assertive female) ### French (6) French_Male_Speech_New (Male, Middle Aged, Composed, level-headed male); French_Female_News Anchor (Female, Middle Aged, Patient, professional presenter); French_CasualMan (Male, Middle Aged, Laid-back, casual male); French_MovieLeadFemale (Female, Middle Aged, Dramatic, cinematic female); French_FemaleAnchor (Female, Middle Aged, Professional, clear anchor); French_MaleNarrator (Male, Middle Aged, Clear, engaging narrator) ### German (3) German_FriendlyMan (Male, Middle Aged, Warm, friendly male); German_SweetLady (Female, Middle Aged, Sweet, gentle female); German_PlayfulMan (Male, Middle Aged, Fun, playful male) ### Greek (3) greek_male_1a_v1 (Male, Middle Aged, Reflective, mentoring male); Greek_female_1_sample1 (Female, Middle Aged, Soft, gentle female); Greek_female_2_sample3 (Female, Young, Friendly, relatable female) ### Hindi (3) hindi_male_1_v2 (Male, Middle Aged, Reliable, trustworthy male); hindi_female_2_v1 (Female, Middle Aged, Peaceful, tranquil female); hindi_female_1_v2 (Female, Middle Aged, Clear, authoritative anchor) ### Indonesian (9) Indonesian_SweetGirl (Female, Young, Sweet, gentle young female); Indonesian_ReservedYoungMan (Male, Young, Quiet, reserved young male); Indonesian_CharmingGirl (Female, Young, Charming, attractive female); Indonesian_CalmWoman (Female, Middle Aged, Serene, calm female); Indonesian_ConfidentWoman (Female, Middle Aged, Self-assured female); Indonesian_CaringMan (Male, Middle Aged, Nurturing, caring male); Indonesian_BossyLeader (Male, Middle Aged, Commanding, bossy male); Indonesian_DeterminedBoy (Male, Young, Focused, determined young male); Indonesian_GentleGirl (Female, Young, Soft, gentle young female) ### Italian (4) Italian_BraveHeroine (Female, Middle Aged, Courageous, brave female); Italian_Narrator (Male, Middle Aged, Clear, professional narrator); Italian_WanderingSorcerer (Male, Old, Mystical, wandering character); Italian_DiligentLeader (Male, Middle Aged, Focused, diligent male) ### Japanese (15) Japanese_IntellectualSenior (Male, Old, Learned, intellectual senior); Japanese_DecisivePrincess (Female, Young, Bold, decisive young female); Japanese_LoyalKnight (Male, Middle Aged, Loyal, noble male); Japanese_DominantMan (Male, Middle Aged, Strong, commanding male); Japanese_SeriousCommander (Male, Middle Aged, Stern, authoritative commander); Japanese_ColdQueen (Female, Middle Aged, Icy, regal female); Japanese_DependableWoman (Female, Middle Aged, Reliable, steady female); Japanese_GentleButler (Male, Middle Aged, Polite, refined butler voice); Japanese_KindLady (Female, Middle Aged, Kind, warm female); Japanese_CalmLady (Female, Middle Aged, Serene, calm female); Japanese_OptimisticYouth (Male, Young, Cheerful, optimistic young male); Japanese_GenerousIzakayaOwner (Male, Middle Aged, Warm, generous male); Japanese_SportyStudent (Male, Young, Energetic, athletic young male); Japanese_InnocentBoy (Male, Young, Innocent, naive young male); Japanese_GracefulMaiden (Female, Young, Elegant, graceful young female) ### Korean (49) Korean_AirheadedGirl (Female, Young, Carefree, bubbly young female); Korean_AthleticGirl (Female, Young, Energetic, sporty young female); Korean_AthleticStudent (Male, Young, Active, sporty young male); Korean_BraveAdventurer (Male, Middle Aged, Bold, adventurous male); Korean_BraveFemaleWarrior (Female, Middle Aged, Fierce, brave female); Korean_BraveYouth (Male, Young, Courageous young male); Korean_CalmGentleman (Male, Middle Aged, Composed, calm male); Korean_CalmLady (Female, Middle Aged, Serene, calm female); Korean_CaringWoman (Female, Middle Aged, Nurturing, caring female); Korean_CharmingElderSister (Female, Middle Aged, Charming, elegant sister); Korean_CharmingSister (Female, Young, Attractive, charming female); Korean_CheerfulBoyfriend (Male, Young, Upbeat, cheerful young male); Korean_CheerfulCoolJunior (Male, Young, Cool, laid-back junior); Korean_CheerfulLittleSister (Female, Young, Happy, energetic young female); Korean_ChildhoodFriendGirl (Female, Young, Familiar, friendly female); Korean_CockyGuy (Male, Young, Confident, cocky young male); Korean_ColdGirl (Female, Young, Aloof, cool young female); Korean_ColdYoungMan (Male, Young, Reserved, cold young male); Korean_ConfidentBoss (Male, Middle Aged, Self-assured, commanding boss); Korean_ConsiderateSenior (Male, Middle Aged, Thoughtful, considerate male); Korean_DecisiveQueen (Female, Middle Aged, Bold, decisive female); Korean_DominantMan (Male, Middle Aged, Powerful, dominant male); Korean_ElegantPrincess (Female, Young, Refined, elegant young female); Korean_EnchantingSister (Female, Young, Enchanting, captivating female); Korean_EnthusiasticTeen (Male, Young, Eager, enthusiastic teen); Korean_FriendlyBigSister (Female, Middle Aged, Friendly, supportive sister); Korean_GentleBoss (Male, Middle Aged, Gentle, kind boss); Korean_GentleWoman (Female, Middle Aged, Soft, gentle female); Korean_HaughtyLady (Female, Middle Aged, Proud, haughty female); Korean_InnocentBoy (Male, Young, Innocent, naive young male); Korean_IntellectualMan (Male, Middle Aged, Smart, intellectual male); Korean_IntellectualSenior (Male, Old, Wise, intellectual senior); Korean_LonelyWarrior (Male, Middle Aged, Solitary, stoic male); Korean_MatureLady (Female, Middle Aged, Poised, mature female); Korean_MysteriousGirl (Female, Young, Enigmatic, mysterious young female); Korean_OptimisticYouth (Male, Young, Cheerful, optimistic young male); Korean_PlayboyCharmer (Male, Young, Suave, charming young male); Korean_PossessiveMan (Male, Middle Aged, Intense, possessive male); Korean_QuirkyGirl (Female, Young, Quirky, unique young female); Korean_ReliableSister (Female, Middle Aged, Dependable, reliable female); Korean_ReliableYouth (Male, Young, Dependable young male); Korean_SassyGirl (Female, Young, Bold, sassy young female); Korean_ShyGirl (Female, Young, Shy, reserved young female); Korean_SoothingLady (Female, Middle Aged, Calming, soothing female); Korean_StrictBoss (Male, Middle Aged, Stern, strict male boss); Korean_SweetGirl (Female, Young, Sweet, gentle young female); Korean_ThoughtfulWoman (Female, Middle Aged, Thoughtful, reflective female); Korean_WiseElf (Female, Young, Whimsical, wise character); Korean_WiseTeacher (Male, Old, Patient, wise teacher) ### Polish (4) Polish_male_1_sample4 (Male, Middle Aged, Clear, professional narrator); Polish_male_2_sample3 (Male, Middle Aged, Authoritative news anchor); Polish_female_1_sample1 (Female, Middle Aged, Serene, calm female); Polish_female_2_sample3 (Female, Middle Aged, Relaxed, casual female) ### Portuguese (73) Portuguese_SentimentalLady (Female, Middle Aged, Emotional, sentimental female); Portuguese_BossyLeader (Male, Middle Aged, Commanding, bossy male); Portuguese_Wiselady (Female, Middle Aged, Wise, thoughtful female); Portuguese_Strong-WilledBoy (Male, Young, Determined young male); Portuguese_Deep-VoicedGentleman (Male, Middle Aged, Distinguished, deep male); Portuguese_UpsetGirl (Female, Young, Emotional, distressed female); Portuguese_PassionateWarrior (Male, Middle Aged, Fierce, passionate male); Portuguese_AnimeCharacter (Female, Young, Animated, expressive character); Portuguese_ConfidentWoman (Female, Middle Aged, Self-assured female); Portuguese_AngryMan (Male, Middle Aged, Intense, angry male); Portuguese_CaptivatingStoryteller (Male, Middle Aged, Engaging narrator); Portuguese_Godfather (Male, Old, Gravelly, authoritative male); Portuguese_ReservedYoungMan (Male, Young, Quiet, reserved young male); Portuguese_SmartYoungGirl (Female, Young, Intelligent, bright young female); Portuguese_Kind-heartedGirl (Female, Young, Compassionate young female); Portuguese_Pompouslady (Female, Middle Aged, Grand, pompous female); Portuguese_Grinch (Male, Middle Aged, Grumpy, grouchy character); Portuguese_Debator (Male, Middle Aged, Articulate, persuasive male); Portuguese_SweetGirl (Female, Young, Sweet, gentle young female); Portuguese_AttractiveGirl (Female, Young, Attractive, alluring female); Portuguese_ThoughtfulMan (Male, Middle Aged, Reflective, thoughtful male); Portuguese_PlayfulGirl (Female, Young, Fun, playful young female); Portuguese_GorgeousLady (Female, Middle Aged, Beautiful, elegant female); Portuguese_LovelyLady (Female, Middle Aged, Lovely, charming female); Portuguese_SereneWoman (Female, Middle Aged, Peaceful, calm female); Portuguese_SadTeen (Male, Young, Melancholic, sad teen); Portuguese_MaturePartner (Male, Middle Aged, Mature, dependable male); Portuguese_Comedian (Male, Middle Aged, Humorous, comedic male); Portuguese_NaughtySchoolgirl (Female, Young, Mischievous young female); Portuguese_Narrator (Male, Middle Aged, Clear, professional narrator); Portuguese_ToughBoss (Male, Middle Aged, Hard-nosed, tough male); Portuguese_Fussyhostess (Female, Middle Aged, Particular, meticulous female); Portuguese_Dramatist (Male, Middle Aged, Dramatic, theatrical male); Portuguese_Steadymentor (Male, Middle Aged, Reliable, mentoring male); Portuguese_Jovialman (Male, Middle Aged, Cheerful, jovial male); Portuguese_CharmingQueen (Female, Middle Aged, Charming, regal female); Portuguese_SantaClaus (Male, Old, Jolly, festive character); Portuguese_Rudolph (Male, Young, Playful, festive character); Portuguese_Arnold (Male, Middle Aged, Strong, tough male character); Portuguese_CharmingSanta (Male, Old, Charming, festive character); Portuguese_CharmingLady (Female, Middle Aged, Charming, elegant female); Portuguese_Ghost (Male, Middle Aged, Eerie, spectral character); Portuguese_HumorousElder (Male, Old, Witty, humorous older male); Portuguese_CalmLeader (Male, Middle Aged, Composed, calm leader); Portuguese_GentleTeacher (Female, Middle Aged, Patient, gentle teacher); Portuguese_EnergeticBoy (Male, Young, Lively, energetic young male); Portuguese_ReliableMan (Male, Middle Aged, Dependable, reliable male); Portuguese_SereneElder (Male, Old, Peaceful, wise elder); Portuguese_GrimReaper (Male, Middle Aged, Dark, ominous character); Portuguese_AssertiveQueen (Female, Middle Aged, Bold, assertive female); Portuguese_WhimsicalGirl (Female, Young, Dreamy, whimsical female); Portuguese_StressedLady (Female, Middle Aged, Tense, stressed female); Portuguese_FriendlyNeighbor (Male, Middle Aged, Friendly, neighborly male); Portuguese_CaringGirlfriend (Female, Young, Loving, caring young female); Portuguese_PowerfulSoldier (Male, Middle Aged, Strong, powerful male); Portuguese_FascinatingBoy (Male, Young, Charming, fascinating young male); Portuguese_RomanticHusband (Male, Middle Aged, Romantic, loving male); Portuguese_StrictBoss (Male, Middle Aged, Stern, strict boss); Portuguese_InspiringLady (Female, Middle Aged, Motivating, inspiring female); Portuguese_PlayfulSpirit (Female, Young, Fun, playful young female); Portuguese_ElegantGirl (Female, Young, Refined, elegant young female); Portuguese_CompellingGirl (Female, Young, Engaging, compelling female); Portuguese_PowerfulVeteran (Male, Old, Experienced, powerful veteran); Portuguese_SensibleManager (Male, Middle Aged, Practical, sensible male); Portuguese_ThoughtfulLady (Female, Middle Aged, Reflective, thoughtful female); Portuguese_TheatricalActor (Male, Middle Aged, Dramatic, theatrical male); Portuguese_FragileBoy (Male, Young, Delicate, fragile young male); Portuguese_ChattyGirl (Female, Young, Talkative, bubbly female); Portuguese_Conscientiousinstructor (Male, Middle Aged, Careful, thorough instructor); Portuguese_RationalMan (Male, Middle Aged, Logical, rational male); Portuguese_WiseScholar (Male, Old, Learned, scholarly male); Portuguese_FrankLady (Female, Middle Aged, Direct, frank female); Portuguese_DeterminedManager (Male, Middle Aged, Focused, decisive manager) ### Romanian (4) Romanian_male_1_sample2 (Male, Middle Aged, Dependable, reliable male); Romanian_male_2_sample1 (Male, Young, Lively, energetic young male); Romanian_female_1_sample4 (Female, Young, Cheerful, optimistic female); Romanian_female_2_sample1 (Female, Middle Aged, Soft, gentle female) ### Russian (8) Russian_HandsomeChildhoodFriend (Male, Young, Charming, familiar young male); Russian_BrightHeroine (Female, Middle Aged, Bright, regal female); Russian_AmbitiousWoman (Female, Middle Aged, Driven, ambitious female); Russian_ReliableMan (Male, Middle Aged, Dependable, reliable male); Russian_CrazyQueen (Female, Young, Wild, unpredictable female); Russian_PessimisticGirl (Female, Young, Gloomy, pessimistic female); Russian_AttractiveGuy (Male, Young, Charming, attractive young male); Russian_Bad-temperedBoy (Male, Young, Irritable, short-tempered male) ### Spanish (47) Spanish_SereneWoman (Female, Middle Aged, Peaceful, calm female); Spanish_MaturePartner (Male, Middle Aged, Mature, dependable male); Spanish_CaptivatingStoryteller (Male, Middle Aged, Engaging narrator); Spanish_Narrator (Male, Middle Aged, Clear, professional narrator); Spanish_WiseScholar (Male, Old, Learned, scholarly male); Spanish_Kind-heartedGirl (Female, Young, Compassionate young female); Spanish_DeterminedManager (Male, Middle Aged, Focused, decisive manager); Spanish_BossyLeader (Male, Middle Aged, Commanding, bossy male); Spanish_ReservedYoungMan (Male, Young, Quiet, reserved young male); Spanish_ConfidentWoman (Female, Middle Aged, Self-assured female); Spanish_ThoughtfulMan (Male, Middle Aged, Reflective, thoughtful male); Spanish_Strong-WilledBoy (Male, Young, Determined young male); Spanish_SophisticatedLady (Female, Middle Aged, Elegant, sophisticated female); Spanish_RationalMan (Male, Middle Aged, Logical, rational male); Spanish_AnimeCharacter (Female, Young, Animated, expressive character); Spanish_Deep-tonedMan (Male, Middle Aged, Deep, resonant male); Spanish_Fussyhostess (Female, Middle Aged, Particular, meticulous female); Spanish_SincereTeen (Male, Young, Honest, sincere teen); Spanish_FrankLady (Female, Middle Aged, Direct, frank female); Spanish_Comedian (Male, Middle Aged, Humorous, comedic male); Spanish_Debator (Male, Middle Aged, Articulate, persuasive male); Spanish_ToughBoss (Male, Middle Aged, Hard-nosed, tough male); Spanish_Wiselady (Female, Middle Aged, Wise, thoughtful female); Spanish_Steadymentor (Male, Middle Aged, Reliable, mentoring male); Spanish_Jovialman (Male, Middle Aged, Cheerful, jovial male); Spanish_SantaClaus (Male, Old, Jolly, festive character); Spanish_Rudolph (Male, Young, Playful, festive character); Spanish_Intonategirl (Female, Young, Expressive, melodic young female); Spanish_Arnold (Male, Middle Aged, Strong, tough male character); Spanish_Ghost (Male, Middle Aged, Eerie, spectral character); Spanish_HumorousElder (Male, Old, Witty, humorous older male); Spanish_EnergeticBoy (Male, Young, Lively, energetic young male); Spanish_WhimsicalGirl (Female, Young, Dreamy, whimsical female); Spanish_StrictBoss (Male, Middle Aged, Stern, strict boss); Spanish_ReliableMan (Male, Middle Aged, Dependable, reliable male); Spanish_SereneElder (Male, Old, Peaceful, wise elder); Spanish_AngryMan (Male, Middle Aged, Intense, angry male); Spanish_AssertiveQueen (Female, Middle Aged, Bold, assertive female); Spanish_CaringGirlfriend (Female, Young, Loving, caring young female); Spanish_PowerfulSoldier (Male, Middle Aged, Strong, powerful male); Spanish_PassionateWarrior (Male, Middle Aged, Fierce, passionate male); Spanish_ChattyGirl (Female, Young, Talkative, bubbly young female); Spanish_RomanticHusband (Male, Middle Aged, Romantic, loving male); Spanish_CompellingGirl (Female, Young, Engaging, compelling female); Spanish_PowerfulVeteran (Male, Old, Experienced, powerful veteran); Spanish_SensibleManager (Male, Middle Aged, Practical, sensible male); Spanish_ThoughtfulLady (Female, Middle Aged, Reflective, thoughtful female) ### Thai (4) Thai_male_1_sample8 (Male, Middle Aged, Peaceful, calm male); Thai_male_2_sample2 (Male, Middle Aged, Warm, friendly male); Thai_female_1_sample1 (Female, Middle Aged, Self-assured female); Thai_female_2_sample2 (Female, Young, Lively, energetic female) ### Turkish (2) Turkish_CalmWoman (Female, Middle Aged, Serene, calm female); Turkish_Trustworthyman (Male, Middle Aged, Reliable, trustworthy male) ### Ukrainian (2) Ukrainian_CalmWoman (Female, Middle Aged, Serene, calm female); Ukrainian_WiseScholar (Male, Old, Learned, scholarly male) ### Vietnamese (1) Vietnamese_kindhearted_girl (Female, Young, Compassionate, kind young female) ## Inworld Max Premium — #1 ranked TTS, 50 chars/sat (135 voices) ### Arabic (2) Nour (Female, Middle Aged, Polished female Arabic voice with a friendly tone, great for voiceover or support); Omar (Male, Middle Aged, Bright, confident Arabic male voice, great for announcements and broadcasts) ### Chinese (4) Jing (Female, Young, An energetic, fast-paced young Chinese female); Xiaoyin (Female, Young, A youthful Chinese female voice with a gentle, sweet quality); Xinyi (Female, Young, A Chinese woman with a neutral tone, perfect for narrations); Yichen (Male, Middle Aged, A calm, flat young adult male Chinese voice) ### Dutch (4) Erik (Male, Middle Aged, Older Dutch male voice with a weathered edge); Katrien (Female, Middle Aged, Dutch woman with an expressive voice); Lennart (Male, Middle Aged, A confident Dutch male voice. Calm and relaxed); Lore (Female, Middle Aged, Clear, calm Dutch female voice, great for narrations and professional use) ### English (95) Abby (Female, Young, Bright, eager American female child voice, ideal for animated characters and educational content); Alex (Male, Middle Aged, Energetic and expressive mid-range male voice, with a mildly nasal quality); Amina (Female, Middle Aged, Warm, inviting West African female voice, ideal for community outreach and storytelling); Anjali (Female, Middle Aged, Confident, articulate Indian female voice, ideal for professional training materials); Arjun (Male, Middle Aged, Clear, composed Indian male voice, well-suited for instructional webinars); Ashley (Female, Middle Aged, A warm, natural female voice); Avery (Male, Young, Youthful, performative male voice, suited for gameshow-style hosting); Bianca (Female, Middle Aged, Deep, controlled female voice, ideal for serious corporate reads); Blake (Male, Middle Aged, Rich, intimate male voice, perfect for audiobooks and romantic content); Brandon (Male, Middle Aged, Bold, strident male voice, ideal for structured announcements and news-style reads); Brian (Male, Middle Aged, Friendly, encouraging American male voice, ideal for educational tutorials); Callum (Male, Middle Aged, Casual and friendly Australian male voice, ideal for informal instructional content); Carter (Male, Middle Aged, Energetic, mature radio announcer-style male voice, great for storytelling); Cedric (Male, Middle Aged, Crisp, measured male voice, ideal for formal announcements and premium narration); Celeste (Female, Middle Aged, Soft, whispery female voice, ideal for ASMR and gentle mindfulness sessions); Chloe (Female, Young, Thoughtful, introspective youthful female voice, perfect for coming-of-age narratives); Claire (Female, Middle Aged, Warm, gentle Eastern European female voice, ideal for bedtime stories); Clive (Male, Middle Aged, British-accented English male with a calm, cordial quality); Conrad (Male, Middle Aged, Gruff, weathered male voice, perfect for detective archetypes and audiobook roles); Craig (Male, Old, Older British male with a refined and articulate voice); Damon (Male, Middle Aged, Calm, raspy male voice, suited for moody narration and atmospheric roleplay); Darlene (Female, Middle Aged, Soothing, comforting Southern female voice, ideal for bedtime stories); Deborah (Female, Young, Warm, peaceful female voice with a calm tone); Dennis (Male, Middle Aged, Middle-aged man with a smooth, calm and friendly voice); Derek (Male, Middle Aged, Steady, professional, composed American male voice, ideal for banking support); Dominus (Male, Middle Aged, Robotic, deep male voice with a menacing quality. Perfect for villains); Duncan (Male, Middle Aged, Warm, articulate British male voice for customer support and education); Edward (Male, Middle Aged, American male with an emphatic, confident and streetwise tone); Eleanor (Female, Middle Aged, Polished, approachable British female voice for support and learning); Elizabeth (Female, Middle Aged, Professional middle-aged woman, perfect for narrations and voiceovers); Elliot (Male, Middle Aged, Calm, steady male voice, suitable for nature documentaries and informational content); Ethan (Male, Young, Assured, precise male voice, perfect for tech tutorials and gadget overviews); Evan (Male, Middle Aged, Friendly, approachable, easygoing male voice, ideal for onboarding and retail assistance); Evelyn (Female, Middle Aged, Gentle, intimate female voice, ideal for ASMR and calming conversations); Felix (Male, Middle Aged, Calm, friendly British male voice, ideal for help and tutorials); Gareth (Male, Middle Aged, Soothing, gentle male voice, ideal for guided meditations and relaxation); Graham (Male, Middle Aged, Profound, authoritative British male voice, perfect for historical documentaries); Grant (Male, Middle Aged, Calm, attentive, helpful male voice, ideal for troubleshooting and support); Hades (Male, Middle Aged, Commanding and gruff male voice, think an omniscient narrator or castle guard); Hamish (Male, Middle Aged, Friendly and casual Australian male voice, ideal for character-driven roles); Hana (Female, Young, Bright, expressive young female voice, perfect for storytelling and gaming); Hank (Male, Middle Aged, Warm, laid-back Southern male voice, ideal for travel documentaries); Jake (Male, Young, Amiable, introspective male voice, ideal for motivational talks); James (Male, Middle Aged, Vibrant, expressive male voice, perfect for animated video content and event hosting); Jason (Male, Middle Aged, Lucid, engrossing male voice, ideal for tech tips and creative content); Jessica (Female, Middle Aged, Encouraging, articulate American female voice, perfect for self-help audiobooks); Jonah (Male, Middle Aged, Soothing, calm male voice, great for tutorial guidance and gentle instructions); Julia (Female, Middle Aged, Quirky, high-pitched female voice that delivers lines with playful energy); Kayla (Female, Young, Enthusiastic, youthful female voice, ideal for reaction videos and product reviews); Kelsey (Female, Middle Aged, Warm, empathetic, reassuring female voice, ideal for phone support); Lauren (Female, Middle Aged, Confident, friendly American female voice, ideal for corporate presentations); Levi (Male, Middle Aged, Measured, ominous male voice, ideal for suspense narration and dark fantasy); Liam (Male, Middle Aged, Upbeat, motivating Australian male voice, perfect for energizing workout sessions); Loretta (Female, Middle Aged, Inviting, folksy Southern female voice, perfect for cooking shows and family tales); Lucian (Male, Middle Aged, Brooding, foreboding male voice, suited for villainous character arcs); Luna (Female, Middle Aged, Calm, relaxing female voice, perfect for meditations, sleep stories, and mindfulness); Malcolm (Male, Middle Aged, Authoritative, manipulative male voice, perfect for cunning leaders); Marcus (Male, Middle Aged, Authoritative, empathetic male voice, great for civic campaigns and outreach); Mark (Male, Middle Aged, Energetic, expressive man with a rapid-fire delivery); Marlene (Female, Middle Aged, Friendly, relaxed Southern female voice, ideal for cooking tutorials); Mia (Female, Young, Youthful, expressive female voice, ideal for adolescent characters); Miranda (Female, Middle Aged, Menacing, cold-hearted female voice, perfect for strategic villains); Mortimer (Male, Middle Aged, Gravelly, aggressive male character voice, ideal for fantasy villains); Nadia (Female, Middle Aged, Personable, lively female voice, perfect for tutorial walkthroughs); Naomi (Female, Middle Aged, Warm, grounded female voice, perfect for narrative podcasting); Nate (Male, Young, Conversational, sociable male voice, great for customer support); Oliver (Male, Middle Aged, Neutral and clear male voice, ideal for public announcements and education); Olivia (Female, Middle Aged, Young, British female with a friendly and helpful tone); Pippa (Female, Middle Aged, Friendly and casual Australian female voice, ideal for relaxed instructional content); Pixie (Female, Middle Aged, High-pitched, childlike female voice with a squeaky quality — great for cartoons); Priya (Female, Young, Even-toned female voice with an Indian accent); Reed (Male, Middle Aged, Clear, professional American male voice, well-suited for support and training); Riley (Female, Young, Playful, youthful female voice, perfect for animated storytelling); Ronald (Male, Old, Confident, British man with a deep, gravelly voice); Rupert (Male, Middle Aged, Resonant, commanding British male voice, ideal for motivational speeches); Saanvi (Female, Middle Aged, Crisp, articulate Indian female voice, ideal for e-learning modules); Sarah (Female, Middle Aged, Fast-talking young adult woman, with a questioning and curious tone); Sebastian (Male, Middle Aged, Intimidating, steely male voice, perfect for ruthless antagonists); Selene (Female, Young, Soft, flirtatious female voice, ideal for companion-style interactions); Serena (Female, Middle Aged, Soft, nurturing female voice, perfect for mindfulness sessions); Shaun (Male, Middle Aged, Friendly, dynamic male voice great for conversations); Simon (Male, Middle Aged, Articulate, insightful male voice, perfect for corporate presentations); Snik (Male, Middle Aged, Hoarse, cunning male voice, perfect for devious goblin roles and tricksters); Sophie (Female, Middle Aged, Friendly British female voice, great for assistance and knowledge sharing); Tessa (Female, Middle Aged, Upbeat, conversational Australian female voice, perfect for lifestyle vlogs); Theodore (Male, Old, Gravelly male voice, with a time-worn quality); Timothy (Male, Young, Lively, upbeat American male voice); Trevor (Male, Middle Aged, Punchy, expressive male voice, perfect for energetic promos); Tristan (Male, Middle Aged, Deliberate, controlled male voice, ideal for documentary narration); Tyler (Male, Middle Aged, Authoritative, insightful male voice, ideal for tech explainer videos); Veronica (Female, Middle Aged, Intimidating, commanding female voice, perfect for ruthless antagonists); Victor (Male, Middle Aged, Ominous, sinister male voice, ideal for dark conspiracies and suspense); Victoria (Female, Middle Aged, Silky, cunning British female voice, ideal for narrating intricate plots); Vinny (Male, Middle Aged, Gritty, assertive New York male voice, perfect for crime dramas); Wendy (Female, Old, Posh, middle-aged British female voice) ### French (4) Alain (Male, Middle Aged, Deep, smooth middle-aged male French voice. Composed and calm); Étienne (Male, Middle Aged, Calm young adult French male); Hélène (Female, Middle Aged, Middle-aged French woman, with a smooth, musical, and graceful voice); Mathieu (Male, Middle Aged, A French male voice carrying a nasal quality) ### German (2) Johanna (Female, Middle Aged, A calm older German female with a low, smoky voice); Josef (Male, Middle Aged, An articulate German male voice with an announcer-like quality) ### Hebrew (2) Oren (Male, Middle Aged, Steady male Hebrew voice, great for podcasts and voiceovers); Yael (Female, Middle Aged, Mid-range female Hebrew voice, suitable for narrations and storytelling) ### Hindi (2) Manoj (Male, Middle Aged, Clear, professional Hindi male voice. Great for narrations and customer service); Riya (Female, Middle Aged, Professional, clear female voice with an articulate and polished delivery) ### Italian (2) Gianni (Male, Middle Aged, Deep, smooth Italian male voice that speaks rapidly); Orietta (Female, Middle Aged, Calm adult female Italian voice, with a soothing cadence) ### Japanese (2) Asuka (Female, Middle Aged, Friendly, young adult Japanese female voice); Satoshi (Male, Middle Aged, Dramatic, expressive male Japanese voice filled with energy) ### Korean (4) Hyunwoo (Male, Middle Aged, Young adult Korean male voice); Minji (Male, Young, Energetic, friendly young Korean female voice); Seojun (Male, Young, Clear, deep mature Korean male voice); Yoona (Female, Middle Aged, Korean woman with a gentle, soothing voice) ### Polish (2) Szymon (Male, Middle Aged, Polish adult male voice with a warm, friendly quality); Wojciech (Male, Middle Aged, A middle-aged Polish male voice) ### Portuguese (2) Heitor (Male, Middle Aged, Composed Portuguese-speaking male voice with a neutral tone); Maitê (Female, Middle Aged, Middle-aged Portuguese-speaking female voice) ### Russian (4) Dmitry (Male, Middle Aged, Deep, gravelly male voice with a commanding and narrative tone); Elena (Female, Middle Aged, Clear, mid-range female voice with a smooth texture and neutral tone); Nikolai (Male, Middle Aged, Deep, resonant male voice with a clear, theatrical, and narrative quality); Svetlana (Female, Middle Aged, Soft, high-pitched female voice with a moderate pace and breathy quality) ### Spanish (4) Diego (Male, Young, Spanish-speaking male voice with a soothing, gentle quality); Lupita (Female, Young, Vibrant, energetic young Spanish-speaking female voice); Miguel (Male, Middle Aged, A calm adult Spanish-speaking male voice, perfect for storytelling); Rafael (Male, Middle Aged, Middle-aged Spanish-speaking male with a deep, composed voice. Great for narrations) | |
| speed | No | Speech speed multiplier (0.5-2.0) | |
| language | No | OmniVoice only: ISO 639 language code. 646 languages. Default: 'en'. Full catalog: kbt=Abadi, ab=Abkhazian, abr=Abron, abn=Abua, fub=Adamawa Fulfulde, ady=Adyghe, aal=Afade, af=Afrikaans, yay=Agwagwune, ajg=Aja (Benin), keu=Akebu, ala=Alago, sq=Albanian, arq=Algerian Arabic, aao=Algerian Saharan Arabic, qva=Ambo-Pasco Quechua, abs=Ambonese Malay, adx=Amdo Tibetan, am=Amharic, anw=Anaang, anp=Angika, xmv=Antankarana Malagasy, an=Aragonese, aae=Arbëreshë Albanian, qxu=Arequipa-La Unión Quechua, hy=Armenian, ahs=Ashe, prq=Ashéninka Perené, eiv=Askopan, as=Assamese, ast=Asturian, tay=Atayal, awo=Awak, quy=Ayacucho Quechua, az=Azerbaijani, bba=Baatonum, bcy=Bacama, bde=Bade, ksf=Bafia, bfd=Bafut, fui=Bagirmi Fulfulde, bqg=Bago-Kusuntu, abv=Baharna Arabic, bkh=Bakoko, bjt=Balanta-Ganja, bft=Balti, bce=Bamenyam, bax=Bamun, bsj=Bangwinji, bjn=Banjar, abb=Bankon, bci=Baoulé, bhr=Bara Malagasy, bjk=Barok, bas=Basa (Cameroon), bzw=Basa (Nigeria), ba=Bashkir, eu=Basque, btm=Batak Mandailing, bnm=Batanga, btv=Bateri, bbl=Bats, bda=Bayot, beb=Bebele, be=Belarusian, bn=Bengali, bew=Betawi, bhb=Bhili, bho=Bhojpuri, bxf=Bilur, bhp=Bima, brx=Bodo, bux=Boghom, bky=Bokyi, bmq=Bomu, bou=Bondei, fue=Borgu Fulfulde, bs=Bosnian, brh=Brahui, bra=Braj, br=Breton, bdm=Buduma, bug=Buginese, bhh=Bukharic, bg=Bulgarian, bum=Bulu (Cameroon), bns=Bundeli, bnn=Bunun, bwr=Bura-Pabir, bys=Burak, my=Burmese, bsk=Burushaski, miu=Cacaloxtepec Mixtec, qvl=Cajatambo North Lima Quechua, cky=Cakfem-Mushere, wes=Cameroon Pidgin, sro=Campidanese Sardinian, yue=Cantonese, ca=Catalan, ceb=Cebuano, cen=Cen, ckb=Central Kurdish, nhn=Central Nahuatl, pbs=Central Pame, pst=Central Pashto, ncx=Central Puebla Nahuatl, tar=Central Tarahumara, esu=Central Yupik, fuq=Central-Eastern Niger Fulfulde, shu=Chadian Arabic, ny=Chichewa, zpv=Chichicapan Zapotec, cgg=Chiga, zoh=Chimalapa Zoque, qug=Chimborazo Highland Quichua, zh=Chinese, qxa=Chiquián Ancash Quechua, the=Chitwania Tharu, cjk=Chokwe, cv=Chuvash, ckl=Cibak, kjc=Coastal Konjo, zoc=Copainalá Zoque, kw=Cornish, qwa=Corongo Ancash Quechua, hr=Croatian, mfn=Cross River Mbembe, xtu=Cuyamecalco Mixtec, cs=Czech, dbd=Dadiya, dag=Dagbani, dml=Dameli, da=Danish, dar=Dargwa, dzg=Dazaga, dcc=Deccan, deg=Degema, kna=Dera (Nigeria), dgh=Dghwede, mki=Dhatki, dv=Dhivehi, adf=Dhofari Arabic, cfa=Dijim-Bwilim, dgo=Dogri, dmk=Domaaki, dty=Dotyali, dua=Duala, nl=Dutch, ldb=Dũya, dyu=Dyula, bgp=Eastern Balochi, gui=Eastern Bolivian Guaraní, avl=Eastern Egyptian Bedawi Arabic, kqo=Eastern Krahn, mhr=Eastern Mari, ydd=Eastern Yiddish, ebr=Ebrié, ego=Eggon, arz=Egyptian Arabic, etu=Ejagham, elm=Eleme, afo=Eloyi, ebu=Embu, en=English, myv=Erzya, ish=Esan, eo=Esperanto, et=Estonian, eto=Eton (Cameroon), ewo=Ewondo, ext=Extremaduran, fan=Fang (Equatorial Guinea), fat=Fanti, gur=Farefare, fmp=Fe'fe', fil=Filipino, tlp=Filomena Mata-Coahuitlán Totonac, fi=Finnish, fip=Fipa, fr=French, ff=Fulah, gl=Galician, wof=Gambian Wolof, lg=Ganda, gbm=Garhwali, gwt=Gawar-Bati, gwc=Gawri, gbr=Gbagyi, gby=Gbari, gyz=Geji, gej=Gen, ka=Georgian, de=German, ges=Geser-Gorom, aln=Gheg Albanian, bbj=Ghomálá', gid=Gidar, glw=Glavda, gom=Goan Konkani, gig=Goaria, ank=Goemai, gol=Gola, el=Greek, gn=Guarani, gdf=Guduf-Gava, amu=Guerrero Amuzgo, gu=Gujarati, gju=Gujari, afb=Gulf Arabic, ggg=Gurgula, guz=Gusii, gsl=Gusilay, gwe=Gweno, ztu=Güilá Zapotec, hoj=Hadothi, hah=Hahon, ht=Haitian, cnh=Hakha Chin, hao=Hakö, hla=Halia, ha=Hausa, haw=Hawaiian, haz=Hazaragi, he=Hebrew, hem=Hemba, hz=Herero, kjk=Highland Konjo, acw=Hijazi Arabic, hi=Hindi, var=Huarijio, mau=Huautla Mazatec, nhq=Huaxcaleca Nahuatl, hbb=Huba, mxs=Huitepec Mixtec, hul=Hula, hu=Hungarian, hkk=Hunjara-Kaina Ke, hwo=Hwana, ibb=Ibibio, is=Icelandic, ida=Idakho-Isukha-Tiriki, idu=Idoma, ig=Igbo, ahl=Igo, kpo=Ikposo, ikw=Ikwere, qvi=Imbabura Highland Quichua, id=Indonesian, mvy=Indus Kohistani, ia=Interlingua, ik=Inupiaq, ga=Irish, os=Iron Ossetic, its=Isekiri, iso=Isoko, it=Italian, itw=Ito, itz=Itzá, vmj=Ixtayutla Mixtec, ijc=Izon, jax=Jambi Malay, ja=Japanese, jqr=Jaqaru, qxw=Jauja Wanca Quechua, jns=Jaunsari, jv=Javanese, juo=Jiba, kaj=Jju, aju=Judeo-Moroccan Arabic, vmc=Juxtlahuaca Mixtec, kbd=Kabardian, lkb=Kabras, kea=Kabuverdianu, kab=Kabyle, gjk=Kachi Koli, ckr=Kairak, ijn=Kalabari, kls=Kalasha, kln=Kalenjin, xka=Kalkoti, kam=Kamba, kcq=Kamo, bjj=Kanauji, kbl=Kanembu, kn=Kannada, kai=Karekare, ks=Kashmiri, tkt=Kathoriya Tharu, bsh=Kati, kk=Kazakh, eyo=Keiyo, khg=Khams Tibetan, ogo=Khana, xhe=Khetrani, km=Khmer, khw=Khowar, zga=Kinga, kfk=Kinnauri, rw=Kinyarwanda, ky=Kirghiz, fkk=Kirya-Konzəl, thq=Kochila Tharu, plk=Kohistani Shina, bcs=Kohumono, trp=Kok Borok, kol=Kol (Papua New Guinea), bkm=Kom (Cameroon), kmy=Koma, knn=Konkani, koo=Konzo, ko=Korean, kfp=Korwa, kfe=Kota (India), eko=Koti, ksd=Kuanua, kj=Kuanyama, uki=Kui (India), bbu=Kulung (Nigeria), kto=Kuot, kuh=Kushi, kwm=Kwambi, nmg=Kwasio, lla=Lala-Roba, hia=Lamang, lo=Lao, alo=Larike-Wakasihu, lss=Lasi, ltg=Latgalian, lv=Latvian, apc=Levantine Arabic, ste=Liana-Seti, xpe=Liberia Kpelle, lir=Liberian English, ayl=Libyan Arabic, lij=Ligurian, mgi=Lijili, ln=Lingala, lt=Lithuanian, lrk=Loarki, rag=Logooli, src=Logudorese Sardinian, qvj=Loja Highland Quichua, loa=Loloda, lnu=Longuda, ztp=Loxicha Zapotec, lua=Luba-Lulua, luo=Luo, lus=Lushai, lb=Luxembourgish, ffm=Maasina Fulfulde, mde=Maba (Chad), rup=Macedo-Romanian, mk=Macedonian, mxu=Mada (Cameroon), maf=Mafa, mai=Maithili, ms=Malay, ml=Malayalam, gcc=Mali, tcf=Malinaltepec Me'phaa, mt=Maltese, tbf=Mandara, mfv=Mandjak, mqy=Manggarai, mni=Manipuri, msw=Mansoanka, gv=Manx, mi=Maori, mr=Marathi, mrt=Marghi Central, mfm=Marghi South, mrr=Maria (India), mve=Marwari (Pakistan), mcn=Masana, msh=Masikoro Malagasy, mcf=Matsés, zpy=Mazaltepec Zapotec, vmz=Mazatlán Mazatec, mzl=Mazatlán Mixe, mfo=Mbe, mbo=Mbo (Cameroon), mdd=Mbum, byv=Medumba, mek=Mekeo, mer=Meru, acm=Mesopotamian Arabic, mtr=Mewari, nan=Min Nan Chinese, xmf=Mingrelian, vmm=Mitlatongo Mixtec, mkf=Miya, bri=Mokpwe, mdf=Moksha, ver=Mom Jango, mn=Mongolian, ary=Moroccan Arabic, meu=Motu, mcx=Mpiemo, mgg=Mpumpong, mua=Mundang, mhk=Mungaka, mse=Musey, mug=Musgu, mui=Musi, mne=Naba, ars=Najdi Arabic, nal=Nalik, nmz=Nawdm, ng=Ndonga, nap=Neapolitan, npi=Nepali, nbh=Ngamo, anc=Ngas, nnh=Ngiemboon, ngi=Ngizim, jgo=Ngomba, nla=Ngombale, fuv=Nigerian Fulfulde, pcm=Nigerian Pidgin, noe=Nimadi, fia=Nobiin, ayp=North Mesopotamian Arabic, max=North Moluccan Malay, bmm=Northern Betsimisaraka Malagasy, hno=Northern Hindko, kmr=Northern Kurdish, pmq=Northern Pame, pbu=Northern Pashto, uzn=Northern Uzbek, gya=Northwest Gbaya, no=Norwegian, nb=Norwegian Bokmål, nn=Norwegian Nynorsk, ncf=Notsi, yes=Nyankpa, nyu=Nyungwe, nja=Nzanyi, hux=Nüpode Huitoto, oc=Occitan, odk=Od, ory=Odia, odu=Odual, acx=Omani Arabic, nlv=Orizaba Nahuatl, orc=Orma, oru=Ormuri, orm=Oromo, aom=Ömie, phr=Pahari-Potwari, pwn=Paiwan, pa=Panjabi, pmy=Papuan Malay, kvx=Parkari Koli, nso=Pedi, pip=Pero, fa=Persian, pex=Petats, phl=Phalura, pms=Piemontese, piy=Piya-Kwonci, plt=Plateau Malagasy, pl=Polish, poc=Poqomam, pt=Portuguese, fuc=Pulaar, fuf=Pular, qxp=Puno Quechua, ps=Pushto, pko=Pökoot, byx=Qaqet, chq=Quiotepec Chinantec, thr=Rana Tharu, lag=Rangi, kyx=Rapoisi, rth=Ratahan, zor=Rayón Zoque, ro=Romanian, rm=Romansh, rof=Rombo, roo=Rotokas, dru=Rukai, ru=Russian, quv=Sacapulteco, aec=Saidi Arabic, skg=Sakalava Malagasy, szy=Sakizaya, sau=Saleman, ccg=Samba Daka, ndi=Samba Leko, pow=San Felipe Otlaltepec Popoloca, hue=San Francisco Del Mar Huave, poe=San Juan Atzingo Popoloca, trq=San Martín Itunyoso Triqui, mig=San Miguel El Grande Mixtec, ssi=Sansi, sa=Sanskrit, qxt=Santa Ana de Tusi Pasco Quechua, ztn=Santa Catarina Albarradas Zapotec, sat=Santali, qus=Santiago del Estero Quichua, sps=Saposa, skr=Saraiki, sc=Sardinian, say=Saya, trv=Sediq, sr=Serbian, sei=Seri, scl=Shina, sn=Shona, sjr=Siar-Lak, nco=Sibe, scn=Sicilian, qws=Sihuas Ancash Quechua, sip=Sikkimese, snc=Sinaugoro, sd=Sindhi, sbn=Sindhi Bhil, si=Sinhala, xti=Sinicahua Mixtec, qum=Sipacapense, siw=Siwai, sk=Slovak, sl=Slovenian, sol=Solos, so=Somali, snk=Soninke, giz=South Giziga, cpy=South Ucayali Ashéninka, mxy=Southeastern Nochixtlán Mixtec, bzc=Southern Betsimisaraka Malagasy, pbt=Southern Pashto, qup=Southern Pastaza Quechua, vmp=Soyaltepec Mazatec, es=Spanish, arb=Standard Arabic, zgh=Standard Moroccan Tamazight, apd=Sudanese Arabic, sua=Sulka, sva=Svan, sw=Swahili, sv=Swedish, rob=Tae', thv=Tahaggart Tamahaq, dav=Taita, tg=Tajik, ta=Tamil, tdx=Tandroy-Mahafaly Malagasy, tan=Tangale, txy=Tanosy Malagasy, yer=Tarok, tt=Tatar, tuq=Tedaga, te=Telugu, kdh=Tem, tio=Teop, cux=Tepeuxila Cuicatec, cte=Tepinapa Chinantec, ttr=Tera, buo=Terei, twu=Termanu, tkg=Tesaka Malagasy, nhg=Tetelcingo Nahuatl, cut=Teutila Cuicatec, th=Thai, bo=Tibetan, mtx=Tidaá Mixtec, tvo=Tidore, tgc=Tigak, tig=Tigre, ti=Tigrinya, zts=Tilquiapan Zapotec, tpz=Tinputz, tpl=Tlacoapa Me'phaa, ctl=Tlacoatzintepec Chinantec, tli=Tlingit, tok=Toki Pona, tqp=Tomoip, tdn=Tondano, txs=Tonsea, ttj=Tooro, ttu=Torau, trw=Torwali, xmw=Tsimihety Malagasy, lto=Tsotso, tn=Tswana, tuy=Tugen, bag=Tuki, tul=Tula, tcy=Tulu, tvu=Tunen, lcm=Tungag, aeb=Tunisian Arabic, tui=Tupuri, tuv=Turkana, tr=Turkish, tk=Turkmen, mtu=Tututepec Mixtec, tw=Twi, byc=Ubaghara, ug=Uighur, uk=Ukrainian, umb=Umbundu, hsb=Upper Sorbian, ur=Urdu, ush=Ushojo, uz=Uzbek, vai=Vai, vi=Vietnamese, vot=Votic, vro=Võro, wci=Waci Gbe, kxp=Wadiyara Koli, wja=Waja, wbl=Wakhi, lwg=Wanga, juk=Wapan, wji=Warji, cy=Welsh, weo=Wemale, fy=Western Frisian, pua=Western Highland Purepecha, jmx=Western Juxtlahuaca Mixtec, mlq=Western Maninkakan, mrj=Western Mari, fuh=Western Niger Fulfulde, pnb=Western Panjabi, wo=Wolof, udl=Wuzlam, ztg=Xanaguía Zapotec, xh=Xhosa, ekr=Yace, sah=Yakut, jal=Yalahatan, qur=Yanahuanca Pasco Quechua, yav=Yangben, yaq=Yaqui, qux=Yauyos Quechua, ets=Yekhee, yi=Yiddish, ydg=Yidgha, yo=Yoruba, mab=Yutanduchi Mixtec, nhi=Zacatlán-Ahuacatlán-Tepetzintla Nahuatl, dje=Zarma, zza=Zaza, zu=Zulu | |
| voice_description | No | OmniVoice only: describe desired voice (e.g., 'female, young adult, high pitch') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description thoroughly discloses behavioral traits: three tiers with specific capabilities (chars/sat, language support), adjustable speed range, return type (audio URL), and payment process (Bitcoin Lightning, no API key). Covers all critical aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely verbose, containing extensive lists of voices and languages that could be referenced via schemas or separate tool calls. While well-structured with paragraphs and headers, it sacrifices conciseness for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, no output schema), the description is complete: covers all tiers, parameter usage, payment, return value (audio URL), and provides exclusion criteria against sibling tools. A user can fully understand tool behavior without external references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds immense value beyond the 100% schema coverage by explaining the three tiers and how they relate to parameters, providing a massive enumerated list of voices with detailed descriptions (gender, age, style), and listing all 646 language ISO codes with full names. The description enriches parameter understanding significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts text to speech with three distinct tiers, each described with unique features (language coverage, voice cloning, speed). It distinguishes from sibling tools like place_call and ai_call in the 'When NOT to use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use each tier (e.g., OmniVoice for rare languages) and when not to use the tool, with references to alternative tools (place_call, ai_call, open_voice_bridge). Includes payment prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_audioAInspect
Transcribe audio to text with timestamps. Uses Mistral Transcription — high-accuracy speech recognition that handles accents, background noise, and overlapping speakers. 13 languages: en, zh, hi, es, ar, fr, pt, ru, de, ja, ko, it, nl. Up to 512 MB / 3 hours per file. Async — returns requestId, poll with check_job_status(jobType='transcription'), then get_job_result. 10 sats/min. Privacy: audio and transcripts are ephemeral — processed, returned, and discarded. Never persisted. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='transcribe_audio'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| audioBase64 | Yes | Base64 encoded audio file | |
| language | No | Language code (e.g., 'en', 'es') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses async polling, payment flow, ephemeral data, language support, file size/duration limits, and privacy. This provides comprehensive behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise and front-loaded with purpose. Every sentence adds value, though it could be slightly tighter without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (async, payment, multiple languages, file limits), the description covers all essential aspects including how to retrieve results and privacy. No output schema exists, but the workflow is fully explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by linking paymentId to create_payment and listing supported languages, but does not elaborate on audio format requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool transcribes audio to text with timestamps, using a specific verb and resource. It does not explicitly differentiate from sibling tools like 'transcribe_translate', but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (transcription with timestamps) and includes context on async workflow and payment. However, it lacks explicit exclusions or alternatives, leaving the agent to infer boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_translateAInspect
Compound endpoint — one payment turns audio in any of 13 source languages into both a transcript AND a translation in any of 119 target languages. Perfect for WhatsApp voice messages in a language you don't speak (Yoruba → English), or recording a meeting in another language and reading it in yours. Auto-detects source if omitted. Async — returns requestId, poll with check_job_status(jobType='transcribe-translate'). Flat price covers STT + translation. Cheaper than calling transcribe_audio + translate_text separately for typical voice messages. Pay with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='transcribe_translate'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| audioBase64 | Yes | Base64-encoded audio file | |
| targetLanguage | Yes | Target language — English name (e.g. 'Spanish') or ISO-639 code (e.g. 'es', 'en-US'). 119 languages supported. | |
| sourceLanguage | No | Optional — auto-detected if omitted. Accepts ISO-639 codes for the 13 STT languages: en, zh, hi, es, ar, fr, pt, ru, de, ja, ko, it, nl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description discloses async behavior (returns requestId, poll with check_job_status), flat pricing covering STT and translation, payment requirement, and source auto-detection. It could mention file size limits or supported audio formats, but overall transparency is high.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads key information (compound endpoint, use case). Some redundancy (e.g., 'Pay with Bitcoin Lightning — no API key or signup needed' could be shorter), but overall efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description explains return type (requestId) and how to retrieve result (poll). Covers payment, async nature, source/target languages, and cost comparison. Missing details on output format (e.g., transcript structure) but given complexity, it's reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value: explains paymentId requires a paid payment, audioBase64 is base64-encoded, targetLanguage supports English name or ISO-639 (119 languages), sourceLanguage is optional with auto-detection and lists the 13 supported languages. This is meaningful enrichment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a compound endpoint that transcribes audio in 13 source languages and translates to 119 target languages. It distinguishes itself from siblings like transcribe_audio and translate_text by highlighting the combined offering and cost savings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete examples (WhatsApp voice messages, meeting recordings), notes auto-detection of source language, async polling via check_job_status, cost comparison to alternatives, and prerequisites (create_payment). This gives explicit guidance on when and how to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_textAInspect
Translate text across 119 languages with high accuracy. Uses Qwen3-32B — multilingual transformer with strong low-resource language support. Auto-detects source language. Privacy-preserving: no data stored. Pricing: 1 sat per 1,000 characters, minimum 1 sat per request. Language parameters accept English names ('Spanish', 'Chinese (Simplified)') or ISO-639 codes / locale tags ('es', 'en-US', 'pt-BR', 'zh-Hans'). Supported languages: Afrikaans, Albanian, Amharic, Arabic, Armenian, Assamese, Azerbaijani, Basque, Belarusian, Bengali, Bosnian, Bulgarian, Burmese, Catalan, Cebuano, Chichewa, Chinese (Simplified), Chinese (Traditional), Corsican, Croatian, Czech, Danish, Dari, Dutch, English, Esperanto, Estonian, Farsi, Fijian, Filipino, Finnish, French, Frisian, Galician, Georgian, German, Greek, Guarani, Gujarati, Haitian Creole, Hausa, Hawaiian, Hebrew, Hindi, Hmong, Hungarian, Icelandic, Igbo, Indonesian, Irish, Italian, Japanese, Javanese, Kannada, Kazakh, Khmer, Kinyarwanda, Korean, Kurdish, Kyrgyz, Lao, Latvian, Lingala, Lithuanian, Luganda, Luxembourgish, Macedonian, Malagasy, Malay, Malayalam, Maltese, Maori, Marathi, Mongolian, Nepali, Norwegian, Occitan, Odia, Pashto, Polish, Portuguese, Punjabi, Romanian, Romansh, Russian, Samoan, Scots Gaelic, Serbian, Sesotho, Setswana, Shona, Sindhi, Sinhala, Slovak, Slovenian, Somali, Spanish, Sundanese, Swahili, Swedish, Tajik, Tamil, Tatar, Telugu, Thai, Tigrinya, Tongan, Turkish, Turkmen, Ukrainian, Urdu, Uzbek, Vietnamese, Welsh, Wolof, Xhosa, Yiddish, Yoruba, Zulu. Pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='translate_text' and prompt (the text to translate).
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| text | Yes | Text to translate | |
| targetLanguage | Yes | Target language (e.g., 'Spanish', 'French', 'Japanese') | |
| sourceLanguage | No | Source language (auto-detected if omitted) | |
| modelId | No | Optional. Translation model is selected automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses model (Qwen3-32B), auto-detection of source language, privacy (no data stored), and pricing (1 sat per 1000 chars, min 1 sat). Without annotations, description carries full burden; these details are sufficient. Could mention if synchronous or result format, but still strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and key details, but it redundantly lists all 119 languages already present in schema enums. This makes it verbose. Overall structure is logical otherwise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers primary aspects: function, payment flow, parameters, supported languages, privacy, pricing. Missing output description and potential limitations (e.g., max text length). No output schema exists, so description should mention return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value: explains source language is optional (auto-detect), paymentId from create_payment, modelId optional. Also notes that language params accept English names or ISO codes, which is not in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Translate text across 119 languages' with high accuracy, specifying the model and auto-detection. It distinguishes from siblings like transcribe_translate (audio translation) and generate_text (text generation) by focusing solely on text-to-text translation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on when to use: privacy-preserving, pay-per-request with Bitcoin Lightning, no signup. Mentions prerequisite step (create_payment). However, does not explicitly compare to alternative translation tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_imageAInspect
Upscale images 2x or 4x with neural super-resolution. Uses Real-ESRGAN (ICCV 2021, PSNR 32.73dB on Set5 4x, 100M+ production runs). Recovers real detail from low-resolution images — not interpolation. Optional face enhancement. Stable endpoint — model upgrades automatically as SOTA evolves. 5 sats per image, pay per request with Bitcoin Lightning — no API key or signup needed. Requires create_payment with toolName='upscale_image'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (must be paid) | |
| imageBase64 | Yes | Base64-encoded image (PNG, JPEG, WEBP) or data URI | |
| scale | No | Upscale factor: 2x or 4x (default 4x) | |
| face_enhance | No | Apply face enhancement during upscaling (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: it names the model (Real-ESRGAN), states it recovers real detail (not interpolation), mentions optional face enhancement, describes stable endpoint with automatic upgrades, and lists pricing (5 sats per image, pay-per-request with Lightning, no API key). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (~70 words) and front-loaded with the primary action. Every sentence adds value: purpose, technical details, payment requirement, and behavioral notes. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description covers behavior, prerequisites, pricing, and model information. It does not describe the return format (e.g., base64 image), but given the context, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds marginal value by noting the default scale (4x) and that imageBase64 can be a data URI. For a high-coverage schema, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool upscales images 2x or 4x using neural super-resolution. It distinguishes itself from sibling tools like 'edit_image', 'generate_image', and 'restore_face' by focusing on resolution enhancement via machine learning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly requires a prior payment via 'create_payment' with toolName='upscale_image', which is a clear usage prerequisite. However, it does not specify when to use this tool over alternatives like 'edit_image' or 'restore_face', leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
voice_bridge_sayAInspect
Inject audio into an open Voice Bridge call. Two modes: (1) text — we synthesize via OmniVoice TTS in any of 602 languages; (2) audio_base64 + encoding — bring your own audio (mulaw_8000 or pcm_l16_16000 for MVP). STT is automatically muted while we inject, so the agent doesn't hear itself. No additional payment — covered by the session deposit.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID from open_voice_bridge | |
| text | No | Text to speak (mode 1). Uses OmniVoice TTS. | |
| language | No | Language override for this utterance (default: session language) | |
| voiceDescription | No | Free-form voice description for TTS (e.g., 'calm female voice') | |
| audioBase64 | No | Pre-rendered audio bytes, base64 (mode 2). Use with 'encoding'. | |
| encoding | No | Encoding of audioBase64. mp3/opus require ffmpeg (not yet wired in MVP). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: automatic STT muting during injection, coverage by session deposit, and the two modes. It does not cover potential errors or side effects, but the main behaviors are clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: five sentences with no filler. The first sentence states the purpose, then the two modes, then the STT muting, then payment. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description covers the core functionality well. It explains modes, muting, and cost. It could be more complete by mentioning error handling (e.g., invalid session) but is adequate for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions (100% coverage). The description adds significant context by explaining the two modes and how parameters relate (e.g., text vs audioBase64+encoding), which goes beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with a clear action verb ('Inject audio into an open Voice Bridge call') and specifies two distinct modes (TTS or custom audio). It differentiates from sibling tools like open_voice_bridge and end_voice_bridge by focusing on injecting audio into an existing call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that STT is muted automatically and that no extra payment is needed. However, it does not explicitly state when to choose mode 1 vs mode 2, nor does it provide any 'when not to use' guidance or alternatives. Usage is implied but not fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vote_on_serviceAInspect
Vote for a planned service to be built next. Returns JSON: { success, slug, newVoteCount }. 1 sat per vote — multiple votes allowed. Call list_planned_services first to discover valid slugs and current vote counts. Highest-voted services get prioritized. Requires create_payment with toolName='vote_on_service'.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Valid payment ID (1 sat, must be paid) | |
| slug | Yes | Service slug to vote for (from list_planned_services) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses cost ('1 sat per vote'), behavior ('multiple votes allowed'), return format ('Returns JSON: { success, slug, newVoteCount }'), and prioritization logic ('Highest-voted services get prioritized'). Could add error handling details, but overall strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three succinct sentences. First sentence states action and return, second covers cost and allowance, third covers prerequisite and outcome. No fluff, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two required params, no enums, no output schema, the description covers all necessary context: payment flow, slug discovery, return structure, and voting rules. It is fully adequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but description adds context beyond schema: for slug it adds 'from list_planned_services', for paymentId it adds '1 sat, must be paid'. This aids correct usage beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Vote for a planned service to be built next' with a specific verb (vote) and resource (planned service). It distinguishes from sibling 'list_planned_services' by mentioning it as a prerequisite, and no other sibling tool duplicates this purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to 'Call list_planned_services first' for valid slugs and vote counts, and 'Requires create_payment with toolName='vote_on_service''. Provides clear when-to-use and prerequisites.
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.
49 tool updates
- Added
ai_call - Changed
analyze_image2 fields changed- changed
Input schema / properties / modelId / descriptionPrevious value: -"The AI model database ID"New value: +"Optional. Omit for default model." - changed
Input schema / requiredPrevious value: -[ - "paymentId", - "prompt", - "imageBase64", - "modelId" -]New value: +[ + "paymentId", + "prompt", + "imageBase64" +]
- Added
animate_image - Changed
check_job_status3 fields changed- changed
Input schema / properties / jobType / descriptionPrevious value: -"Type of job"New value: +"Must match the async tool: video=generate_video, video-image=animate_image, image-3d=generate_3d_model, transcription=transcribe_audio, epub-audiobook=epub_to_audiobook, ai-call=ai_call" - changed
Input schema / properties / jobType / enumPrevious value: -[ - "video", - "video-image", - "video-audio", - "image-3d" -]New value: +[ + "video", + "video-image", + "image-3d", + "transcription", + "epub-audiobook", + "ai-call" +] - changed
Input schema / properties / requestId / descriptionPrevious value: -"The request ID from the async operation"New value: +"The requestId returned by the async tool (e.g., from generate_video, animate_image, generate_3d_model, transcribe_audio, epub_to_audiobook, ai_call)"
- Changed
check_payment_status1 field changed- changed
Input schema / properties / paymentId / descriptionPrevious value: -"The payment ID to check"New value: +"The paymentId returned by create_payment"
- Added
clone_voice - Added
colorize_image - Added
confirm_ai_call - Changed
convert_file3 fields changed- changed
Input schema / properties / extensionFrom / descriptionPrevious value: -"Source format extension without dot (e.g., 'pdf', 'docx', 'png')"New value: +"Source format without dot (e.g., 'pdf', 'docx')" - changed
Input schema / properties / extensionTo / descriptionPrevious value: -"Target format extension without dot (e.g., 'pdf', 'docx', 'png')"New value: +"Target format without dot (e.g., 'pdf', 'docx')" - changed
Input schema / properties / fileBase64 / descriptionPrevious value: -"Base64-encoded file content (provide this OR fileUrl)"New value: +"Base64-encoded file (provide this OR fileUrl)"
- Added
convert_html_to_pdf - Changed
create_payment14 fields changed- removed
Input schema / properties / additionalChargeRemoved value: -{ - "description": "Additional charge in sats (optional)", - "type": "number" -} - added
Input schema / properties / durationAdded value: +{ + "description": "Required for generate_video: duration in seconds (3-15)", + "type": "number" +} - changed
Input schema / properties / durationMinutes / descriptionPrevious value: -"Required for place_call with audioUrl: call duration in minutes (1-30). Defaults to 1 for TTS."New value: +"Required for place_call with audioUrl: duration in minutes (1-30)" - added
Input schema / properties / fileContextAdded value: +{ + "description": "For generate_text: include extracted file text if attaching a file (affects price)", + "type": "string" +} - added
Input schema / properties / generate_audioAdded value: +{ + "description": "For generate_video: include AI audio track (default: false). Adds 100 sats/sec.", + "type": "boolean" +} - added
Input schema / properties / modeAdded value: +{ + "description": "For generate_video: quality mode (default: 'pro'). standard: 300 sats/sec (no audio), 400 sats/sec (audio). pro: 450 sats/sec (no audio), 550 sats/sec (audio).", + "enum": [ + "standard", + "pro" + ], + "type": "string" +} - changed
Input schema / properties / modelId / descriptionPrevious value: -"The AI model database ID to use"New value: +"Optional. AI model ID from list_models. Omit for default (best) model." - changed
Input schema / properties / phoneNumber / descriptionPrevious value: -"Required for send_sms and place_call: destination phone in E.164 format (e.g., +14155550100)"New value: +"Required for send_sms and place_call: phone in E.164 format (e.g., +14155550100)" - added
Input schema / properties / promptAdded value: +{ + "description": "Required for generate_text: the exact prompt (price calculated from char count, locked to payment)", + "type": "string" +} - removed
Input schema / properties / quantityRemoved value: -{ - "default": 1, - "description": "Number of outputs/credits (default: 1)", - "type": "number" -} - added
Input schema / properties / resolutionAdded value: +{ + "description": "For edit_image: output resolution. 1K=200 sats, 2K=300 sats, 4K=450 sats. Default: 1K.", + "enum": [ + "1K", + "2K", + "4K" + ], + "type": "string" +} - added
Input schema / properties / systemPromptAdded value: +{ + "description": "For generate_text: include if using a custom system prompt (affects price)", + "type": "string" +} - changed
Input schema / properties / toolName / descriptionPrevious value: -"The name of the tool to pay for (e.g., 'generate_image', 'generate_video')"New value: +"Tool name to pay for (e.g., 'generate_text', 'generate_image', 'generate_video', 'send_sms', 'place_call')" - changed
Input schema / requiredPrevious value: -[ - "toolName", - "modelId" -]New value: +[ + "toolName" +]
- Added
deblur_image - Added
detect_nsfw - Added
detect_objects - Added
edit_image - Added
end_voice_bridge - Added
epub_to_audiobook - Added
extract_document - Added
extract_receipt - Changed
generate_3d_model3 fields changed- changed
Input schema / properties / imageBase64 / descriptionPrevious value: -"Base64 encoded image"New value: +"Base64 encoded image (PNG, JPEG, or WEBP)" - changed
Input schema / properties / modelId / descriptionPrevious value: -"The AI model database ID"New value: +"Optional. Omit for default model." - changed
Input schema / requiredPrevious value: -[ - "paymentId", - "imageBase64", - "modelId" -]New value: +[ + "paymentId", + "imageBase64" +]
- Changed
generate_image4 fields changed- removed
Input schema / properties / amountRemoved value: -{ - "default": 1, - "description": "Number of images to generate", - "type": "number" -} - changed
Input schema / properties / modelId / descriptionPrevious value: -"The AI model database ID (see Model IDs Reference)"New value: +"Optional. Omit for default (best) model." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Text prompt describing the image to generate"New value: +"Text prompt describing the image" - changed
Input schema / requiredPrevious value: -[ - "paymentId", - "prompt", - "modelId" -]New value: +[ + "paymentId", + "prompt" +]
- Changed
generate_music9 fields changed- added
Input schema / properties / audio_formatAdded value: +{ + "description": "Output format. Default: mp3", + "enum": [ + "mp3", + "wav", + "pcm" + ], + "type": "string" +} - added
Input schema / properties / bitrateAdded value: +{ + "description": "Audio bitrate. Default: 256000", + "enum": [ + 32000, + 64000, + 128000, + 256000 + ], + "type": "integer" +} - added
Input schema / properties / is_instrumentalAdded value: +{ + "description": "Set true for instrumental-only (no vocals). When true, prompt is required, lyrics are ignored.", + "type": "boolean" +} - changed
Input schema / properties / lyrics / descriptionPrevious value: -"Optional lyrics for the music"New value: +"Song lyrics with section tags (up to 3,500 chars). Tags: [Intro], [Verse], [Pre Chorus], [Chorus], [Bridge], [Outro], [Solo], [Hook], [Drop], [Build Up], [Inst], [Interlude], [Transition], [Break], [Post Chorus]" - added
Input schema / properties / lyrics_optimizerAdded value: +{ + "description": "Set true to auto-generate lyrics from prompt when lyrics are empty.", + "type": "boolean" +} - changed
Input schema / properties / modelId / descriptionPrevious value: -"The AI model database ID"New value: +"Optional. Omit for default model." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Description of the music to generate"New value: +"Music style with BPM, key, genre, mood, instruments (up to 2,000 chars). Example: 'E minor, 90 BPM, acoustic guitar ballad, male vocal'" - added
Input schema / properties / sample_rateAdded value: +{ + "description": "Audio sample rate. Default: 44100", + "enum": [ + 16000, + 24000, + 32000, + 44100 + ], + "type": "integer" +} - changed
Input schema / requiredPrevious value: -[ - "paymentId", - "prompt", - "modelId" -]New value: +[ + "paymentId", + "prompt" +]
- Changed
generate_text6 fields changed- changed
Input schema / properties / fileContext / descriptionPrevious value: -"Extracted text from a file (PDF, DOCX, code, etc.) to include as context"New value: +"Extracted file text to include as context" - changed
Input schema / properties / imageBase64 / descriptionPrevious value: -"Base64 data URI of an image for vision analysis (Best/K2.5 model only)"New value: +"Base64 data URI for vision analysis (best model only)" - changed
Input schema / properties / maxTokens / defaultPrevious value: -2048New value: +16384 - changed
Input schema / properties / maxTokens / descriptionPrevious value: -"Maximum tokens in response"New value: +"Max tokens in response" - changed
Input schema / properties / modelId / descriptionPrevious value: -"The AI model database ID"New value: +"Optional. Omit for default (best) model." - changed
Input schema / requiredPrevious value: -[ - "paymentId", - "prompt", - "modelId" -]New value: +[ + "paymentId", + "prompt" +]
- Changed
generate_video4 fields changed- changed
Input schema / properties / duration / descriptionPrevious value: -"Video duration in seconds (3-15)"New value: +"Duration in seconds (3-15)" - changed
Input schema / properties / generate_audio / descriptionPrevious value: -"Include AI-generated audio track"New value: +"Include AI audio track" - changed
Input schema / properties / modelId / descriptionPrevious value: -"The AI model database ID"New value: +"Optional. Omit for default model." - changed
Input schema / requiredPrevious value: -[ - "paymentId", - "prompt", - "modelId", - "duration" -]New value: +[ + "paymentId", + "prompt", + "duration" +]
- Removed
generate_video_from_image - Added
get_cost_estimate - Added
get_error_codes - Changed
get_job_result3 fields changed- changed
Input schema / properties / jobType / descriptionPrevious value: -"Type of job"New value: +"Must match the async tool: video=generate_video, video-image=animate_image, image-3d=generate_3d_model, transcription=transcribe_audio, epub-audiobook=epub_to_audiobook, ai-call=ai_call" - changed
Input schema / properties / jobType / enumPrevious value: -[ - "video", - "video-image", - "video-audio", - "image-3d" -]New value: +[ + "video", + "video-image", + "image-3d", + "transcription", + "epub-audiobook", + "ai-call" +] - changed
Input schema / properties / requestId / descriptionPrevious value: -"The request ID from the async operation"New value: +"The requestId returned by the original async tool — same ID used with check_job_status"
- Changed
list_models2 fields changed- added
Input schema / properties / categoryAdded value: +{ + "description": "Filter by service category (matches tool names)", + "enum": [ + "generate_text", + "generate_image", + "generate_video", + "animate_image", + "generate_music", + "text_to_speech", + "transcribe_audio", + "analyze_image", + "generate_3d_model", + "extract_document", + "convert_file", + "send_sms", + "place_call", + "ai_call", + "send_email", + "clone_voice", + "edit_image", + "merge_pdfs", + "convert_html_to_pdf", + "translate_text", + "extract_receipt", + "epub_to_audiobook", + "remove_background", + "upscale_image", + "restore_face", + "detect_nsfw", + "detect_objects", + "remove_object", + "colorize_image", + "deblur_image" + ], + "type": "string" +} - removed
Input schema / properties / typeRemoved value: -{ - "description": "Filter by model type (optional)", - "enum": [ - "Image", - "Video", - "VideoImage", - "VideoAudio", - "Music", - "Speech", - "Vision", - "Conversation", - "Image3d", - "ImageEdit", - "Service" - ], - "type": "string" -}
- Added
list_planned_services - Added
merge_pdfs - Added
open_voice_bridge - Changed
place_call3 fields changed- changed
Input schema / properties / audioUrl / descriptionPrevious value: -"Public URL to an audio file to play. Provide this OR message."New value: +"Public URL to audio file. Provide this OR message." - changed
Input schema / properties / durationMinutes / descriptionPrevious value: -"Call duration in minutes (1-30). Required for audioUrl. Defaults to 1 for TTS. Determines pricing."New value: +"Duration in minutes (1-30). Required for audioUrl." - changed
Input schema / properties / phoneNumber / descriptionPrevious value: -"Destination phone number in E.164 format (e.g., +14155550100)"New value: +"Phone number in E.164 format (e.g., +14155550100)"
- Added
poll_voice_bridge - Added
receive_fax - Added
remove_background - Added
remove_object - Added
request_refund - Added
restore_face - Added
send_email - Added
send_fax - Changed
send_sms1 field changed- changed
Input schema / properties / phoneNumber / descriptionPrevious value: -"Destination phone number in E.164 format (e.g., +14155550100)"New value: +"Phone number in E.164 format (e.g., +14155550100)"
- Removed
synthesize_speech - Added
text_to_speech - Added
transcribe_translate - Added
translate_text - Added
upscale_image - Added
voice_bridge_say - Added
vote_on_service
18 tool updates
v1.0.0- First observed
analyze_image - First observed
check_job_status - First observed
check_payment_status - First observed
convert_file - First observed
create_payment - First observed
generate_3d_model - First observed
generate_image - First observed
generate_music - First observed
generate_text - First observed
generate_video - First observed
generate_video_from_image - First observed
get_job_result - First observed
get_model_pricing - First observed
list_models - First observed
place_call - First observed
send_sms - First observed
synthesize_speech - First observed
transcribe_audio
TDQS
Scored across 49 tools
Each tool targets a distinct action or domain, with detailed descriptions that clearly differentiate even related tools (e.g., ai_call vs. open_voice_bridge vs. place_call). No two tools have ambiguous or overlapping purposes.
All tool names follow a consistent snake_case verb_noun pattern (e.g., generate_image, extract_document, send_sms). No mixing of conventions, making the set predictable and easy for agents to navigate.
At 49 tools, the count is high but appropriate for the broad scope of the server, which covers voice, video, image, document, and communication services. Each tool earns its place, though the size may feel heavy for narrower use cases.
The tool set covers a wide range of common AI tasks and includes necessary infrastructure (payment, job status, error codes). Minor gaps exist (e.g., no tool for bulk operations or advanced audio editing), but the surface is mostly complete for the intended domain.
Maintenance
Related MCP Connectors
Pay-per-use AI and data tools via x402: image, video, music, voice, search, crypto. USDC.
L402 MCP: 5 paid BTC/Lightning tools + fiat credits, 10-25 sats/call.
Pay-per-call LLM chat plus data tools: DNS, crypto, Base gas, Wikipedia. x402 USDC or Lightning.
22 AI microservices with x402 micropayments: summarize, translate, code-review. USDC on Base.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that enables Claude and other AI assistants to send SMS and MMS messages using Twilio.25 npm15MIT
- FlicenseAqualityNot gradedmaintenanceA Model Context Protocol server that extracts and processes content from PDF documents, providing text extraction, metadata retrieval, page-level processing, and PDF validation capabilities.41-
- AlicenseAqualityCmaintenanceDescription: Pay-per-request access to Claude and GPT models via Bitcoin Lightning using prepaid spend tokens. No accounts, no API keys — just sats.516 npm2MIT
- AlicenseBqualityAmaintenanceBitcoin Lightning Network Wallet for AI Agents and the Command Line.4376 npm9MIT