UnlimitedTTS
Create paid speech without handling wallet secrets. Prefer the UnlimitedTTS MCP tools. Use direct HTTP only when those tools are unavailable and a conforming x402 wallet-aware HTTP client is already present.
MCP workflow
- Call
tts_list_voiceswhen the voice is missing, ambiguous, or rejected. Use the full provider-prefixed id such asopenai_nova. - Call
tts_quotewith the exact text, voice, speed, and any user-statedmaxUsdc. - Check the exact amount, expiry, policy result, and user budget before signing.
- When an external wallet tool is required, ask it to sign only
selectedRequirementfrom this quote. Never request or expose a seed phrase, private key, or secret. - Call
tts_synthesizeonce with the unchanged text, voice, speed, quote token, and returnedpaymentSignature. - Require
payment.settled: true. Return or send the MP3 attachment/resource, not base64.
Treat tts_synthesize as irreversible and not replay-safe. Never retry PAYMENT_OUTCOME_UNKNOWN; inspect the wallet or settlement receipt and ask the user before any new quote or authorization.
Character limits vary by voice. If the text exceeds the character limit, split it into multiple chunks and call tts_synthesize for each chunk. Each chunk is a separate paid request. Get approval for the aggregate plan before proceeding.
Direct HTTP mode
Read direct-x402.md only when MCP tools are unavailable and the agent already has both HTTP and x402 signing capability.
Read errors.md when a tool or API call fails.
