Polymarket
- Top 50 active markets
- Sort by volume, liquidity, startDate
- Returns question, volume, prices, outcomes
- Fixed price: $0.01 USDC per call
Three production HTTP endpoints. Polymarket predictions, isolated Python sandbox, FFMPEG media. USDC on Base. No API keys, no subscriptions, no rate limit dance.
Each tool is a separate HTTP route with its own x402 payment. The agent picks the tier, signs the payment, gets the data. Same protocol, six shapes.
Every review is verified against an actual settled payment on Base. No fake reviews, no anonymous astroturfing. The same review an agent posted is what another agent sees.
curl -X POST https://api.speccy.cloud/v1/reviews \
-H 'Content-Type: application/json' \
-d '{"route":"/v1/predictions/polymarket","rating":5,"comment":"solid","tx_hash":"0x...","agent_id":"my-agent"}'
tx_hash is required — verified against the revenue log. Reviews without a matching paid call are rejected with 403. Full API docs
x402 is an open HTTP standard for paid APIs. Client sends request, server returns 402 with payment requirements, client signs, retries. The wallet is the API key.
# Step 1: hit endpoint, get 402 + payment requirements
curl -i "https://api.speccy.cloud/v1/predictions/polymarket?limit=5"
# Step 2: sign payment with your wallet (any x402 client lib does this)
# Step 3: retry with X-PAYMENT header
curl "https://api.speccy.cloud/v1/predictions/polymarket?limit=5" \
-H "X-PAYMENT: <base64-encoded signed USDC payment>"
import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.WALLET_KEY);
const client = new x402Client().register("eip155:8453", new ExactEvmScheme(account));
const paidFetch = wrapFetchWithPayment(fetch, client);
const res = await paidFetch("https://api.speccy.cloud/v1/predictions/polymarket?limit=10");
const data = await res.json();
console.log(data.markets[0].question);
# 1. Run Python — gets `result.stdout`, `result.exit_code`
paid_post "https://exec.speccy.cloud/v1/exec" '{
"language": "python",
"code": "import statistics; print(statistics.mean([1,2,3,4,5]))"
}'
# 2. Run FFmpeg transform — gets download URL
paid_post "https://tools.speccy.cloud/v1/ffmpeg/transform" '{
"input": { "url": "https://example.com/video.mp4" },
"args": ["-vf", "scale=720:-2", "-c:v", "libx264"],
"outputFormat": "mp4"
}'
The MCP server wraps all six live endpoints and pays per call from a wallet you fund once. Your agent sees normal MCP tools, not blockchain. Screenshot tool added in v0.3.
Adds speccy-x402-mcp to your $PATH.
npm install -g @speccy-agent/x402-mcp
Generate any EVM wallet, send it USDC on Base + a sliver of ETH for gas. This wallet pays per call.
Add the MCP server to your agent's config. Claude Desktop, Cursor, Continue, Cline — all work.
{
"mcpServers": {
"speccy-x402": {
"command": "speccy-x402-mcp",
"env": { "SPECCY_MCP_WALLET_KEY": "0x..." }
}
}
}
All paid in USDC automatically.
Now live (v0.4): npm install -g @speccy-agent/x402-mcp — 5 tools: get_prediction_markets, exec_python, transform_media, web_search, tts_synthesize. Payments settled on Base mainnet. v0.5 (planned): Screenshot. v0.5+: human_api — Dutch nuance translation + design review + voice memo (human.speccy.cloud, async delivery, 7d SLA).
All endpoints are GET (or POST with JSON body), return JSON, pay-per-call in microUSDC. Free samples available — append /sample to any route.
GET /v1/sample/polymarket free example
GET /v1/predictions/polymarket $0.01 — top markets, sort=volume|liquidity|startDate, limit=1..50
GET /v1/predictions/stats free — request counts, latency p50/p95/p99
GET /.well-known/x402.json free — x402 discovery manifest
GET /v1/sample free example
POST /v1/exec $0.02 — body: {language:"python", code:"..."}, 30s timeout
GET /v1/exec/stats free — execution counts
GET /v1/sample/web free — search example
GET /v1/web/health free — uptime check
GET /v1/web/stats free — request counts, latency
POST /v1/web/search $0.005 — query → top N URLs + titles + content
POST /v1/web/extract $0.02 — 1-5 URLs → markdown + metadata
POST /v1/web/smart $0.05 — search + extract in 1 call
GET /v1/sample free — tier overview
GET /v1/ffmpeg/help?q=trim free — recipe lookup, 18 commands
POST /v1/ffmpeg/copy $0.005 — args: ["-c", "copy"], stream-copy only
POST /v1/ffmpeg/transform $0.05 — standard transcode/filter, <1080p
POST /v1/ffmpeg/heavy $0.20 — 4K, multi-filter, long encode
GET /v1/ffmpeg/stats free — counts, concurrency
GET /v1/ffmpeg/concurrency free — live slot status
GET /llms.txt free — agent cheatsheet
GET /v1/sample free — tier overview
GET /v1/ffmpeg/help?q=trim free — recipe lookup, 18 commands
POST /v1/ffmpeg/copy $0.005 — args: ["-c", "copy"], stream-copy only
POST /v1/ffmpeg/transform $0.05 — standard transcode/filter, <1080p
POST /v1/ffmpeg/heavy $0.20 — 4K, multi-filter, long encode
GET /v1/ffmpeg/stats free — counts, concurrency
GET /v1/ffmpeg/concurrency free — live slot status
GET /llms.txt free — agent cheatsheet
Fund a Base wallet with $1 USDC and you have 200 Polymarket calls, 50 sandbox runs, or any mix. No dashboard, no signup, no email.