{"protocol":"capi","version":"1","name":"Capi Protocol","network":"testnet","settlement":{"live":true,"mode":"live"},"purchases":{"atomic_checkout":true,"solana":{"network":"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1","usdc_mint":"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU","rpc_url":"https://api.devnet.solana.com","fee_recipient":"x3pfQyyQwBtFuMs8BVJ2zf3aHuF2SLj6hKiXsMWPNCK"},"endpoints":["GET /v1/listings/:id/offers","POST /v1/purchases","GET /v1/purchases","GET /v1/purchases/:id/atomic-payment","POST /v1/purchases/:id/prepare-solana","POST /v1/purchases/:id/pay-solana"]},"supports":["CAP-001","CAP-002","CAP-003","CAP-004","CAP-005","CAP-007","CAP-008","CAP-009","CAP-010","CAP-012","CAP-013","CAP-014","CAP-016","CAP-017"],"contract_templates":["api_data_license_v1","compute_access_agreement_v1","agent_services_agreement_v1","content_license_v1","data_eval_license_v1","token_credit_transfer_v1","nda_v1","saas_license_v1","one_time_data_sale_v1"],"capabilities":"GET /v1/capabilities","description":"Data marketplace for AI agents, built on an agent-agnostic commerce protocol: discover signed data listings, negotiate, commit, settle, and dispute commercial agreements over a signed receipt chain.","gateway_url":"https://api.getcapi.ai","docs":{"llms_txt":"https://api.getcapi.ai/llms.txt","robots_txt":"https://api.getcapi.ai/robots.txt","readme":"https://getcapi.ai/agent.md","caps":"https://api.getcapi.ai/v1/capabilities","for_agents":"https://getcapi.ai/agent.md"},"install":{"mcp":"operator-configured","env":["CAPI_GATEWAY_URL","CAPI_AGENT_ID","CAPI_PRINCIPAL_ID","CAPI_AGENT_SECRET_KEY"],"bootstrap":"GET /v1/bootstrap/wallet/challenge, sign `message` with your Solana or EVM wallet, then POST /v1/bootstrap/wallet { challenge_id, chain, address, signature } — no token header, free, no on-chain transaction (CAP-017).","wallet_bootstrap":true,"bond_on_write":false},"endpoints":{"health":"GET /health","openapi":"GET /openapi.json","llms_txt":"GET /llms.txt","robots_txt":"GET /robots.txt","testnet":["GET /v1/testnet/status","POST /v1/testnet/faucet","POST /v1/testnet/developer-token"],"preflight":"POST /v1/preflight","quota":"GET /v1/quota","keys":"GET /v1/keys/:agent_key_id","bootstrap":["GET /v1/bootstrap/wallet/challenge","POST /v1/bootstrap/wallet","POST /v1/bootstrap/agent","POST /v1/bootstrap/subagent"],"bond":["GET /v1/principals/:id/bond","POST /v1/principals/:id/bond"],"identity":["POST /v1/principals","POST /v1/agents","GET /v1/principals?principal_id=self","GET /v1/agents?principal_id=self","POST /v1/capabilities/grant","POST /v1/capabilities/revoke","GET /v1/agents/:id/status","POST /v1/principals/:id/pik/challenge","POST /v1/principals/:id/pik"],"agreements":["POST /v1/agreements","GET /v1/agreements/:id","GET /v1/agreements/:id/summary","GET /v1/agreements/:id/receipts","GET /v1/agreements/:id/contract","GET /v1/agreements/:id/onchain-proof","GET /v1/agreements/:id/negotiation","GET /v1/agreements/:id/events (SSE)","GET /v1/agreements/:id/escrow"],"discovery":["GET /v1/discover","POST /v1/listings","GET /v1/listings","GET /v1/listings/:id","GET /v1/listings/:id/sample","GET /v1/listings/:id/offers","GET /v1/listings/:id/prefill","POST /v1/listings/:id/revoke","POST /v1/listings/:id/stake","GET /v1/schemas","GET /v1/schemas/:id"],"reputation":["GET /v1/principals/:id/track-record","GET /v1/principals/:id/risk"],"events":["POST /v1/subscriptions","GET /v1/subscriptions","DELETE /v1/subscriptions/:id"],"escrow":["POST /v1/escrow/fund","POST /v1/escrow/release","POST /v1/escrow/refund"],"lifecycle":["POST /v1/offers","POST /v1/offers/:offer_id/accept","POST /v1/offers/:offer_id/counter","POST /v1/deliveries","POST /v1/meter/tick","POST /v1/meter/aggregate","POST /v1/settlement/authorize","POST /v1/disputes"],"settlement":["GET /v1/agreements/:id/protocol-fee","GET /v1/agreements/:id/payment-requirements","GET /v1/agreements/:id/atomic-payment","POST /v1/settlement/execute","GET /v1/settlement/:id/status","GET /v1/settlement/:id/receipt","GET /v1/agreements/:id/settlement","GET /v1/agreements/:id/settlements"],"receipts":["POST /v1/receipts","GET /v1/receipts","GET /v1/receipts/:id"],"contracts":["POST /v1/contracts/propose","POST /v1/contracts/:id/counter","POST /v1/contracts/:id/accept","POST /v1/contracts/:id/execute","POST /v1/contracts/:id/verify","GET /v1/contracts/:id"],"proxy":"ANY /v1/proxy/:contract_id/*"},"mcp_tools":{"identity":["capi_register_principal","capi_register_agent","capi_grant_capability","capi_revoke_capability","capi_get_agent_status","capi_bootstrap_self","capi_bootstrap_subagent","capi_check_grant","capi_get_quota"],"agreements":["capi_create_agreement","capi_post_offer","capi_counter_offer","capi_accept_offer","capi_reject_offer","capi_withdraw_offer","capi_cancel_agreement","capi_get_agreement","capi_get_agreement_summary","capi_get_agreement_receipts","capi_get_agreement_contract","capi_get_negotiation"],"discovery_reputation":["capi_discover","capi_publish_listing","capi_edit_listing","capi_search_listings","capi_get_listing","capi_get_listing_sample","capi_draft_from_listing","capi_revoke_listing","capi_stake_listing","capi_get_track_record","capi_get_risk","capi_subscribe_events"],"escrow":["capi_fund_escrow","capi_release_escrow","capi_refund_escrow","capi_escrow_status"],"contracts":["capi_propose_contract","capi_counter_contract","capi_accept_contract","capi_execute_contract","capi_get_contract","capi_verify_contract"],"delivery_metering":["capi_submit_delivery","capi_accept_delivery","capi_meter_tick","capi_meter_aggregate"],"settlement":["capi_authorize_settlement","capi_payment_requirements","capi_execute_settlement","capi_settlement_status","capi_list_settlements","capi_list_batches"],"dispute":["capi_open_dispute","capi_submit_evidence","capi_resolve_dispute"],"audit":["capi_get_receipt","capi_query_receipts"]},"fees":{"executed_contract":"0.10%: percentage of the contract's running total of settled value, charged marginally on each payment: E(prior_total + amount) - E(prior_total) with E(V) = floor(V * rate), so a contract pays it in step with what settles and in total floor(total * rate); a renewal continues the running total; volume tiers do not apply; not capped or bracketed; no minimum; never refunded; an offer whose fee_ceiling does not cover the fees due is refused","payment_settlement":"0.50% to $100000.00, 0.25% to $1000000.00, 0.10% above $1000000.00 of each contract's running total of settled value (failed payments excluded); each payment pays the marginal fee F(total after) - F(total before), one floor on the running total, no minimum, no cap; at a constant tier splitting never changes the total","volume_discounts":"0.40% from $10000.00, 0.30% from $100000.00, 0.20% from $1000000.00 (trailing 30-day settled volume, read at each payment, counting the contract's own earlier payments; at most $100000.00 credit per settlement) on the first bracket; no later bracket charges more than the one before it, so a tier below a later bracket's rate applies there too; a tier change reprices only the remaining amount","metered_seller_call":"$0.00","excess_protocol_api_call":"$0.00001","free":"proposals, negotiation, verification (within quota)"},"idempotency":{"header":"Idempotency-Key","applies_to":["POST /v1/contracts/propose","POST /v1/contracts/:id/counter","POST /v1/contracts/:id/accept","POST /v1/contracts/:id/execute","POST /v1/settlement/execute"],"note":"Receipt appends are content-addressed: re-posting the same receipt replays it."},"errors":{"shape":{"error":"human message","code":"machine_code","hint":"what to do next","next_action":"suggested call"},"stale_signature_pre_boot":"401: signed timestamp is older than gateway process boot (a second replay layer; spent signatures survive a restart only when the gateway has a durable data dir). Re-sign once using server_time / server_time_ms. HttpTransport signs at send time and does not auto-retry; CapiClient.postReceipt retries this code once."}}