Give Your AI Superpowers
Connect Claude, Cursor, or any MCP-compatible AI to 15+ tools — images, video, music, text, speech, and more.
Connect in 30 Seconds
Copy this into your MCP settings and you're done.
{
"mcpServers": {
"sats4ai": {
"url": "https://sats4ai.com/api/mcp"
}
}
}Also on the Official MCP Registry as com.sats4ai/bitcoin-ai-tools.
How Payments Work
Your AI handles steps 1, 3, and 4 automatically. You just pay the invoice.
Create Payment
AI calls create_payment and gets a Lightning invoice
You Pay
Pay the Lightning invoice with your wallet
Verify (optional)
AI checks payment status
Get Result
AI calls the tool and returns your result
Available Services & Pricing
All prices in Satoshis. Use the Model ID when calling create_payment.
| ID | Service | Price (Satoshis) |
|---|---|---|
| 1 | Text (Standard) | 333 characters/Sat, min 5 |
| 6 | Text (Best) | 100 characters/Sat, min 15 |
| 2 | Image | 100 |
| 8 | Image | 150 |
| 16 | Image | 200 |
| 25 | Video | 50/unit |
| 24 | Video from Image | 100/sec |
| 23 | Music | 200 |
| 3 | Text-to-Speech | 300 |
| 10 | Speech-to-Text | 10/minute |
| 5 | Vision/Image Analysis | 21 |
| 17 | 3D Model | 350 |
| 27 | OCR / Text Extraction | 10/page |
| 20 | SMS | varies |
Text and SMS use dynamic pricing. Call create_payment to get an exact quote. Free tools: list_models, get_model_pricing.
Step-by-Step: Manual Usage
If your AI client doesn't auto-handle MCP, or you want to call it directly with curl:
1Initialize Connection
curl -X POST https://sats4ai.com/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": { "name": "my-client", "version": "1.0.0" }
}
}'2Create Payment (get Lightning invoice)
curl -X POST https://sats4ai.com/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "create_payment",
"arguments": {
"toolName": "generate_image",
"modelId": 2,
"quantity": 1
}
}
}'Response:
{
"result": {
"content": [{
"type": "text",
"text": "{
\"paymentId\": \"abc123\",
\"lightningInvoice\": \"lnbc...<LIGHTNING_INVOICE>\",
\"amountSats\": 100
}"
}]
}
}Copy the lightningInvoice and pay it with your Lightning wallet. Save the paymentId.
3Call the Service
After payment, pass the paymentId to the tool you want to use:
curl -X POST https://sats4ai.com/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "generate_image",
"arguments": {
"paymentId": "abc123",
"prompt": "A futuristic Bitcoin-powered robot",
"modelId": "xai/grok-imagine-image",
"amount": 1
}
}
}'All Available Tools
Free Tools (no payment needed)
create_paymentGet a Lightning invoice for any service
check_payment_statusCheck if your payment was received
list_modelsList all available AI models
get_model_pricingGet pricing for a specific model
check_job_statusCheck progress of async jobs
get_job_resultGet result of completed jobs
Paid Tools (instant result)
generate_imageGenerate images from text prompts
generate_textAI text generation, chat, and file/image analysis
generate_musicCreate music from text prompts
synthesize_speechConvert text to speech audio
transcribe_speechTranscribe audio to text (13 languages)
analyze_imageAI vision and image analysis
extract_text_ocrExtract text from PDFs and images
send_smsSend SMS messages globally
convert_fileConvert between file formats
Paid Tools (async — requires polling)
generate_videoasyncGenerate videos from text prompts
generate_video_from_imageasyncAnimate images into videos
generate_3d_modelasyncGenerate 3D models from images
Async tools return a requestId. Use check_job_status to poll, then get_job_result to retrieve the output.
Tool Reference
Copy-paste JSON for each tool. These go inside params.arguments.
create_payment — get a Lightning invoice
For most services (image, video, music, etc.):
{
"toolName": "generate_image", // Tool to pay for
"modelId": 2, // Model ID from pricing table
"quantity": 1 // Number of outputs
}For text generation:
{
"toolName": "generate_text",
"modelId": 1, // 1 = GPT-OSS (Standard), 6 = Kimi K2.5 (Best)
"quantity": 1
}For SMS (destination-aware pricing):
{
"toolName": "send_sms",
"modelId": 20,
"phoneNumber": "+14155550100", // Required: used for rate lookup
"message": "Hello from Sats4AI!" // Required: validated here (max 120 chars)
}generate_image — create images from text
{
"paymentId": "abc123",
"prompt": "A futuristic city at sunset",
"modelId": "xai/grok-imagine-image", // Replicate model ID string
"amount": 1, // Number of images
"imageBase64": "..." // Optional: base64 image for img2img
}generate_text — AI chat, file review, and image analysis
Supports file attachments (send extracted text as fileContext) and image analysis (send base64 as imageBase64, Kimi K2.5 only).
{
"paymentId": "abc123",
"prompt": "Review this code for bugs",
"modelId": 6, // 1 = GPT-OSS, 6 = Kimi K2.5
"systemPrompt": "You are a helpful assistant", // Optional
"fileContext": "function add(a, b) { ... }", // Optional: extracted file text
"fileName": "utils.js", // Optional: file name
"imageBase64": "data:image/png;base64,..." // Optional: K2.5 vision only
}generate_video — text to video async
{
"paymentId": "abc123",
"prompt": "A rocket launching into space",
"modelId": 25, // 25 = Kling v3
"duration": 5, // Seconds (5 or 10)
"mode": "pro", // "standard" or "pro"
"generate_audio": false // Include audio track
}generate_video_from_image — animate an image async
{
"paymentId": "abc123",
"imageUrl": "https://example.com/image.jpg",
"prompt": "The scene comes to life", // Optional motion guidance
"modelId": 24, // 24 = Grok Imagine Video
"duration": 5,
"mode": "pro"
}generate_music — create music from text
{
"paymentId": "abc123",
"prompt": "Upbeat electronic music with a driving beat",
"modelId": 23, // 23 = MiniMax Music-1.5
"duration": 30, // Duration in seconds (optional)
"referenceAudio": "" // Optional: URL to reference audio
}synthesize_speech — text to speech
{
"paymentId": "abc123",
"text": "Hello, this is a test of the speech synthesis.",
"modelId": 3, // 3 = MiniMax Speech-2.6-Turbo
"voice": "default" // Optional: voice ID
}transcribe_speech — audio to text (13 languages)
{
"paymentId": "abc123",
"file": "<base64-encoded-audio>",
"type": "transcription", // or "translation"
"language": "en", // Optional: omit for auto-detect
"model": "Transcription"
}Languages: en, zh, hi, es, ar, fr, pt, ru, de, ja, ko, it, nl
analyze_image — vision/image analysis
{
"paymentId": "abc123",
"imageUrl": "https://example.com/image.jpg",
"prompt": "What objects are in this image?",
"modelId": 5 // 5 = Qwen-VL-Chat
}generate_3d_model — image to 3D async
{
"paymentId": "abc123",
"imageUrl": "https://example.com/object.jpg",
"modelId": 17 // 17 = Hunyuan 3D 3.1
}send_sms — send text messages globally
{
"paymentId": "abc123",
"phoneNumber": "+14155550100", // Same as in create_payment
"message": "Hello from Sats4AI!" // Max 120 chars
}A 40-character disclaimer is auto-appended to every SMS.
extract_text_ocr — extract text from PDFs and images
{
"paymentId": "abc123",
"document": "data:application/pdf;base64,...", // PDF or image as data URI
"model": "Mistral OCR"
}Returns Markdown with tables, headers, and formatting preserved. 10 Sats/page.
convert_file — convert between file formats
{
"paymentId": "abc123",
"fileBase64": "...", // Base64-encoded file
"fileName": "document.docx",
"extensionFrom": "docx",
"extensionTo": "pdf"
}list_models / get_model_pricing — free lookup tools
// list_models — filter by type (optional)
{
"type": "Image" // Image, Conversation, Video, etc.
}
// get_model_pricing — look up a specific model
{
"modelId": 2
}check_job_status / get_job_result — async job helpers
// check_job_status
{
"requestId": "xyz789",
"jobType": "video" // "video", "video_from_image", or "3d"
}
// get_job_result
{
"requestId": "xyz789",
"jobType": "video"
}Async Operations (Video, 3D)
Video, video-from-image, and 3D generation take time. They return a requestId immediately — poll until complete:
// Step 1: Generate video (returns requestId)
const videoJob = await mcpRequest('tools/call', {
name: 'generate_video',
arguments: {
paymentId: 'abc123',
prompt: 'A rocket launching into space',
modelId: 25,
duration: 5,
mode: 'pro',
generate_audio: false
}
});
// Returns: { requestId: 'xyz789', status: 'IN_PROGRESS' }
// Step 2: Poll status until complete
let status;
do {
await sleep(5000);
status = await mcpRequest('tools/call', {
name: 'check_job_status',
arguments: { requestId: 'xyz789', jobType: 'video' }
});
} while (status.status === 'IN_PROGRESS');
// Step 3: Get the result
const result = await mcpRequest('tools/call', {
name: 'get_job_result',
arguments: { requestId: 'xyz789', jobType: 'video' }
});
// Returns: { videoUrl: 'https://...' }Error Handling
Errors come back in standard JSON-RPC format:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32603,
"message": "Payment has not been received yet"
}
}| Code | Meaning |
|---|---|
-32700 | Invalid JSON |
-32600 | Missing required fields |
-32601 | Method not found |
-32602 | Wrong parameter types |
-32603 | Internal error (service failure or unpaid invoice) |
MCP Resources
MCP clients can also read these resources directly:
| URI | Description |
|---|---|
sats4ai://models | All AI models with specs and pricing |
sats4ai://pricing | Pricing for all services |
OpenClaw Integration
OpenClaw agents can use Sats4AI tools directly:
Option 1: MCP Skill (Recommended)
// Add to openclaw.json
{
"mcpServers": {
"sats4ai": { "url": "https://sats4ai.com/api/mcp" }
}
}Option 2: L402 with lnget
# Agent pays automatically — no API key needed
lnget POST https://sats4ai.com/api/l402/image \
-d '{"input":{"prompt":"A Viking visiting Constantinople"},"model":"Best"}'Service Discovery
curl https://sats4ai.com/.well-known/mcp # MCP manifest
curl https://sats4ai.com/.well-known/l402-services # L402 catalog + pricingWhat is MCP?
MCP (Model Context Protocol) is an open standard by Anthropic that lets AI assistants connect to external tools and services. Think of it as a universal plug — any AI that supports MCP can use any MCP-compatible service.
Sats4AI's MCP server adds Bitcoin Lightning payments on top. Your AI assistant can generate images, write text, create videos, and more — paying per use with Sats instead of monthly subscriptions. No account needed, no personal data collected, no recurring charges. You only pay when you actually use a tool.
Need Help?
Questions or issues? Visit our contact page or check the official MCP docs.