{
  "markdown": "# sats4ai-mcp\n\n<a href=\"https://glama.ai/mcp/servers/@cnghockey/sats4ai\">\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/@cnghockey/sats4ai/badge\" />\n</a>\n\n**The permissionless communication supercharger for AI agents. 40+ tools paid with Bitcoin Lightning. No signup, no API keys, no KYC.**\n\nA remote [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) 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.\n\n## Quick Setup\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json` (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS, `%APPDATA%\\Claude\\claude_desktop_config.json` on Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"sats4ai\": {\n      \"url\": \"https://sats4ai.com/api/mcp\"\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add sats4ai --transport http https://sats4ai.com/api/mcp\n```\n\nVerify 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](#payment-via-agent-wallets)).\n\n### Cursor\n\nSettings → MCP → Edit Config, then add:\n\n```json\n{\n  \"mcpServers\": {\n    \"sats4ai\": {\n      \"url\": \"https://sats4ai.com/api/mcp\"\n    }\n  }\n}\n```\n\nRestart 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](#payment-via-agent-wallets)).\n\n### Windsurf\n\nEdit `~/.codeium/windsurf/mcp_config.json` (create it if missing). **Important**: Windsurf uses `serverUrl` (not `url`) for remote HTTP MCP servers:\n\n```json\n{\n  \"mcpServers\": {\n    \"sats4ai\": {\n      \"serverUrl\": \"https://sats4ai.com/api/mcp\"\n    }\n  }\n}\n```\n\nRestart 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](#payment-via-agent-wallets)).\n\n### stdio proxy (legacy MCP clients)\n\nFor clients that don't support remote HTTP servers, use the bundled stdio proxy:\n\n```bash\nnpx sats4ai-mcp\n```\n\nOr in your config:\n\n```json\n{\n  \"mcpServers\": {\n    \"sats4ai\": {\n      \"command\": \"npx\",\n      \"args\": [\"sats4ai-mcp\"]\n    }\n  }\n}\n```\n\n### Any MCP Client\n\nThe server URL is:\n\n```\nhttps://sats4ai.com/api/mcp\n```\n\nThis is a remote HTTP server — no local process, no dependencies, no installation needed.\n\n## What Can It Do?\n\nOnce connected, just ask your agent. These prompts exercise the full flow — discover, pay the Lightning invoice, get the result:\n\n- *\"Translate this paragraph to Spanish with Sats4AI — create the payment, pay the invoice with my lightning wallet, then run the translation.\"*\n- *\"Check what an SMS to +33612345678 costs, then send it: 'Your appointment is confirmed for 3pm tomorrow.'\"*\n- *\"Generate an image of a lighthouse in a thunderstorm — pay the invoice and show me the result.\"*\n- *\"Send an AI voice agent to call +14155551234 and reschedule my dentist appointment, then give me the transcript.\"*\n- *\"Turn this EPUB into an audiobook — create the payment, then poll `check_job_status` until it's done.\"*\n- *\"Remove the background from this image.\"*\n- *\"Transcribe this audio file, then translate the transcript to English.\"*\n- *\"Get a quote for faxing this 3-page PDF to +4930123456, then send it.\"*\n\n## Available Tools\n\n### AI Generation\n| Tool | Description | Price |\n|------|-------------|-------|\n| `image` | Generate images from text prompts | 100-200 sats |\n| `video` | Generate videos from text prompts | ~250-400 sats/sec by resolution (768p 250 / 2K 400) |\n| `video_from_image` | Animate a still image into video | ~250-400 sats/sec by resolution (768p 250 / 2K 400) |\n| `text` | Chat with AI language models (Kimi K3, 1M context, vision) | ~1 sat/10 chars (best) · ~1 sat/1000 (standard) |\n| `translate_text` | Translate text across 119 languages | from 1 sat/1000 chars |\n| `translate_rare_language` | Translate into **452 languages frontier models don't serve** — Bhojpuri, Maithili, Magahi, Manipuri, Quechua, Shan… each with a measured quality score | from 50 sats |\n| `music` | Generate songs with AI vocals | 500 sats |\n| `3d` | Convert a photo to a 3D GLB model | 1,600 sats |\n\n> **Translation price varies by language.** The target language picks the engine, so a language\n> served by a stronger model costs more than the standard 1 sat/1000 characters. `GET /api/languages`\n> returns the exact price, the model and its measured chrF score for every language, and the 402\n> challenge always quotes the real amount before you pay.\n\n\n### Audio & Speech\n| Tool | Description | Price |\n|------|-------------|-------|\n| `tts` | Text to speech (3 tiers, 602+ languages) | per-char, from 1 sat |\n| `transcription` | Speech to text (13 languages) | 10 sats/min |\n| `voice_clone` | Clone a voice from an audio sample | 7,500 sats |\n| `epub_to_audiobook` | Convert books (EPUB/PDF/TXT) to AI-narrated audiobooks | 500+ sats |\n| `translate_epub` | Translate a whole EPUB into another language — EPUB in, EPUB out, markup intact (async; `create_payment` needs `characterCount` + `targetLanguage`) | per character on the target language's engine rate, min 50 sats |\n\n### Image Processing\n| Tool | Description | Price |\n|------|-------------|-------|\n| `remove_background` | Remove background from any image (BiRefNet, SOTA) | 44 sats |\n| `upscale_image` | Upscale images 2x/4x with Real-ESRGAN | 5 sats |\n| `restore_face` | Restore blurry/damaged faces (CodeFormer) | 25 sats |\n| `colorize_image` | Colorize B&W photos (DDColor, ICCV 2023) | 5 sats |\n| `deblur_image` | Remove camera-shake blur (NAFNet, ECCV 2022) | 110 sats |\n| `render_card` | Typographic title card (PNG/JPEG) — deterministic layout, the text you send is the text that appears | 5 sats |\n| `detect_nsfw` | Classify image safety (normal/suggestive/explicit) | 2 sats |\n| `detect_objects` | Detect objects with bounding boxes (Grounding DINO) | 5 sats |\n| `remove_object` | Remove objects by description — no mask needed | 130 sats |\n| `image_edit` | Edit images with AI instructions | Dynamic (varies by model) — check `get_model_pricing` |\n\n### Vision & Documents\n| Tool | Description | Price |\n|------|-------------|-------|\n| `vision` | Analyze and describe image content | 21 sats |\n| `ocr` | Extract text from PDFs and images | 10 sats/page |\n| `extract_receipt` | Receipt to structured JSON | 25 sats/page |\n| `file_convert` | Convert between 200+ file formats | 100 sats |\n| `pdf_merge` | Merge multiple PDFs into one | 100 sats |\n| `convert_html_to_pdf` | HTML/Markdown to PDF | 50 sats |\n| `e_signature` | Sign a PDF with a typed or drawn signature | 1,000 sats |\n| `boardingpass_wallet` | Airline boarding pass (PDF/screenshot) to a Google Wallet pass | 100 sats/pass |\n\n### Communication\n| Tool | Description | Price |\n|------|-------------|-------|\n| `send_email` | Send email to any address | 200 sats |\n| `send_sms` | Send SMS worldwide | Dynamic (varies by destination) — `create_payment` returns the exact quote |\n| `place_call` | Place automated phone calls | Dynamic (varies by destination) — `create_payment` returns the exact quote |\n| `ai_call` | Send an AI voice agent to make a two-way call | Varies by destination and duration — `create_payment` returns the exact quote |\n| `send_fax` | Send a fax worldwide (PDF URL or typed text) | 500 sats (≤10 pages), +50 sats/page after |\n| `receive_fax` | Open a 24h window to receive a fax, delivered to email | 500 sats (+200 OCR add-on) |\n\n### Helper Tools\n| Tool | Description |\n|------|-------------|\n| `list_models` | Browse available AI models and pricing |\n| `get_model_pricing` | Get pricing for a specific model |\n| `create_payment` | Create a Lightning invoice for a service |\n| `check_payment_status` | Check if payment was received |\n| `check_job_status` | Poll async jobs (video, 3D, audiobook, EPUB translation) |\n| `get_job_result` | Get completed job results |\n| `request_refund` | Request a refund for a failed service |\n| `vote_on_service` | Upvote or downvote a planned service |\n| `list_planned_services` | See upcoming services and vote |\n\n## How It Works\n\n1. **Agent calls `list_models`** to discover available models and pricing\n2. **Agent calls `create_payment`** — gets a Lightning invoice\n3. **Payment is made** via the agent's Lightning wallet (e.g., [lightning-wallet-mcp](https://www.npmjs.com/package/lightning-wallet-mcp))\n4. **Agent calls the tool** (e.g., `image`, `text`) with the `paymentId`\n5. **Result is returned** — base64 image, text, URL, etc.\n\nNo API keys. No accounts. No rate limits tied to identity. Just Bitcoin and AI.\n\n## Error Handling & Refunds\n\nWhen a paid tool fails after payment, the JSON-RPC error response includes refund information:\n\n```json\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"error\": {\n    \"code\": -32603,\n    \"message\": \"Image generation failed\",\n    \"data\": {\n      \"refund\": {\n        \"charge_id\": 12345,\n        \"refund_amount\": 200,\n        \"lnurl_withdraw\": \"lnurl1dp68gurn8ghj7...\"\n      }\n    }\n  }\n}\n```\n\nClaim the refund using any LNURL-compatible wallet or the `claim_lnurl_withdraw` tool from `lightning-wallet`.\n\nErrors 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`.\n\n## Payment via Agent Wallets\n\nPair with a Lightning wallet MCP server so your agent can pay autonomously:\n\n```json\n{\n  \"mcpServers\": {\n    \"sats4ai\": {\n      \"url\": \"https://sats4ai.com/api/mcp\"\n    },\n    \"lightning-wallet\": {\n      \"command\": \"npx\",\n      \"args\": [\"lightning-wallet-mcp\"]\n    }\n  }\n}\n```\n\nThe agent uses `lightning-wallet` to pay invoices from `sats4ai`, enabling fully autonomous AI tool usage.\n\n## Block Buzz\n\nRunning [Block Buzz](https://github.com/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.\n\nThe one-step path is the **[Sats4AI persona pack](https://github.com/cnghockey/sats4ai-buzz-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.\n\n```bash\ngit clone https://github.com/cnghockey/sats4ai-buzz-pack\nbuzz pack validate ./sats4ai-buzz-pack\n```\n\nWiring 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.\n\n## L402 API\n\nFor direct HTTP integration without MCP, use the L402 API:\n\n```bash\n# Step 1: Request -> get 402 + Lightning invoice\ncurl -X POST https://sats4ai.com/api/l402/generate-image \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"input\": {\"prompt\": \"a cat in space\"}}' -i\n\n# Step 2: Pay the invoice with any Lightning wallet\n\n# Step 3: Re-send with proof\ncurl -X POST https://sats4ai.com/api/l402/generate-image \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: L402 <macaroon>:<preimage>\" \\\n  -d '{\"input\": {\"prompt\": \"a cat in space\"}}'\n```\n\nOr skip the manual steps entirely: our L402 endpoints speak the standard L402 protocol, so [**lnget**](https://github.com/lightninglabs/lnget) — Lightning Labs' own L402 client — pays them automatically. Point it at your Lightning node and call the endpoint:\n\n```bash\nlnget -X POST -d '{\"text\": \"Hello\", \"targetLanguage\": \"Spanish\"}' \\\n  --content-type application/json --max-cost 50 \\\n  https://sats4ai.com/api/l402/translate-text\n# Fetches the 402, pays the invoice, retries, prints the result.\n```\n\nFull L402 docs: [sats4ai.com/l402](https://sats4ai.com/l402) | Code examples: [sats4ai-l402-examples](https://github.com/cnghockey/sats4ai-l402-examples)\n\n## Service Discovery\n\nMachine-readable endpoints for agent discovery:\n\n```bash\n# Full service catalog with pricing, quality benchmarks, and performance metadata\nGET https://sats4ai.com/.well-known/l402-services\n\n# MCP tool catalog with latency (p50/p95), reliability, and failure modes\nGET https://sats4ai.com/api/mcp/discovery\n\n# Semantic search — find tools by capability\nGET https://sats4ai.com/api/discover?q=translate\n\n# Per-service metadata with enums and input schemas\nGET https://sats4ai.com/api/l402/{service}\n```\n\nEvery 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.\n\n## Programmatic Usage\n\n```js\nconst { SERVER_URL, TOOLS, getClaudeConfig } = require(\"sats4ai-mcp\");\n\nconsole.log(SERVER_URL);       // \"https://sats4ai.com/api/mcp\"\nconsole.log(TOOLS);            // [\"image\", \"video\", \"text\", ...]\nconsole.log(getClaudeConfig()) // { mcpServers: { sats4ai: { url: \"...\" } } }\n```\n\n## Security\n\nFound a vulnerability? **Do not open a public issue.** Email [sats4ai@gmail.com](mailto:sats4ai@gmail.com). See [SECURITY.md](SECURITY.md) for full disclosure policy and scope.\n\n## Links\n\n- **Website**: [sats4ai.com](https://sats4ai.com)\n- **MCP Docs**: [sats4ai.com/mcp](https://sats4ai.com/mcp)\n- **L402 API Docs**: [sats4ai.com/l402](https://sats4ai.com/l402)\n- **L402 Code Examples**: [github.com/cnghockey/sats4ai-l402-examples](https://github.com/cnghockey/sats4ai-l402-examples)\n- **Service Discovery**: [sats4ai.com/.well-known/l402-services](https://sats4ai.com/.well-known/l402-services)\n- **Semantic Search**: [sats4ai.com/api/discover](https://sats4ai.com/api/discover)\n- **Security Policy**: [SECURITY.md](SECURITY.md)\n\n## License\n\nMIT\n",
  "bytes": 14466,
  "sha": "9a5986226966328cceefe24ef5dfa3581ed6a4acca64e03d5e2fb436ec29b496",
  "repo_slug": "cnghockey/sats4ai-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_cnghockey_sats4ai_baec212f/readme"
}