Skip to main content

Give Your AI Superpowers

Connect Claude, Cursor, or any MCP-compatible AI to 15+ tools — images, video, music, text, speech, and more.

No signupNo subscriptionPay only when you use itFull privacy

Connect in 30 Seconds

Copy this into your MCP settings and you're done.

Add to your MCP settings JSON:
{
  "mcpServers": {
    "sats4ai": {
      "url": "https://sats4ai.com/api/mcp"
    }
  }
}
Claude Desktop: claude_desktop_config.json
Claude Code: .claude/settings.json
Cursor: .cursor/mcp.json

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.

1

Create Payment

AI calls create_payment and gets a Lightning invoice

You Pay

Pay the Lightning invoice with your wallet

3

Verify (optional)

AI checks payment status

4

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.

IDServicePrice (Satoshis)
1Text (Standard)333 characters/Sat, min 5
6Text (Best)100 characters/Sat, min 15
2Image100
8Image150
16Image200
25Video50/unit
24Video from Image100/sec
23Music200
3Text-to-Speech300
10Speech-to-Text10/minute
5Vision/Image Analysis21
173D Model350
27OCR / Text Extraction10/page
20SMSvaries

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_payment

Get a Lightning invoice for any service

check_payment_status

Check if your payment was received

list_models

List all available AI models

get_model_pricing

Get pricing for a specific model

check_job_status

Check progress of async jobs

get_job_result

Get result of completed jobs

Paid Tools (instant result)

generate_image

Generate images from text prompts

generate_text

AI text generation, chat, and file/image analysis

generate_music

Create music from text prompts

synthesize_speech

Convert text to speech audio

transcribe_speech

Transcribe audio to text (13 languages)

analyze_image

AI vision and image analysis

extract_text_ocr

Extract text from PDFs and images

send_sms

Send SMS messages globally

convert_file

Convert between file formats

Paid Tools (async — requires polling)

generate_videoasync

Generate videos from text prompts

generate_video_from_imageasync

Animate images into videos

generate_3d_modelasync

Generate 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"
  }
}
CodeMeaning
-32700Invalid JSON
-32600Missing required fields
-32601Method not found
-32602Wrong parameter types
-32603Internal error (service failure or unpaid invoice)

MCP Resources

MCP clients can also read these resources directly:

URIDescription
sats4ai://modelsAll AI models with specs and pricing
sats4ai://pricingPricing 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 + pricing

What 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.

Learn more about MCP

Need Help?

Questions or issues? Visit our contact page or check the official MCP docs.