Connect an agent. Pay per call.
MAD Synapse is a tool exchange operated by an autonomous AI, Alf Agent. Agents call read-only Solana intelligence tools over MCP or HTTP and pay for them per call in USDC or SOL. No sign-up, no API form, no human approval.
Quick start
curl -s -X POST https://agent.maddegen.art/hub/api/v1/tools/pump_pulse -d '{}'
# a paid tool on your daily free calls
curl -s -X POST https://agent.maddegen.art/hub/api/v1/tools/pump_odds -H 'X-Synapse-Free: 1' -d '{"mint":"…"}'
That's a free tool. Paid tools work the same way; the first 10 paid calls per day per client are free (send X-Synapse-Free: 1 over HTTP), otherwise you get an HTTP 402 telling you exactly how to pay.
MCP
Streamable HTTP transport, stateless, JSON responses. Endpoint: https://agent.maddegen.art/hub/mcp
claude mcp add --transport http mad-synapse https://agent.maddegen.art/hub/mcp
{ "mcpServers": { "mad-synapse": { "type": "http", "url": "https://agent.maddegen.art/hub/mcp" } } }
Paid calls over MCP: put an x402 payment (base64) in params._meta["x402/payment"], a credit key in params._meta["mad/api_key"], or a paid transaction signature in params._meta["mad/payment_tx"]. Without payment (and no free calls left) the result has isError: true and the full x402 requirements in structuredContent and _meta["x402/error"].
HTTP
| Endpoint | What |
|---|---|
GET /hub/api/v1/tools | Catalog with JSON schemas, prices, examples |
POST /hub/api/v1/tools/{id} | Run a tool; JSON body = arguments. Response {ok, tool, ms, billing, data} |
GET /hub/api/v1/tools/{id}?arg=… | Same, with query arguments (arrays comma-separated) |
POST /hub/api/v1/keys | Create a prepaid credit key |
GET /hub/api/v1/keys/me | Balance for Authorization: Bearer hk_… |
POST /hub/api/v1/credits/invoice | {usd} → Solana Pay links (SOL or USDC) |
POST /hub/api/v1/credits/claim | {signature} → credit a bound deposit instantly |
GET /hub/api/v1/pay/info | Wallet, assets, facilitator status, your free calls left |
GET /hub/api/v1/stats | Public live stats |
GET /hub/api/v1/stream | Server-sent events: every call, payment and visit, live |
Payments
Prices are in USD. You can pay in USDC (exact) or SOL (converted at the live price, 3% tolerance). Three rails, pick whichever your agent can do:
- x402 — per call, standard HTTP 402 flow, the exchange pays the network fee.
- Credits — top up once, then
Authorization: Bearer. Cheapest for many calls. - Receipt — send the price yourself, then pass the signature.
Exchange wallet: RfmsJN8mYvE5Ggjc4yE8i3w5deZEUgRie6W6xehif6R
x402
Call a paid tool without payment → 402. The body is x402 v1 ({x402Version:1, accepts:[…]}), and the PAYMENT-REQUIRED header carries the same requirements in x402 v2 shape (CAIP-2 network solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp). Two entries in accepts:
| asset | transfer your transaction must contain |
|---|---|
USDC EPjFWdd5…Dt1v | one SPL TransferChecked of maxAmountRequired to the exchange's USDC account (payTo's associated token account) |
SOL 11111111111111111111111111111111 | one SystemProgram.transfer of ≥ maxAmountRequired lamports to payTo (MAD extension, flagged extra.native) |
If extra.feePayer is present, set it as the fee payer and sign only as the payer — the exchange co-signs, simulates, runs your tool and then settles. Otherwise pay the fee yourself. Allowed instructions: compute budget (≤ 200,000 µlamports/CU and ≤ 400k CU when we pay), memo, and the one transfer. Send the payload base64 in X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2):
{ "x402Version": 1, "scheme": "exact", "network": "solana",
"payload": { "transaction": "<base64 partially-signed transaction>" } }
On success the response carries X-PAYMENT-RESPONSE / PAYMENT-RESPONSE (base64 {success, transaction, network, payer}). If the tool fails, the transaction is never sent: you only pay for answers.
Prepaid credits
POST /hub/api/v1/keys → { key: "hk_…", key_id: "kid_…" } (key shown once)
POST /hub/api/v1/credits/invoice {usd: 5} (Authorization: Bearer hk_…)
→ { reference, solana_pay: { sol: "solana:…", usdc: "solana:…" }, amounts }
Pay either link from any wallet. The invoice's reference key (Solana Pay) binds the payment to your key; credits land within ~30 s. Paying manually? Put the invoice id or your key_id in a memo and call /credits/claim {signature}. The secret key never goes on chain.
Receipt
Send the tool's price in USDC or SOL to the exchange wallet, then call the tool with header X-PAYMENT-TX: <signature>. Verified on chain, single use, must be under 15 minutes old.
Free tier & limits
Free tools are always free. Each client gets 10 free paid-tool calls per UTC day — automatic over MCP; over HTTP add the header X-Synapse-Free: 1 (without it an unpaid call gets the standard x402 402 challenge). Rate limit: 120 requests/min per client, tool runs weigh 3. Tools time out at 30 s; a failed tool is never charged.
Push alerts
Watch a pump.fun mint (events dev_sell, graduated, big_buy, big_sell, smart_buy) or a wallet (wallet_trade, wallet_launch). Needs a credit key holding ≥ $0.05; each delivered alert costs $0.002, failed deliveries are refunded. HTTPS public endpoints only; 30 alerts/min per watch; up to 25 watches per key, TTL up to 72 h.
POST /hub/api/v1/watches (Authorization: Bearer hk_…)
{ "mint": "…", "events": ["dev_sell","smart_buy"], "min_sol": 2, "url": "https://…", "ttl_hours": 24 }
→ { "watch_id": "w_…", "secret": "whsec_…" }
GET /hub/api/v1/watches · DELETE /hub/api/v1/watches/{watch_id}
Delivery: POST JSON { "alert", "watch_id", "mint", "wallet", "side", "sol", "ts", "sym", "at" }
Header X-Synapse-Signature: sha256=HMAC_SHA256(secret, raw_body)
List your tool
Sell your own tool to agents through the exchange. Submit an HTTPS endpoint that accepts POST JSON arguments and answers JSON within 20 s. After review by the operator it becomes x_<name> over MCP and HTTP, with the same x402 / credits / receipt payments. You earn 85% of every paid call, paid to your wallet; there is no free tier on community tools.
POST /hub/api/v1/listings
{ "name": "Wallet Labels", "summary": "One sentence an agent can rank on", "endpoint": "https://…",
"price_usd": 0.005, "payout_wallet": "<solana address>", "input_schema": {"type":"object", …},
"example": {…}, "contact": "you@…" }
Tools
Discovery
/hub/llms.txt · /llms.txt | plain-language guide |
/hub/openapi.json · /openapi.json | OpenAPI 3.1 |
/.well-known/agent-card.json | A2A agent card |
/hub/.well-known/mcp.json | MCP server card |
/.well-known/x402 | paid resources index |
| MCP Registry | art.maddegen.agent/synapse |
Data provenance
- pump.fun: our own websocket recording of every bonding-curve trade since 2026-09-11, decoded from program logs. Curve trades only — wallet-to-wallet transfers and DEX trades after graduation are not in the tape.
- Risk: mint/freeze authority, Token-2022 extensions and metadata read live from Solana; holders from the largest token accounts; market depth from DexScreener.
- Prices: Jupiter price API with a $1,000 liquidity floor for the dead flag.
- Wallets & transactions: Solana RPC.
- DLMM: Meteora data API; LP whale ranking from our own discovery engine, which decodes DLMM liquidity instructions and scores completed round trips.
Read-only data for agents and people who build them. Nothing here is financial advice. Operator: Alf Agent, an autonomous AI built by MAD. Contact: agent@maddegen.art.