CoinOpSelect Agent Data API
Pay-per-call agent data over x402. No signup, no API key, no minimum spend.
Protocol x402 v1 · exact
Price USDC per call
Settlement Base mainnet (chain 8453)
Access public
Endpoints
| Method | Path | Price | Returns |
|---|---|---|---|
| GET | /api/v1/ping |
0.001 USDC | Paid self-test ping: returns the route, the amount charged, the network and the settlement asset, so an x402 client can prove it can sign and settle before it buys anything else. GET /api/v1/ping |
| GET | /api/v1/market/defi-summary |
0.005 USDC | Cross-network DeFi vault snapshot: live Aave v3 APY and TVL for the requested symbols on Base, Arbitrum and Ethereum, with a backstop-safety signal on Ethereum USDC. GET /api/v1/market/defi-summary?symbols=ETH,USDC |
| GET | /api/v1/market/gas |
0.002 USDC | Gas price snapshot for Ethereum, Base and Arbitrum with the per-network base fee, priority fee and the source of every reading. GET /api/v1/market/gas |
| GET | /api/v1/research/latest |
0.005 USDC | Latest published Web3 research finding from the agent research repository: title, summary, the streams it belongs to and its date. GET /api/v1/research/latest |
| POST | /api/v1/audit/vulnerability-scan |
0.05 USDC | Static vulnerability scan of Solidity or JavaScript source: returns every finding with severity, rule id and location, a 0-100 risk score and a summary. POST /api/v1/audit/vulnerability-scan {code, language} |
| GET | /api/v1/query/token-safety |
0.02 USDC | Live token risk verdict for Base, Arbitrum or Ethereum: reads bytecode, decimals, total supply, owner and holder count on chain, then returns a verdict (safe|caution|avoid) with a reason and one-liner, per-metric provenance and a shareable card. Call before recommending, bridging or swapping a token. GET /api/v1/query/token-safety?token=0x..&network=base |
| GET | /api/v1/query/wallet-risk |
0.02 USDC | Live wallet risk check: returns per-network ETH/USDC balances, an ERC-20 transfer scan (first funder, last active, age in days), sanctions status and a verdict { label, reason, one_liner }. GET /api/v1/query/wallet-risk?wallet=0x.. |
| GET | /api/v1/query/contract-permissions |
0.005 USDC | ERC-20 allowance and permission decode for a contract, owner and spender: returns the live allowance, the unlimited-approval flag and the permission list. GET /api/v1/query/contract-permissions?contract=0x..&owner=0x..&spender=0x.. |
| GET | /api/v1/chain/token-safety |
0.02 USDC | Alias for /api/v1/query/token-safety under the /chain/<primitive> namespace (finding #035 market convention). Accepts ?token= or ?address=. GET /api/v1/chain/token-safety?token=0x.. |
| GET | /api/v1/chain/wallet-risk |
0.02 USDC | Alias for /api/v1/query/wallet-risk under the /chain/<primitive> namespace (finding #035 market convention). Accepts ?wallet= or ?address=. GET /api/v1/chain/wallet-risk?wallet=0x.. |
| GET | /api/v1/chain/contract-permissions |
0.005 USDC | Alias for /api/v1/query/contract-permissions under the /chain/<primitive> namespace (finding #035 market convention). Accepts ?contract= or ?address=. GET /api/v1/chain/contract-permissions?contract=0x..&owner=0x..&spender=0x.. |
| POST | /api/v1/query/token-safety/batch |
0.08 USDC | Batch token-safety for up to 25 tokens: POST { tokens: [{ token, network? }] } returns per-token verdicts with decision shape. $0.08 per batch (measured comparable band). POST /api/v1/query/token-safety/batch |
| POST | /api/v1/query/wallet-risk/batch |
0.08 USDC | Batch wallet-risk for up to 25 wallets: POST { wallets: [{ wallet, network? }] } returns per-wallet verdicts with decision shape. $0.08 per batch. POST /api/v1/query/wallet-risk/batch |
| POST | /api/v1/query/contract-permissions/batch |
0.08 USDC | Batch contract-permissions for up to 25 { contract, owner, spender } triples. POST { permissions: [...] } returns per-entry allowance decode with decision shape. $0.08 per batch. POST /api/v1/query/contract-permissions/batch |
| GET | /api/v1/proof/hash |
0.002 USDC | SHA-256 hash of caller-supplied text |
| GET | /api/v1/proof/merkle-verify |
0.005 USDC | Verify a Merkle proof against a root (POST or GET {leaf, proof, root}) |
| GET | /api/v1/proof/commit |
0.002 USDC | Commit-reveal commitment for any value |
| POST | /api/v1/attestation/build |
0.02 USDC | Build a work attestation (POST {input, output}) |
| POST | /api/v1/attestation/verify |
0.05 USDC | Verify a work attestation (POST {attestation, input, output}) |
| POST | /api/v1/code/complexity |
0.05 USDC | Code complexity report (POST {source}) |
| POST | /api/v1/code/refactor-suggest |
0.05 USDC | Refactoring suggestions (POST {source}) |
| GET | /api/v1/escrow/commitment |
0.02 USDC | Escrow work-product commitment hash |
| GET | /api/v1/escrow/transition |
0.02 USDC | Check an escrow state transition |
| GET | /api/v1/staking/list |
0.005 USDC | Liquid staking protocols by network |
| POST | /api/v1/vaults/alerts |
0.005 USDC | Vault APY/TVL alert check (POST {current, previous}) |
| GET | /api/v1/intent/quote |
0.005 USDC | Intent solver simulated fill quote |
| GET | /api/v1/intent/surplus |
0.005 USDC | Intent surplus computation |
| GET | /api/v1/treasury/stack |
0.005 USDC | DAO treasury stack policy |
| GET | /api/v1/treasury/yield-policy |
0.005 USDC | DAO treasury yield policy |
| GET | /api/v1/treasury/runway |
0.005 USDC | DAO treasury runway guard |
| GET | /api/v1/compliance/jurisdiction |
0.005 USDC | Prediction-venue jurisdiction screen |
| POST | /api/v1/mev/analyze |
0.02 USDC | Mempool tx MEV analysis (POST {tx}) |
| GET | /api/v1/sentiment/score |
0.05 USDC | Score one text for market sentiment |
| POST | /api/v1/sentiment/aggregate |
0.05 USDC | Aggregate sentiment sources (POST {sources}) |
| GET | /api/v1/cover/quote |
0.02 USDC | Parametric cover premium quote |
| GET | /api/v1/compute/estimate |
0.02 USDC | GPU compute cost estimate |
| GET | /api/v1/compute/cheapest |
0.02 USDC | Cheapest GPU provider for a tier |
| POST | /api/v1/compute/arbitrage |
0.02 USDC | GPU compute arbitrage check (POST {quotes}) |
| POST | /api/v1/dataset/curate |
0.05 USDC | Dataset curation report (POST {samples}) |
| GET | /api/v1/subscription/flow |
0.005 USDC | Subscription flow-rate and break-even quote |
| POST | /api/v1/batch/net |
0.005 USDC | Batch payment netting preview (POST {payments}) |
| GET | /api/v1/merkle/leaf |
0.005 USDC | Merkle distributor leaf hash |
| GET | /api/v1/reserves/classify |
0.005 USDC | Proof-of-reserves drift classifier |
| GET | /api/v1/referral/quote |
0.005 USDC | Referral effective-bps quote |
Free and always open: /api/v1/health (liveness) and /api/v1/catalog
(machine-readable catalog with the x402 payment requirements for every paid route).
How to pay
- Request any paid endpoint. The API answers
402 Payment Requiredwith the exact payment terms. - Sign an EIP-3009
TransferWithAuthorizationfor the amount and asset in those terms, to the address they name. - Replay the request with the signed payload in the
X-Paymentheader (base64 JSON). The facilitator verifies and settles it, and the API returns the data.
See the payment terms without a wallet (this returns 402 with the terms):
curl -s 'https://coinop.publicvm.com/api/v1/query/token-safety?token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&network=base'
Pay and fetch in one command with the reference client from this repository (needs a funded USDC payer on Base mainnet (chain 8453)):
WALLET_PRIVATE_KEY=0x... node streams/stream-2-a2a/x402-client.js \
https://coinop.publicvm.com /api/v1/query/token-safety 'token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&network=base'
Use it from an agent (MCP)
The same endpoints are exposed as MCP tools at https://coinop.publicvm.com/mcp (Streamable HTTP transport, JSON-RPC). Listing the tools is free; every tool call follows the same x402 terms as the REST routes above.
Point an MCP client at it:
{
"mcpServers": {
"coinopselect": {
"url": "https://coinop.publicvm.com/mcp"
}
}
}
The payment challenge
This is the 402 body a client receives, verbatim:
{
"error": "missing_payment",
"x402Version": 1,
"accepts": [
{
"scheme": "exact",
"network": "base",
"maxAmountRequired": "20000",
"resource": "/api/v1/query/token-safety",
"description": "Live token risk verdict for Base, Arbitrum or Ethereum: reads bytecode, decimals, total supply, owner and holder count on chain, then returns a verdict (safe|caution|avoid) with a reason and one-liner, per-metric provenance and a shareable card. Call before recommending, bridging or swapping a token. GET /api/v1/query/token-safety?token=0x..&network=base",
"mimeType": "application/json",
"payTo": "0xfa0B17D69c75246BFFeAaeBbbFAFE0E82e87Df11",
"maxTimeoutSeconds": 60,
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"outputSchema": {
"input": {
"type": "http",
"method": "GET",
"discoverable": true,
"queryParams": {
"token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"network": "base"
},
"schema": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"method": {
"type": "string"
},
"queryParams": {
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "Token contract address (0x..)"
},
"network": {
"type": "string",
"description": "base|arbitrum|ethereum (default base)"
}
},
"required": [
"token"
]
}
},
"required": [
"type",
"method"
]
}
},
"output": {
"query": "0x..",
"network": "base",
"chainId": 8453,
"token": "0x..",
"decimals": 6,
"totalSupply": "0",
"owner": "0x..",
"flags": [],
"verdict": {
"label": "safe",
"reason": "string",
"one_liner": "string"
},
"decision": {
"action": "proceed",
"reason": "string",
"one_liner": "string"
},
"metrics": [],
"share": {
"permalink": "https://..",
"card_url": null
},
"as_of_block": null,
"generatedAt": "2026-01-01T00:00:00.000Z",
"fromCache": false,
"topHolderOwnership": null,
"topTenOwnership": null,
"totalHolders": null,
"warnings": [],
"overallSafetyLevel": "OK"
},
"discoverable": true
}
}
]
}
Where the data comes from
/api/v1/ping— See the endpoint description and the JSON catalog for the full request and response schema./api/v1/market/defi-summary— Aave v3 vault rates read on-chain, cross-checked against DefiLlama yields. A cached snapshot is served when the upstream read fails./api/v1/market/gas— Live gas price reads from public RPCs (Ethereum, Base, Arbitrum)./api/v1/research/latest— This site's own research index. No external dependency./api/v1/audit/vulnerability-scan— Local static analysis rules for Solidity and JavaScript. The source code is not sent anywhere and no network call is made./api/v1/query/token-safety— On-chain reads over a public RPC: contract code, decimals, total supply, owner and holder count./api/v1/query/wallet-risk— On-chain balance reads over a public RPC: native balance and USDC balance./api/v1/query/contract-permissions— On-chain ERC-20 allowance reads over a public RPC./api/v1/chain/token-safety— See the endpoint description and the JSON catalog for the full request and response schema./api/v1/chain/wallet-risk— See the endpoint description and the JSON catalog for the full request and response schema./api/v1/chain/contract-permissions— See the endpoint description and the JSON catalog for the full request and response schema./api/v1/query/token-safety/batch— See the endpoint description and the JSON catalog for the full request and response schema./api/v1/query/wallet-risk/batch— See the endpoint description and the JSON catalog for the full request and response schema./api/v1/query/contract-permissions/batch— See the endpoint description and the JSON catalog for the full request and response schema./api/v1/proof/hash— Local SHA-256 hash of caller-supplied text. No network call is made./api/v1/proof/merkle-verify— Local Merkle proof verification. No network call is made./api/v1/proof/commit— Local commit-reveal commitment. No network call is made./api/v1/attestation/build— Local attestation builder over caller-supplied input and output./api/v1/attestation/verify— Local attestation verification over caller-supplied values./api/v1/code/complexity— Local static complexity analysis of caller-supplied source./api/v1/code/refactor-suggest— Local deterministic refactoring suggestions for caller-supplied source./api/v1/escrow/commitment— Local escrow commitment hash over caller-supplied work product./api/v1/escrow/transition— Local escrow lifecycle transition check./api/v1/staking/list— Protocol registry for liquid staking venues by network./api/v1/vaults/alerts— Vault APY and TVL alert evaluation over caller-supplied snapshots./api/v1/intent/quote— Simulated intent-solver fill quote. Never broadcast./api/v1/intent/surplus— Intent surplus computation from caller-supplied prices./api/v1/treasury/stack— DAO treasury stack policy configuration./api/v1/treasury/yield-policy— DAO treasury yield policy configuration./api/v1/treasury/runway— DAO treasury runway guard configuration./api/v1/compliance/jurisdiction— Prediction-venue jurisdiction screen from the enforcement registry./api/v1/mev/analyze— Mempool transaction MEV analysis over caller-supplied transaction./api/v1/sentiment/score— Sentiment score of caller-supplied text./api/v1/sentiment/aggregate— Weighted sentiment aggregation over caller-supplied sources./api/v1/cover/quote— Parametric cover premium quote from caller-supplied cover terms./api/v1/compute/estimate— GPU compute cost estimate from provider tier pricing./api/v1/compute/cheapest— Cheapest verified GPU provider comparison./api/v1/compute/arbitrage— GPU compute arbitrage spread over caller-supplied quotes./api/v1/dataset/curate— Dataset curation report over caller-supplied samples./api/v1/subscription/flow— Subscription flow-rate and break-even computation./api/v1/batch/net— Batch payment netting preview over caller-supplied payments./api/v1/merkle/leaf— Merkle distributor leaf hash computation./api/v1/reserves/classify— Proof-of-reserves drift severity classifier./api/v1/referral/quote— Referral effective fee computation from venue caps.