{"openapi":"3.1.0","info":{"title":"CurveCall","description":"Pay-per-call market math and token intel for AI agents, via x402.","contact":{"email":"k6rpq3@mail.instinct.com"},"version":"0.6.0","x-guidance":"CurveCall is a pay-per-call market-math API for AI agents, paid in USDC (Base or Solana) or shielded ZEC via x402 (Base, solana:mainnet and zcash:mainnet). Every endpoint returns HTTP 402 with payment requirements until called with a valid PAYMENT-SIGNATURE header (x402 v2); an x402 client pays and retries automatically. Endpoints: bonding-curve buy/sell quotes (constant-product simulation with virtual reserves), token market snapshots, a 0-100 heuristic risk screen (now with top-holder concentration), and /v1/precheck - the bundled pre-trade call: snapshot + risk + trade simulation + deployer/holder intel in one request. Use /v1/precheck/{chain}/{address}?side=buy&amount_in=X before buying a token to learn what the trade does, not just the price. Also: /v1/token/{chain}/{address}/contract (on-chain check: ownership renounced, LP burn share), /v1/wallet/{chain}/{address} (contract-or-wallet, tx count, balance, fresh-wallet flag), and /v1/search?q= (find tokens by name, symbol or address), and /v1/deployer/{chain}/{address} (every launch this deployer has made on Base since 2026-09-24 with outcomes: survived, rugged, died - the answer to 'has this deployer rugged before?'). Data by GeckoTerminal. Free feedback channel: POST /v1/feedback {endpoint, what_happened, expected?, contact?, callback_url?} returns a ticket id; poll GET /v1/feedback/{id} for our response."},"paths":{"/v1/feedback":{"post":{"summary":"Create Ticket","operationId":"create_ticket_v1_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/feedback/{ticket_id}":{"get":{"summary":"Get Ticket","operationId":"get_ticket_v1_feedback__ticket_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Service Card","operationId":"service_card__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/agent.json":{"get":{"summary":"Agent Card","operationId":"agent_card__well_known_agent_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/glama.json":{"get":{"summary":"Glama Claim","operationId":"glama_claim__well_known_glama_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/quote/buy":{"get":{"summary":"Quote Buy","operationId":"quote_buy_v1_quote_buy_get","parameters":[{"name":"quote_reserves","in":"query","required":true,"schema":{"type":"number","description":"Virtual quote-asset reserves (x)","title":"Quote Reserves"},"description":"Virtual quote-asset reserves (x)"},{"name":"token_reserves","in":"query","required":true,"schema":{"type":"number","description":"Virtual token reserves (y)","title":"Token Reserves"},"description":"Virtual token reserves (y)"},{"name":"amount_in","in":"query","required":true,"schema":{"type":"number","description":"Quote asset to spend","title":"Amount In"},"description":"Quote asset to spend"},{"name":"fee_bps","in":"query","required":false,"schema":{"type":"number","description":"Curve fee in basis points","default":100.0,"title":"Fee Bps"},"description":"Curve fee in basis points"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/quote/sell":{"get":{"summary":"Quote Sell","operationId":"quote_sell_v1_quote_sell_get","parameters":[{"name":"quote_reserves","in":"query","required":true,"schema":{"type":"number","description":"Virtual quote-asset reserves (x)","title":"Quote Reserves"},"description":"Virtual quote-asset reserves (x)"},{"name":"token_reserves","in":"query","required":true,"schema":{"type":"number","description":"Virtual token reserves (y)","title":"Token Reserves"},"description":"Virtual token reserves (y)"},{"name":"amount_in","in":"query","required":true,"schema":{"type":"number","description":"Tokens to sell","title":"Amount In"},"description":"Tokens to sell"},{"name":"fee_bps","in":"query","required":false,"schema":{"type":"number","description":"Curve fee in basis points","default":100.0,"title":"Fee Bps"},"description":"Curve fee in basis points"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/token/{chain}/{address}":{"get":{"summary":"Token Snapshot","operationId":"token_snapshot_v1_token__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]}}},"/v1/token/{chain}/{address}/risk":{"get":{"summary":"Token Risk","operationId":"token_risk_v1_token__chain___address__risk_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/v1/precheck/{chain}/{address}":{"get":{"summary":"Pretrade Check","operationId":"pretrade_check_v1_precheck__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"side","in":"query","required":false,"schema":{"type":"string","pattern":"^(buy|sell)$","description":"Trade direction to simulate","default":"buy","title":"Side"},"description":"Trade direction to simulate"},{"name":"amount_in","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Amount to trade (quote-token units for buys, token units for sells). Omit for snapshot + risk only.","title":"Amount In"},"description":"Amount to trade (quote-token units for buys, token units for sells). Omit for snapshot + risk only."},{"name":"fee_bps","in":"query","required":false,"schema":{"type":"number","description":"Curve fee in basis points","default":100.0,"title":"Fee Bps"},"description":"Curve fee in basis points"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/v1/token/{chain}/{address}/contract":{"get":{"summary":"Token Contract","operationId":"token_contract_v1_token__chain___address__contract_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/v1/wallet/{chain}/{address}":{"get":{"summary":"Wallet Snapshot","operationId":"wallet_snapshot_v1_wallet__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]}}},"/v1/search":{"get":{"summary":"Search Tokens","operationId":"search_tokens_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Token name, symbol or contract address","title":"Q"},"description":"Token name, symbol or contract address"},{"name":"chain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional chain filter, e.g. base, solana","title":"Chain"},"description":"Optional chain filter, e.g. base, solana"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"description":"Max results","default":10,"title":"Limit"},"description":"Max results"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]}}},"/v1/deployer/{chain}/{address}":{"get":{"summary":"Deployer History","operationId":"deployer_history_v1_deployer__chain___address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/v1/token/{chain}/{address}/bundles":{"get":{"summary":"Token Bundles","operationId":"token_bundles_v1_token__chain___address__bundles_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"protocols":[{"x402":{}}]}}},"/v1/yield/{chain}/{pool_id}/check":{"get":{"summary":"Yield Pool Check","description":"Prototype: verdict-style pool check. Dark-launched (env flag, off by\ndefault), unpaid, unlisted. Paid launch is gated on source data rights,\nthe DeFiLlama UUID-to-contract binding, and accuracy history.","operationId":"yield_pool_check_v1_yield__chain___pool_id__check_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"pool_id","in":"path","required":true,"schema":{"type":"string","title":"Pool Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"FeedbackIn":{"properties":{"endpoint":{"type":"string","maxLength":200,"minLength":1,"title":"Endpoint"},"what_happened":{"type":"string","maxLength":2000,"minLength":1,"title":"What Happened"},"expected":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Expected"},"contact":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Contact"},"callback_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Callback Url"}},"type":"object","required":["endpoint","what_happened"],"title":"FeedbackIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}