---
name: t2000-pay
description: >-
  Pay for an MPP-protected API service using the t2000 wallet. Use when asked
  to call an AI model, search the web, generate images, send email, buy gift
  cards, send physical mail, check weather, execute code, or any task that
  requires a paid API. Handles the full MPP 402 challenge automatically.
  Use t2000_services to discover all available services first.
license: MIT
status: active
metadata:
  author: t2000
  version: "3.0"
  requires: t2000 CLI (npm install -g @t2000/cli)
  available: true
---

# t2000: Pay for MPP API Service

## Status
Active — bundled with `@t2000/cli` (no separate install).

**USDC payment is gasless.** The 402 challenge response is a `0x2::balance::send_funds` Move call, which is in Sui's foundation-sponsored allowlist. The wallet can pay even with 0 SUI in the gas reserve.

## Purpose
Make a paid HTTP request to any MPP-protected endpoint. Handles the 402
challenge, pays via Sui USDC, and returns the API response.

## Service Discovery
Before calling `t2 pay`, discover available services:
```bash
# CLI — search by name / category / endpoint
t2 services search "image"           # find image-gen services
t2 services search "chat"            # find chat/completion endpoints
t2 services search ""                # list everything

# CLI — inspect a service or endpoint
t2 services inspect https://mpp.t2000.ai/openai
t2 services inspect https://mpp.t2000.ai/openai/v1/chat/completions

# MCP — full catalog JSON
t2000_services
```

All services are hosted at `https://mpp.t2000.ai/`. See the `t2000-services` skill for the full discovery workflow.

## Command
```bash
t2 pay <url> [options]
```

## Options
| Option | Description | Default |
|--------|-------------|---------|
| `--method <method>` | HTTP method (GET, POST, PUT) | POST |
| `--data <json>` | Request body for POST/PUT | — |
| `--max-price <amount>` | Max USDC per request | $1.00 |
| `--header <key=value>` | Additional HTTP header (repeatable) | — |
| `--timeout <seconds>` | Request timeout in seconds | 30 |
| `--dry-run` | Show what would be paid without paying | — |

## Available Services (40 services, 88 endpoints)

> For the live, canonical list use `t2000_services` (MCP) or GET `https://mpp.t2000.ai/api/services`.
> The table below is a quick reference.

### AI Models
| Service | Endpoint | Price |
|---------|----------|-------|
| OpenAI Chat | `/openai/v1/chat/completions` | $0.01 |
| OpenAI Embeddings | `/openai/v1/embeddings` | $0.005 |
| OpenAI Audio Transcription | `/openai/v1/audio/transcriptions` | $0.01 |
| OpenAI Text-to-Speech | `/openai/v1/audio/speech` | $0.02 |
| Anthropic | `/anthropic/v1/messages` | $0.01 |
| Google Gemini Flash | `/gemini/v1beta/models/gemini-2.5-flash` | $0.005 |
| Google Gemini Pro | `/gemini/v1beta/models/gemini-2.5-pro` | $0.01 |
| Google Gemini Embeddings | `/gemini/v1beta/models/embedding-001` | $0.005 |
| DeepSeek | `/deepseek/v1/chat/completions` | $0.005 |
| Groq Chat | `/groq/v1/chat/completions` | $0.005 |
| Groq Audio Transcription | `/groq/v1/audio/transcriptions` | $0.005 |
| Together AI Chat | `/together/v1/chat/completions` | $0.005 |
| Together AI Embeddings | `/together/v1/embeddings` | $0.005 |
| Perplexity | `/perplexity/v1/chat/completions` | $0.01 |
| Mistral Chat | `/mistral/v1/chat/completions` | $0.005 |
| Mistral Embeddings | `/mistral/v1/embeddings` | $0.005 |
| Cohere Chat | `/cohere/v1/chat` | $0.005 |
| Cohere Embed | `/cohere/v1/embed` | $0.005 |
| Cohere Rerank | `/cohere/v1/rerank` | $0.005 |

### Media & Generation
| Service | Endpoint | Price |
|---------|----------|-------|
| OpenAI DALL-E | `/openai/v1/images/generations` | $0.05 |
| Fal.ai Flux Dev | `/fal/fal-ai/flux/dev` | $0.03 |
| Fal.ai Flux Pro | `/fal/fal-ai/flux-pro` | $0.05 |
| Fal.ai Flux Realism | `/fal/fal-ai/flux-realism` | $0.05 |
| Fal.ai Recraft 20B | `/fal/fal-ai/recraft-20b` | $0.05 |
| Fal.ai Whisper | `/fal/fal-ai/whisper` | $0.01 |
| Together AI Images | `/together/v1/images/generations` | $0.03 |
| ElevenLabs TTS | `/elevenlabs/v1/text-to-speech/:voiceId` | $0.05 |
| ElevenLabs SFX | `/elevenlabs/v1/sound-generation` | $0.05 |
| Replicate (any model) | `/replicate/v1/predictions` | $0.02 |
| Replicate (check status) | `/replicate/v1/predictions/status` | $0.005 |
| Stability AI (generate) | `/stability/v1/generate` | $0.03 |
| Stability AI (edit) | `/stability/v1/edit` | $0.03 |
| AssemblyAI (transcribe) | `/assemblyai/v1/transcribe` | $0.02 |
| AssemblyAI (get result) | `/assemblyai/v1/result` | $0.005 |

### Search
| Service | Endpoint | Price |
|---------|----------|-------|
| Brave Web Search | `/brave/v1/web/search` | $0.005 |
| Brave Image Search | `/brave/v1/images/search` | $0.005 |
| Brave News Search | `/brave/v1/news/search` | $0.005 |
| Brave Video Search | `/brave/v1/videos/search` | $0.005 |
| Brave Summarizer | `/brave/v1/summarizer/search` | $0.01 |
| Exa (semantic search) | `/exa/v1/search` | $0.01 |
| Exa (content extract) | `/exa/v1/contents` | $0.01 |
| Serper (Google search) | `/serper/v1/search` | $0.005 |
| Serper (image search) | `/serper/v1/images` | $0.005 |
| SerpAPI (Google search) | `/serpapi/v1/search` | $0.01 |
| SerpAPI (Google Flights) | `/serpapi/v1/flights` | $0.01 |
| SerpAPI (locations) | `/serpapi/v1/locations` | $0.005 |
| NewsAPI (headlines) | `/newsapi/v1/headlines` | $0.005 |
| NewsAPI (article search) | `/newsapi/v1/search` | $0.005 |

### Data
| Service | Endpoint | Price |
|---------|----------|-------|
| OpenWeather Current | `/openweather/v1/weather` | $0.005 |
| OpenWeather Forecast | `/openweather/v1/forecast` | $0.005 |
| Google Maps Geocode | `/googlemaps/v1/geocode` | $0.01 |
| Google Maps Places | `/googlemaps/v1/places` | $0.01 |
| Google Maps Directions | `/googlemaps/v1/directions` | $0.01 |
| CoinGecko (price) | `/coingecko/v1/price` | $0.005 |
| CoinGecko (markets) | `/coingecko/v1/markets` | $0.005 |
| CoinGecko (trending) | `/coingecko/v1/trending` | $0.005 |
| Alpha Vantage (quote) | `/alphavantage/v1/quote` | $0.005 |
| Alpha Vantage (daily) | `/alphavantage/v1/daily` | $0.005 |
| Alpha Vantage (search) | `/alphavantage/v1/search` | $0.005 |

### Web & Documents
| Service | Endpoint | Price |
|---------|----------|-------|
| Firecrawl Scrape | `/firecrawl/v1/scrape` | $0.01 |
| Firecrawl Crawl | `/firecrawl/v1/crawl` | $0.02 |
| Firecrawl Map | `/firecrawl/v1/map` | $0.01 |
| Firecrawl Extract | `/firecrawl/v1/extract` | $0.02 |
| Jina Reader | `/jina/v1/read` | $0.005 |
| ScreenshotOne | `/screenshot/v1/capture` | $0.01 |
| PDFShift (HTML to PDF) | `/pdfshift/v1/convert` | $0.01 |
| QR Code | `/qrcode/v1/generate` | $0.005 |

### Translation
| Service | Endpoint | Price |
|---------|----------|-------|
| DeepL (translate) | `/deepl/v1/translate` | $0.005 |
| Google Translate | `/translate/v1/translate` | $0.005 |
| Google Detect Language | `/translate/v1/detect` | $0.005 |

### Intelligence
| Service | Endpoint | Price |
|---------|----------|-------|
| Hunter.io (domain search) | `/hunter/v1/search` | $0.02 |
| Hunter.io (verify email) | `/hunter/v1/verify` | $0.02 |
| IPinfo (IP lookup) | `/ipinfo/v1/lookup` | $0.005 |

### Tools & Compute
| Service | Endpoint | Price |
|---------|----------|-------|
| Judge0 Code Exec | `/judge0/v1/submissions` | $0.005 |
| Judge0 Languages | `/judge0/v1/languages` | $0.005 |
| Resend Email | `/resend/v1/emails` | $0.005 |
| Resend Batch Email | `/resend/v1/emails/batch` | $0.01 |

### Commerce
| Service | Endpoint | Price |
|---------|----------|-------|
| Lob Postcards | `/lob/v1/postcards` | $1.00 |
| Lob Letters | `/lob/v1/letters` | $1.50 |
| Lob Address Verify | `/lob/v1/verify` | $0.01 |
| Printful (browse) | `/printful/v1/products` | $0.005 |
| Printful (estimate) | `/printful/v1/estimate` | $0.005 |
| Printful (order) | `/printful/v1/order` | dynamic |

### Messaging
| Service | Endpoint | Price |
|---------|----------|-------|
| Pushover | `/pushover/v1/push` | $0.005 |

### Security
| Service | Endpoint | Price |
|---------|----------|-------|
| VirusTotal (URL/file scan) | `/virustotal/v1/scan` | $0.01 |

### Finance
| Service | Endpoint | Price |
|---------|----------|-------|
| ExchangeRate (rates) | `/exchangerate/v1/rates` | $0.005 |
| ExchangeRate (convert) | `/exchangerate/v1/convert` | $0.005 |

### Utility
| Service | Endpoint | Price |
|---------|----------|-------|
| Short.io (URL shortener) | `/shortio/v1/shorten` | $0.005 |

## Example Commands

### Ask an AI model
```bash
t2 pay https://mpp.t2000.ai/openai/v1/chat/completions \
  --data '{"model":"gpt-4o","messages":[{"role":"user","content":"Explain quantum computing in 3 sentences"}]}'
```

### Search the web
```bash
t2 pay https://mpp.t2000.ai/brave/v1/web/search \
  --data '{"q":"latest Sui blockchain news"}'
```

### Generate an image
```bash
t2 pay https://mpp.t2000.ai/fal/fal-ai/flux/dev \
  --data '{"prompt":"a futuristic city at sunset, cyberpunk style"}'
```

### Check weather
```bash
t2 pay https://mpp.t2000.ai/openweather/v1/weather \
  --data '{"q":"Tokyo"}'
```

### Send an email
```bash
t2 pay https://mpp.t2000.ai/resend/v1/emails \
  --data '{"from":"agent@t2000.ai","to":"user@example.com","subject":"Hello","text":"Sent by an AI agent"}'
```

### Execute code
```bash
t2 pay https://mpp.t2000.ai/judge0/v1/submissions \
  --data '{"source_code":"print(42)","language_id":71}'
```

### Send physical mail
```bash
# Send a postcard
t2 pay https://mpp.t2000.ai/lob/v1/postcards \
  --max-price 2 \
  --data '{
    "to":{"name":"Jane Doe","address_line1":"123 Main St","address_city":"San Francisco","address_state":"CA","address_zip":"94105"},
    "from":{"name":"AI Agent","address_line1":"456 Oak Ave","address_city":"Palo Alto","address_state":"CA","address_zip":"94301"},
    "front":"https://example.com/front.png",
    "back":"https://example.com/back.png",
    "use_type":"operational"
  }'

# Send a letter
t2 pay https://mpp.t2000.ai/lob/v1/letters \
  --max-price 2 \
  --data '{
    "to":{"name":"Jane Doe","address_line1":"123 Main St","address_city":"San Francisco","address_state":"CA","address_zip":"94105"},
    "from":{"name":"AI Agent","address_line1":"456 Oak Ave","address_city":"Palo Alto","address_state":"CA","address_zip":"94301"},
    "file":"https://example.com/letter.pdf",
    "use_type":"operational",
    "color":false
  }'

# Verify a US address
t2 pay https://mpp.t2000.ai/lob/v1/verify \
  --data '{"primary_line":"123 Main St","city":"San Francisco","state":"CA","zip_code":"94105"}'
```

### Get directions
```bash
t2 pay https://mpp.t2000.ai/googlemaps/v1/directions \
  --data '{"origin":"San Francisco, CA","destination":"Palo Alto, CA"}'
```

### Get crypto prices
```bash
t2 pay https://mpp.t2000.ai/coingecko/v1/price \
  --data '{"ids":"sui,bitcoin,ethereum","vs_currencies":"usd"}'
```

### Get a stock quote
```bash
t2 pay https://mpp.t2000.ai/alphavantage/v1/quote \
  --data '{"symbol":"AAPL"}'
```

### Get breaking news
```bash
t2 pay https://mpp.t2000.ai/newsapi/v1/headlines \
  --data '{"country":"us","category":"technology"}'
```

### Translate text
```bash
t2 pay https://mpp.t2000.ai/deepl/v1/translate \
  --data '{"text":["Hello, how are you?"],"target_lang":"ES"}'
```

### Semantic search
```bash
t2 pay https://mpp.t2000.ai/exa/v1/search \
  --data '{"query":"best practices for AI agent payments","numResults":5}'
```

### Read a URL as markdown
```bash
t2 pay https://mpp.t2000.ai/jina/v1/read \
  --data '{"url":"https://docs.sui.io/concepts/tokenomics"}'
```

### Google search (structured)
```bash
t2 pay https://mpp.t2000.ai/serper/v1/search \
  --data '{"q":"Sui blockchain TVL 2026"}'
```

### Screenshot a webpage
```bash
t2 pay https://mpp.t2000.ai/screenshot/v1/capture \
  --data '{"url":"https://example.com","format":"png","viewport_width":"1280"}'
```

### Generate a QR code
```bash
t2 pay https://mpp.t2000.ai/qrcode/v1/generate \
  --data '{"data":"https://t2000.ai","size":"400x400"}'
```

### Convert HTML to PDF
```bash
t2 pay https://mpp.t2000.ai/pdfshift/v1/convert \
  --data '{"source":"https://t2000.ai/docs"}'
```

### Run a Replicate model
```bash
t2 pay https://mpp.t2000.ai/replicate/v1/predictions \
  --data '{"model":"meta/llama-3-70b-instruct","input":{"prompt":"Explain DeFi in 3 sentences"}}'
```

### Find emails for a domain
```bash
t2 pay https://mpp.t2000.ai/hunter/v1/search \
  --data '{"domain":"mystenlabs.com"}'
```

### Look up an IP address
```bash
t2 pay https://mpp.t2000.ai/ipinfo/v1/lookup \
  --data '{"ip":"8.8.8.8"}'
```

### Order print-on-demand merchandise
```bash
t2 pay https://mpp.t2000.ai/printful/v1/order \
  --max-price 30 \
  --data '{"recipient":{"name":"Jane Doe","address1":"123 Main St","city":"SF","state_code":"CA","country_code":"US","zip":"94105"},"items":[{"variant_id":4012,"quantity":1,"files":[{"url":"https://example.com/design.png"}]}]}'
```

### Search for flights
```bash
t2 pay https://mpp.t2000.ai/serpapi/v1/flights \
  --data '{"departure_id":"LAX","arrival_id":"NRT","outbound_date":"2026-05-01","type":"2"}'
```

### Convert currency
```bash
t2 pay https://mpp.t2000.ai/exchangerate/v1/convert \
  --data '{"from":"USD","to":"EUR","amount":100}'
```

### Scan a URL for malware
```bash
t2 pay https://mpp.t2000.ai/virustotal/v1/scan \
  --data '{"url":"https://suspicious-site.com"}'
```

### Shorten a URL
```bash
t2 pay https://mpp.t2000.ai/shortio/v1/shorten \
  --data '{"url":"https://example.com/very/long/url/path"}'
```

### Send a push notification
```bash
t2 pay https://mpp.t2000.ai/pushover/v1/push \
  --data '{"user":"USER_KEY","message":"Your agent has a message!"}'
```

## Flow (automatic)
1. Makes initial HTTP request to the URL
2. If 402: reads MPP challenge for amount and terms
3. If price <= --max-price: pays via Sui USDC
4. Retries with credential header
5. Returns the API response body

## Safety
- If requested price exceeds --max-price, payment is refused (no funds spent)
- Default max-price: $1.00 USDC per request
- For commerce (mail, merch), set --max-price higher
- Payment only broadcast after 402 terms are validated

## Errors
- `PRICE_EXCEEDS_LIMIT`: API asking more than --max-price
- `INSUFFICIENT_BALANCE`: not enough available USDC
- `UNSUPPORTED_NETWORK`: MPP requires a network other than Sui
- `PAYMENT_EXPIRED`: payment challenge has expired
- `DUPLICATE_PAYMENT`: nonce already used on-chain

## MCP
Via MCP: use `t2000_services` to discover services, then `t2000_pay` to call them.
