Documentation
Everything an agent or a human needs to call 818+ tools through UnifyAPI.
Overview
UnifyAPI is a unified API gateway that exposes 818 tools from 250 providers across 24 categories behind a single API key and one billing rail. Sign up with email or Google (powered by Privy), get a key, and start calling tools in under a minute.
Three ways to reach the catalog:
- MCP endpoint — for AI agents (Claude, GPT, etc.)
- REST API — plain HTTP for any client or script
- OpenAPI 3.1 spec — for SDK codegen
- /api/tools — full catalog as JSON
- /api/openapi — OpenAPI 3.1 spec
- /api/agent-card — machine-readable agent card
- /api/mcp — MCP JSON-RPC endpoint
Quick start
- Create an account — sign up at /login with your email or Google account. Powered by Privy.
- Get an API key — go to the dashboard, click Create new key. Copy it immediately — it won't be shown again.
- Top up your balance — use USDC via x402 or simulation mode from the dashboard.
- Call your first tool:
curl -X POST https://unifyapi.pro/api/call/crypto.price \
-H "Authorization: Bearer uak_live_..." \
-H "Content-Type: application/json" \
-d '{ "coin": "bitcoin", "vs": "usd" }'Response:
{
"tool": "crypto.price",
"cost": 0.002,
"upstream": "live",
"latencyMs": 143,
"balance": 4.998,
"result": { "coin": "bitcoin", "vs": "usd", "price": 64210 }
}Authentication
Sign up with email or Google at /login. Authentication is handled by Privy — no passwords stored on our side.
Once logged in, create an API key from the dashboard. Keys are prefixed uak_live_ and must be sent as a Bearer token on every tool call:
Authorization: Bearer uak_live_xxxxxxxxxxxxxxxxxxxxxxxx
The /api/tools, /api/openapi, and /api/agent-card endpoints are public. /api/call/{slug} and tools/call via MCP require a valid key with sufficient balance.
You can revoke any key at any time from the dashboard. Revoked keys are rejected immediately.
REST API
Call any tool by its slug. The request body is validated against the tool's input schema before execution.
POST /api/call/{slug}
Authorization: Bearer uak_live_...
Content-Type: application/json
{ ...tool input fields... }Example — get weather forecast for Jakarta:
curl -X POST https://unifyapi.pro/api/call/weather.forecast \
-H "Authorization: Bearer uak_live_..." \
-H "Content-Type: application/json" \
-d '{ "latitude": -6.2088, "longitude": 106.8456, "days": 3 }'Every response includes billing metadata:
{
"tool": "weather.forecast",
"cost": 0.001,
"upstream": "live",
"latencyMs": 210,
"balance": 4.997,
"result": { ...tool output... }
}Error responses:
401 { "error": "Unauthorized" } — missing or revoked key
402 { "error": "Insufficient balance" } — top up required
404 { "error": "Tool not found" }
422 { "error": "Validation failed", ... } — bad inputMCP endpoint
The MCP server runs at /api/mcp and speaks JSON-RPC 2.0 over HTTP POST (streamable-HTTP transport). Supported methods:
initialize— handshake, returns protocol version and capabilitiesping— health checktools/list— returns all active tools with name, description, and input schema (no auth required)tools/call— executes a tool (requires Bearer token + balance)
Example — initialize:
POST /api/mcp
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"clientInfo": { "name": "my-agent", "version": "1.0" }
}
}Example — call a tool:
POST /api/mcp
Authorization: Bearer uak_live_...
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "crypto__price",
"arguments": { "coin": "ethereum", "vs": "usd" }
}
}Tool slugs use dots (crypto.price) in the catalog but double underscores (crypto__price) in MCP to satisfy client requirements.
Claude Desktop integration
Add UnifyAPI to your claude_desktop_config.json to give Claude access to all 818 tools instantly:
{
"mcpServers": {
"unifyapi": {
"type": "http",
"url": "https://unifyapi.pro/api/mcp",
"headers": {
"Authorization": "Bearer uak_live_..."
}
}
}
}For local development replace the URL with http://localhost:3000/api/mcp. Restart Claude Desktop after saving.
Once connected, Claude will automatically discover all available tools via tools/list and can call any of them within a conversation.
Discovery
Browse and filter the tool catalog without authentication:
# All active tools GET /api/tools # Filter by category slug GET /api/tools?category=crypto # Full-text search GET /api/tools?q=weather # Combine GET /api/tools?category=finance&q=stock
Each tool entry includes:
- Slug, name, description, category, provider
- Price in USD per call
- Input schema (JSON Schema object)
- Live/mock status and active flag
The full OpenAPI 3.1 spec is available at /api/openapi and the machine-readable agent card at /api/agent-card.
Categories
Tools are grouped into 24 categories. Use the category slug with the ?category= filter:
Payments (x402)
UnifyAPI uses the x402 protocol for machine-native payments. Each tool call deducts its cost (in USD) from your account balance. Top up using USDC on Base.
Top up from the dashboard or via API:
POST /api/payments/topup
Authorization: Bearer uak_live_...
Content-Type: application/json
{ "amountUsd": 10 }Simulation mode (default) — credits your balance instantly without a real payment. Useful for development and testing.
Live mode — when x402 is configured, the server returns HTTP 402 with an accepts array of payment requirements. An x402-capable wallet pays and retries with an X-PAYMENT header, which is verified and settled on-chain.
Tool prices range from $0.001 to $0.035 per call. Your current balance and usage are always visible in the dashboard.
Live tools
These tools proxy a real upstream API and return live data. All others return realistic deterministic mock data.