{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"GrailSwap Agent API (MCP + REST)","version":"1.0.0","description":"REST agent v1 surface: 50 paths and 58 operations. Wallet = account; GrailSwap never holds wallet private keys. Sign exact returned transactions locally. Amounts ending _micro_usdc are unsigned decimal integer strings (1000000 = 1 USDC). Request schemas are generated from runtime Zod inputs; custom refinements still apply (valid 32-byte base58 wallets, HTTPS avatars, offer terms and unique transaction indices). Action-specific service result objects remain extensible. Authenticated agent tools use the same REST/MCP per-key buckets: 30 general calls/60s and 30 trade writes/60s (builds, submit, sign-ready, auto-accept). Public reads and discovery have IP limits. MCP also has independent pre-authentication allowances of 60 general JSON-RPC calls/60s/IP and 60 trade-tool calls/60s/IP. Profile updates and swap quotes use the general bucket. Dry runs retain their separate 30/minute/key budget; wallet-level limits still apply. 429 responses include Retry-After. rpc_retry_required is a retryable 503 with Retry-After: 1; check the existing attempt and try again with the same idempotency key."},"servers":[{"url":"https://www.grailswap.io"}],"externalDocs":{"description":"Agent setup, tools, caps, signing, recovery and errors","url":"https://www.grailswap.io/docs/agent-api.md"},"security":[{"AgentKey":[]}],"paths":{"/api/agent/v1/cards/{mint}":{"get":{"operationId":"get_card","summary":"Read public card facts, listing status and funded, unexpired CC offers. Same privacy rules and response as MCP get_card.","description":"Anonymous, 60 requests/minute/IP. insured_value_usd is Collector Crypt's figure and can change daily; re-read get_card right before buying and base max_price on the fresh value. Inspect insured_value_checked_at and insured_value_stale. Values are committed to the shared per-mint database before return. get_card checks CC with a 5s timeout and one retry; failures return the stored value explicitly marked stale. market_reference_usd is a catalog estimate and may be null when uncertain. CC offers share the bounded public cache (90s freshness, 4s chain deadline, 5m stale ceiling); private or held cards return 404. Listing prices use a read-only per-card CC market check with a 2.5s deadline, six shared concurrent slots and a 30s success cache. listing_price_source is cc_live; listing_price_as_of is the successful observation time. Failed checks return listing_status unknown with no price and a null timestamp. A live unlisted result never falls back. Indexed listings require seller and current owner to match. Use accept_cc_bid (market scope) to accept a funded bid on your own card.","security":[{}],"parameters":[{"name":"mint","in":"path","required":true,"schema":{"type":"string","minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]+$"}}],"responses":{"200":{"description":"Public card and CC offer book.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardRead"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/packs/summary":{"get":{"operationId":"packs_summary","summary":"Read-only packs/summary. Public data only; optional bearer verifies ownership for buyback estimates. No reservation.","security":[{},{"AgentKey":[]}],"parameters":[{"name":"packType","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":32}},{"name":"top_n","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":20,"default":5}}],"responses":{"200":{"description":"Public read result; estimates never reserve and are not binding quotes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/packs_summary_response"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/packs/contents":{"get":{"operationId":"packs_contents","summary":"Read-only packs/contents. Public data only; optional bearer verifies ownership for buyback estimates. No reservation.","security":[{},{"AgentKey":[]}],"parameters":[{"name":"packType","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":32}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^[^\\s\\x00-\\x1f\\x7f]+$"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":24}}],"responses":{"200":{"description":"Public read result; estimates never reserve and are not binding quotes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/packs_contents_response"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/packs/buyback-quote":{"get":{"operationId":"packs_buyback-quote","summary":"Read-only packs/buyback-quote. Public data only; optional bearer verifies ownership for buyback estimates. No reservation.","security":[{},{"AgentKey":[]}],"parameters":[{"name":"nftAddress","in":"query","required":true,"schema":{"type":"string","minLength":32,"maxLength":44}}],"responses":{"200":{"description":"Public read result; estimates never reserve and are not binding quotes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/packs_buyback-quote_response"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/market/accept-bid":{"post":{"operationId":"market_accept-bid","summary":"Sell an owned pNFT/Core card into a funded, unexpired CC offer. Optional offer is its on-chain address; omission selects the highest funded bid, excluding self bids and bids with less than 60 seconds remaining. Strongly recommend setting min_price_usd on every call to bound gross USDC before CC fees. result.selected_offer identifies the chosen bid and its price; result.highest_skipped_bid reports the highest ineligible bid strictly above the chosen price with its reason, or null if none is above it. Re-reads the selected offer before building and verifies exact seller proceeds and NFT departure. Gross bid value reserves key and shared wallet caps. Seller signs and pays SOL/rent; no sponsorship. dry_run true builds and simulates with the in-memory dry-run throttle (30/minute/key) plus a separate CC preview bucket (12/minute/wallet per instance) that leaves human accepts untouched and no DB writes, no reservation and no idempotency key; scans are capped at 100 offers; real builds require Idempotency-Key. Errors include current state and next_step.","tags":["market"],"description":"Requires market scope, the enable switches and age/WA checks. With dry_run true, returns simulation: succeeded, verified effects, fee_payer, signers_required, gross amount_micro_usdc, net proceeds_micro_usdc, result.selected_offer, result.highest_skipped_bid, result.quote, result.feeLamports, result.rentLamports, cap_impact with reserved: false, and warnings. No DB writes, reservations, attempts, idempotency consumption, signable bytes or broadcast. The in-memory dry-run throttle applies (30/minute/key), plus a separate CC preview bucket (12/minute/wallet per instance) that leaves human accepts untouched. Real builds require Idempotency-Key and return the common attempt envelope.","x-agent-scope":"market","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/market_accept-bid"}}}},"responses":{"200":{"description":"Signable attempt, or a simulation preview (30/minute/key and a separate 12/minute/wallet bucket per instance) when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/CcBidDryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/gifts/send":{"post":{"operationId":"gifts_send","summary":"Gift 1–5 owned cards to a registered username or wallet through the site's gift settlement. Requires trades; insured-first value (market fallback) counts toward per-tx, daily and shared wallet caps. Unknown/nonpositive values are rejected. Optional message (140 characters), private (default false) and max_price_micro_usdc to bound the gift value reservation. Preflight checks the actual fee payer's SOL; RPC failures defer to the shared builder. Returns the standard signable attempt; only the sender signs. Gift recovery through trades/settlement retains value accounting and strict effects verification. Receiving bots read confirmed cards from authenticated me.inventory, even with private inventories.","tags":["gifts"],"description":"Requires trades. All actions require the enable switch and age/WA checks. max_price_micro_usdc bounds spend (captured card value for gifts, outgoing USDC otherwise); when omitted, the key's per-transaction cap is reserved. The ceiling must fit both caps. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"trades","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/gifts_send"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/profile/update":{"post":{"operationId":"profile_update","summary":"Set permanent username and/or HTTPS avatarUrl (null clears). Requires profile:write; 10/hour/key. Zero spend; result.profile has username, avatarUrl and is_bot. Username moderation, permanence and uniqueness are enforced after schema validation.","tags":["profile"],"description":"Requires profile:write. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"profile:write","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/profile_update"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/market/buy":{"post":{"operationId":"market_buy","summary":"Build a current Market purchase. result includes purchaseId, priceUsdc (integer micro-USDC), expiresAt and tx. HTTP 409 listing_price_changed / price_above_max includes current_price_usdc (2dp string) and current_price_micro_usdc (integer string) when known, plus expected/max prices when known. listing_gone includes current_owner when CC returns it. Ambiguous listing_changed includes current price when known. Refresh and review before retrying.","tags":["market"],"description":"Requires market. All actions require the enable switch and age/WA checks. max_price_micro_usdc bounds spend (captured card value for gifts, outgoing USDC otherwise); when omitted, the key's per-transaction cap is reserved. The ceiling must fit both caps. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"market","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/market_buy"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Listing price changed, price above maximum, listing gone, or ambiguous generation/receipt conflict. Review current terms before a new attempt. Other conflicts retain the normal Error envelope.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/MarketBuyConflict"},{"$ref":"#/components/schemas/Error"}]}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/market/list":{"post":{"operationId":"market_list","summary":"Build an owned card's listing; price is positive USDC decimal text with at most two decimal places. Existing listing fees apply.","tags":["market"],"description":"Requires market. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"market","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/market_list"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/market/unlist":{"post":{"operationId":"market_unlist","summary":"Build cancellation of an owned listing.","tags":["market"],"description":"Requires market. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"market","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/market_unlist"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/offers/create":{"post":{"operationId":"offers_create","summary":"Create a Trade Outpost offer; result.offer, no transaction. At least one offered asset or positive usdcOffered is required. Omitted requestedAssetIds selects the whole listing; USDC terms are decimal numbers.","tags":["offers"],"description":"Requires offers. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"offers","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/offers_create"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/offers/accept":{"post":{"operationId":"offers_accept","summary":"Accept as maker and build settlement; both participants must sign. result includes offerId and settlement fields.","tags":["offers"],"description":"Requires offers. All actions require the enable switch and age/WA checks. max_price_micro_usdc bounds spend (captured card value for gifts, outgoing USDC otherwise); when omitted, the key's per-transaction cap is reserved. The ceiling must fit both caps. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"offers","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/offers_accept"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/offers/cancel":{"post":{"operationId":"offers_cancel","summary":"Cancel an owned pending offer; no transaction.","tags":["offers"],"description":"Requires offers. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"offers","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/offers_cancel"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/proposals/create":{"post":{"operationId":"proposals_create","summary":"Create a directed proposal under recipient consent and inventory privacy rules; result.id and informational value_check. No transaction.","tags":["proposals"],"description":"Requires trades. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"trades","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/proposals_create"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/proposals/accept":{"post":{"operationId":"proposals_accept","summary":"Preflight SOL before accepting as recipient. HTTP 409 insufficient_sol leaves the proposal pending with party/wallet and lamport shortfalls. Reads use getBalance only and fail open on RPC errors/timeouts; the shared minimum excludes dynamic priority/ATA/ALT costs that remain checked at build time. After commitment a build failure returns HTTP 200, status confirmed (accept only), transactions [], amount_micro_usdc 0, and result.proposal_id/trade_id/offer_id/escrow_id, settlement null, settlement_error code/message. Follow next_step to POST /api/agent/v1/trades/settlement (MCP build_trade_settlement) with offer_id and a new idempotency key. Camel-case IDs remain compatible; do not accept again. Re-accept with a new key retains HTTP 400 not_pending; an authorized participant receives error.proposal_id/trade_id/offer_id, optional escrow_id and the build_trade_settlement next_step. Emergency and trading-pause checks precede preflight.","tags":["proposals"],"description":"Requires trades. All actions require the enable switch and age/WA checks. max_price_micro_usdc bounds spend (captured card value for gifts, outgoing USDC otherwise); when omitted, the key's per-transaction cap is reserved. The ceiling must fit both caps. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"trades","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/proposals_accept"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"insufficient_sol: fund the listed wallets, then retry acceptance with a new idempotency key. Other conflicts retain the normal Error envelope.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/InsufficientSol"},{"$ref":"#/components/schemas/Error"}]}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/proposals/decline":{"post":{"operationId":"proposals_decline","summary":"Decline a received proposal; no transaction.","tags":["proposals"],"description":"Requires trades. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"trades","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/proposals_decline"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/proposals/cancel":{"post":{"operationId":"proposals_cancel","summary":"Cancel as proposer; no transaction.","tags":["proposals"],"description":"Requires trades. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"trades","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/proposals_cancel"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/swap/quote":{"post":{"operationId":"swap_quote","summary":"Get the authoritative Trade Bot quote; save result.quoteKey. Creates an attempt without a transaction.","tags":["swap"],"description":"Requires swap. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"swap","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/swap_quote"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/swap/execute":{"post":{"operationId":"swap_execute","summary":"Execute expectedQuote and build settlement. The vault signs only its side. Changed quotes return stale_quote.","tags":["swap"],"description":"Requires swap. All actions require the enable switch and age/WA checks. max_price_micro_usdc bounds spend (captured card value for gifts, outgoing USDC otherwise); when omitted, the key's per-transaction cap is reserved. The ceiling must fit both caps. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"swap","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/swap_execute"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/packs/buy":{"post":{"operationId":"packs_buy","summary":"Build one payment transaction and memo per pack. count > 1 requires admin (maximum 10); turbo enables automatic Common sell-back. After submit confirms, open each memo. Random outcomes may be worth less than price.","tags":["packs"],"description":"Requires packs. All actions require the enable switch and age/WA checks. max_price_micro_usdc bounds spend (captured card value for gifts, outgoing USDC otherwise); when omitted, the key's per-transaction cap is reserved. The ceiling must fit both caps. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"packs","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/packs_buy"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/packs/open":{"post":{"operationId":"packs_open","summary":"Reveal an owned paid pack; result.reveal, no new payment. Keep memo and use a new idempotency key for a fresh pending reveal result.","tags":["packs"],"description":"Requires packs. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"packs","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/packs_open"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/packs/buyback":{"post":{"operationId":"packs_buyback","summary":"Quote and authorize sale of an eligible held pull; result.refundAmount/refundUsd and an unsigned transaction. packs/buyback-quote provides a read-only estimate. Incoming proceeds do not replenish caps.","tags":["packs"],"description":"Requires buyback. All actions require the enable switch and age/WA checks. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"buyback","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/packs_buyback"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/trades/settlement":{"post":{"operationId":"trades_settlement","summary":"Build an accepted offer's settlement for either participant, including the second signer. result.offerId identifies the offer.","tags":["trades"],"description":"Requires trades. All actions require the enable switch and age/WA checks. max_price_micro_usdc bounds spend (captured card value for gifts, outgoing USDC otherwise); when omitted, the key's per-transaction cap is reserved. The ceiling must fit both caps. Returns the common attempt envelope; immediate actions have status confirmed and transactions []. With dry_run true, supported builders return simulation effects, fees, SOL requirements, caps, guard and warnings without DB writes, attempts, signing or broadcasting. Pack operations refuse with dry_run_unavailable; use pack read tools. Freshness guard parameters default to 120 seconds and no percentage cap; stale_value/price_above_max contain current values.","x-agent-scope":"trades","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"},"description":"Reuse the same key and body for retries, including across MCP and REST. Different input returns 409 idempotency_conflict. Required unless dry_run is true; dry runs ignore and never consume this key.","x-required-unless":{"dry_run":true}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/trades_settlement"}}}},"responses":{"200":{"description":"Built/replayed attempt, or a non-reserving simulation when dry_run is true.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"$ref":"#/components/schemas/DryRun"}]}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/keys/challenge":{"post":{"operationId":"key_challenge","summary":"Request a five-minute, single-use wallet challenge for the exact key intent.","description":"Both attestations must be true. Sign message as exact UTF-8 with the stated wallet's ed25519 key. No bearer or session is required; access eligibility and region gates apply.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyIntent"}}}},"responses":{"200":{"description":"Wallet challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Challenge"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/keys":{"post":{"operationId":"key_create","summary":"Issue a gsk_ key using wallet proof; a bearer key or cookie alone cannot issue keys.","description":"Send the same intent plus unchanged nonce and base58 signature before expiry. Plaintext key is shown only once. This self-serve path issues starter caps up to $50/tx and $100/day, with per-tx <= daily, even with a website cookie. Higher initial human caps require signed Settings issuance. Agent-made accounts have one active key until their linked owner signs a cap approval; otherwise a second key returns 403 active_key_limit_requires_approval. All keys share the wallet's rolling daily cap: highest approved current cap, never the sum, or the $100 starter default. Use request_limit_increase for owner approval.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueKey"}}}},"responses":{"201":{"description":"Created key and public key information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuedKey"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"key_list","summary":"List the owner's newest 100 keys without secrets.","security":[{"OwnerSession":[]}],"responses":{"200":{"description":"Owner keys, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyList"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/keys/{id}":{"delete":{"operationId":"key_revoke","summary":"Revoke an owned key; previously signed transactions cannot be revoked on-chain.","security":[{"OwnerSession":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Origin","in":"header","required":true,"schema":{"type":"string","format":"uri"},"description":"Must equal the request URL's origin."}],"responses":{"200":{"description":"Revoked key information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokedKey"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/events":{"get":{"operationId":"list_events","summary":"Poll wallet events with committed opaque cursors. market.listing.removed requires explicit types selection, even with filters or price.alert; it has null active price and reason sold/delisted/unknown. Public CC market events are opt-in: explicitly select market.listing.created or market.listing.price_changed in types, or supply filters. Market filters return price.alert for created/price_changed; explicit removals retain market.listing.removed and match price filters using previous_price_usdc. Wallet retention is 7 days, market retention up to 48 hours / 10,000 events. No extra scope or webhook required.","parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":256}},{"name":"types","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["trade_proposal.received","trade_proposal.sent","trade_proposal.accepted","trade_proposal.declined","trade_proposal.cancelled","trade_proposal.expired","trade_proposal.settled","trade_proposal.failed","agent.limit_request.approved","agent.limit_request.denied","agent.limit_request.expired","offer.cc_bid_received","listing.sold","gift.received","attempt.confirmed","attempt.failed","auto_accept.rejected","key.scope_missing","market.listing.created","market.listing.price_changed","market.listing.removed","price.alert","order.matched"]},"minItems":1,"maxItems":23},"style":"form","explode":false,"description":"Comma-separated event types. Without types or filters, only wallet events are returned. Market types or filters explicitly opt into market events. Use one cursor per stable types/filter set. A wallet-only poll advances the market position, so alternating wallet-only and market polls on one cursor skips market events. No since or a v1 cursor starts market events at the current watermark; only wallet history replays."},{"name":"filters","in":"query","required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"max_price_usdc":{"type":"number","exclusiveMinimum":0,"maximum":1000000000},"max_price_to_insured_pct":{"type":"number","exclusiveMinimum":0,"maximum":100000},"name_contains":{"type":"string","minLength":1,"maxLength":100},"franchise":{"type":"string","minLength":1,"maxLength":100},"min_grade":{"type":"number","minimum":0,"maximum":10},"grader":{"type":"string","minLength":1,"maxLength":32}},"additionalProperties":false}}},"description":"JSON market filters. Matching listing events are returned as price.alert. Use one cursor per stable types/filter set and save the cursor even after empty/short pages; each call scans at most 500 market positions."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Wallet events and next_cursor; pass as since on the next call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventList"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/me":{"get":{"operationId":"get_me","summary":"Read key, budget and owned inventory including private cards and confirmed gifts; advance bounded cap reconciliation. Available while agent trading is disabled.","parameters":[{"name":"inventory_cursor","in":"query","required":false,"schema":{"type":"string","format":"uuid"},"description":"Pass inventory.next_cursor for the next 100 cards. Omit to refresh from the first page."}],"responses":{"200":{"description":"Key and rolling 24h budget (including pending holds).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/proposals":{"get":{"operationId":"list_trade_proposals","summary":"Poll the authenticated user's directed proposal inbox and outbox.","tags":["proposals"],"description":"Requires trades scope. Read-only; no idempotency key, spend reservation or caps. Available while trading is disabled; shared 30/minute/key limiter, private/no-store responses. Ascending (updated_at, id), exclusive since; list visibility lags the database clock by 2 seconds. Longer transactions require overlapping or full reconciliation. Always retain next_cursor, including on empty pages; keep filters unchanged. Poll every 30–60 seconds, use status=all for lifecycle changes including settled/failed. No historical backfill: proposals accepted before cutover retain accepted until a new settlement transition. offered/requested and value_check are from the proposer's perspective. Card fields honor owner privacy; preview values use public visibility and fail soft with value_check: null on value-read failure. This reads current state, not an event log or snapshot.","x-agent-scope":"trades","parameters":[{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["received","sent","all"],"default":"received"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","enum":["pending","accepted","declined","cancelled","expired","settled","failed"]},{"type":"string","const":"all"}],"default":"pending"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"not":{}},{"type":"string","minLength":1,"maxLength":512}],"description":"Opaque next_cursor from the preceding call, or an exclusive ISO timestamp. Keep filters unchanged while polling."}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Participant proposals and a reusable polling cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalList"}}}},"400":{"description":"invalid_input for invalid filters/limit; invalid_cursor for malformed since.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/proposals/{id}":{"get":{"operationId":"get_trade_proposal","summary":"Read one directed proposal as its proposer or recipient.","tags":["proposals"],"description":"Requires trades scope. Non-participants and absent proposals return the same 404 not_found. Shares list privacy, rate limit and read-only behavior; private/no-store. No idempotency key or spend caps.","x-agent-scope":"trades","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Participant proposal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalDetail"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/attempts/{id}":{"get":{"operationId":"get_attempt_status","summary":"Read a stored attempt with the original scope, as its key or an active key linked to the same accepted owner. Does not relay or reconcile; available while trading is disabled.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Stored attempt, possibly still building.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttemptStatus"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/attempts/{id}/sign-ready":{"post":{"operationId":"get_sign_ready_attempt","summary":"Refresh an unsubmitted market attempt before its original expiry, retaining guards, reservation and prior-message reconciliation.","description":"Requires market scope. No body or idempotency key. Live price/listing, insured/max-price and selected bid expiry guards rerun. Never extends expiry. Linked same-owner keys can fetch existing bytes with the original scope; only the originating key refreshes and submits. Unlinked, different-owner and revoked keys receive 404.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Current unsigned transaction and recovery.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Attempt"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/market/search":{"get":{"operationId":"search_market_listings","summary":"Public market search, identical to MCP search_market_listings; no key or scope.","security":[],"description":"Limit 1–20 (default 20), same filters/sorting and live checks as MCP. No cursor pagination. Returns listings, checks, listing_index_as_of, stale, index (including ageMs) and per-field source/as_of. Private/no-store; 60/minute/IP. Cold/expired index returns index_unavailable with Retry-After capped at 10 seconds.","parameters":[{"name":"query","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"category","in":"query","required":false,"schema":{"description":"Franchise/category, e.g. Pokemon or Disney Lorcana","type":"string","minLength":1,"maxLength":40}},{"name":"grader","in":"query","required":false,"schema":{"type":"string","enum":["PSA","CGC","BGS","Beckett","SGC","TAG","RAW"]}},{"name":"min_grade","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":10}},{"name":"max_grade","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":10}},{"name":"min_price_usd","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":1000000000}},{"name":"max_price_usd","in":"query","required":false,"schema":{"type":"number","minimum":0,"maximum":1000000000}},{"name":"max_pct_vs_insured","in":"query","required":false,"schema":{"description":"Maximum ask / insured value × 100; 80 means at least 20% below insured. Unknown/private values do not match.","type":"number","minimum":0,"maximum":10000}},{"name":"sort","in":"query","required":false,"schema":{"description":"Price ascending, discount descending, or newest listing first","default":"newest","type":"string","enum":["price","discount","newest"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"At most 20 candidates receive live listing checks; response checks reports coverage.","default":20,"type":"integer","minimum":1,"maximum":20}}],"responses":{"200":{"description":"Public listings and freshness metadata.","content":{"application/json":{"schema":{"type":"object","properties":{"listings":{"type":"array","maxItems":20,"items":{"type":"object"}},"checks":{"type":"object"},"listing_index_as_of":{"type":["string","null"]},"stale":{"type":"boolean"},"index":{"type":"object"}}}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"index_unavailable; retry the same query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string","const":"10"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/submit":{"post":{"operationId":"submit_signed_transaction","summary":"Submit exact signed base64 transactions for an owned attempt.","description":"Requires the attempt's scope. Unique indices only; submit one or several at a time. Preserve the original message/blockhash and other signatures. Retry identical signed bytes only; completed indices are skipped. Availability, caps and owner authorization remain in force. No Idempotency-Key header required.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Submit"}}}},"responses":{"200":{"description":"Attempt with confirmation results for each transaction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Attempt"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/webhooks":{"post":{"operationId":"create_webhook","summary":"Register a public HTTPS webhook (webhooks:manage; maximum three active per user). Returns secret once.","description":"If your receiver needs an Authorization header (Cursor, Zapier), pass auth_header; we send it on every delivery next to the HMAC signature. Always still verify the signature. Write-only; responses expose only auth_header_set. No redirects are followed.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}}},"responses":{"201":{"description":"Created endpoint and signing secret.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSecret"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"list_webhooks","summary":"List owned webhooks without secrets (webhooks:manage).","responses":{"200":{"description":"Owned endpoints.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookList"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/webhooks/{id}":{"delete":{"operationId":"delete_webhook","summary":"Delete owned endpoint and deliveries. Requires webhooks:manage; no action idempotency key or spend reservation.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeleted"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_webhook","summary":"Set or clear an owned webhook's Authorization value (webhooks:manage).","description":"Optional auth_header is the full Authorization value, 1–1024 printable ASCII characters, no CR/LF. Null clears it; omission leaves it unchanged. Write-only: returns auth_header_set only. URL and events are unchanged. Test immediately with test_webhook. Always still verify the HMAC signature.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdate"}}}},"responses":{"200":{"description":"Updated endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/webhooks/{id}/test":{"post":{"operationId":"test_webhook","summary":"Send a signed ping synchronously; delivery kill switch applies. Requires webhooks:manage; no action idempotency key or spend reservation.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTest"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/webhooks/{id}/rotate-secret":{"post":{"operationId":"rotate_webhook_secret","summary":"Rotate signing secret; return it once. Requires webhooks:manage; no action idempotency key or spend reservation.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSecret"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/webhooks/{id}/enable":{"post":{"operationId":"enable_webhook","summary":"Re-enable owned endpoint and reset consecutive failures; maximum three active. Requires webhooks:manage; no action idempotency key or spend reservation.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/orders/wants":{"post":{"operationId":"create_standing_want","summary":"Post a catalog-card want with optional exact/minimum grade, maximum integer micro-USDC value and USDC add, and fairness tolerance (default 10%). Requires a unique client_order_id UUID; identical retries return the same order. Default expiry 30 days, maximum 90 days from creation. Triggers server matching.","tags":["orders"],"x-agent-scope":"orders:manage","description":"Key-owned standing orders. Shared rate/audit and creation/update trading rails. No action Idempotency-Key or spend reservation. Create retries use client_order_id. Delete/list work with the kill switch off. Matching creates unsigned proposals; acceptance/settlement retain spend caps and wallet signatures.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/create_standing_want"}}}},"responses":{"200":{"description":"Operation result or identical create retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingOrderResult"}}}},"201":{"description":"Created order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingOrderResult"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"list_standing_wants","summary":"List this key's standing wants, including paused/expired orders. Follow next_after with after while paging.","tags":["orders"],"x-agent-scope":"orders:manage","description":"Key-owned standing orders. Shared rate/audit and creation/update trading rails. No action Idempotency-Key or spend reservation. Create retries use client_order_id. Delete/list work with the kill switch off. Matching creates unsigned proposals; acceptance/settlement retain spend caps and wallet signatures.","parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Operation result or identical create retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingOrderList"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/orders/wants/{id}":{"patch":{"operationId":"update_standing_want","summary":"Update this key's want terms, expiry or active/paused status. Set grade/min_grade null to clear. Existing proposals keep their original terms.","tags":["orders"],"x-agent-scope":"orders:manage","description":"Key-owned standing orders. Shared rate/audit and creation/update trading rails. No action Idempotency-Key or spend reservation. Create retries use client_order_id. Delete/list work with the kill switch off. Matching creates unsigned proposals; acceptance/settlement retain spend caps and wallet signatures.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/update_standing_want"}}}},"responses":{"200":{"description":"Operation result or identical create retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingOrderResult"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"delete_standing_want","summary":"Delete this key's standing want. Existing proposals remain in the inbox and can be cancelled separately.","tags":["orders"],"x-agent-scope":"orders:manage","description":"Key-owned standing orders. Shared rate/audit and creation/update trading rails. No action Idempotency-Key or spend reservation. Create retries use client_order_id. Delete/list work with the kill switch off. Matching creates unsigned proposals; acceptance/settlement retain spend caps and wallet signatures.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operation result or identical create retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDeleted"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/orders/haves":{"post":{"operationId":"create_standing_have","summary":"Offer an owned asset UUID, optional minimum received value in micro-USDC, status and expiry. Requires public inventory, open-to-trade and no listing/escrow/buyback hold. client_order_id makes retries safe. Reciprocal card wants or explicit USDC-only wants can match.","tags":["orders"],"x-agent-scope":"orders:manage","description":"Key-owned standing orders. Shared rate/audit and creation/update trading rails. No action Idempotency-Key or spend reservation. Create retries use client_order_id. Delete/list work with the kill switch off. Matching creates unsigned proposals; acceptance/settlement retain spend caps and wallet signatures.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/create_standing_have"}}}},"responses":{"200":{"description":"Operation result or identical create retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingOrderResult"}}}},"201":{"description":"Created order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingOrderResult"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"list_standing_haves","summary":"List this key's standing haves, including paused/expired orders. Follow next_after with after while paging.","tags":["orders"],"x-agent-scope":"orders:manage","description":"Key-owned standing orders. Shared rate/audit and creation/update trading rails. No action Idempotency-Key or spend reservation. Create retries use client_order_id. Delete/list work with the kill switch off. Matching creates unsigned proposals; acceptance/settlement retain spend caps and wallet signatures.","parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Operation result or identical create retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingOrderList"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/orders/haves/{id}":{"delete":{"operationId":"delete_standing_have","summary":"Delete this key's standing have; no longer eligible for new automatic proposals. Does not cancel existing proposals.","tags":["orders"],"x-agent-scope":"orders:manage","description":"Key-owned standing orders. Shared rate/audit and creation/update trading rails. No action Idempotency-Key or spend reservation. Create retries use client_order_id. Delete/list work with the kill switch off. Matching creates unsigned proposals; acceptance/settlement retain spend caps and wallet signatures.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operation result or identical create retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDeleted"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/orders/matches":{"get":{"operationId":"list_order_matches","summary":"List this key's match records and proposal IDs/statuses. Reciprocal matches have two records for one proposal. Use get_trade_proposal (trades scope) for privacy-filtered terms.","tags":["orders"],"x-agent-scope":"orders:manage","description":"Key-owned standing orders. Shared rate/audit and creation/update trading rails. No action Idempotency-Key or spend reservation. Create retries use client_order_id. Delete/list work with the kill switch off. Matching creates unsigned proposals; acceptance/settlement retain spend caps and wallet signatures.","parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Operation result or identical create retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderMatches"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/auto-accept":{"get":{"operationId":"get_auto_accept_rules","summary":"Read this key's rules (trades); defaults off. Available with trading disabled.","responses":{"200":{"description":"Rules.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoAcceptRules"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"set_auto_accept_rules","summary":"Replace this key's opt-in rules (trades). Caps use integer micro-USDC; ratio uses basis points. All write rails apply; no idempotency key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoAcceptInput"}}}},"responses":{"200":{"description":"Saved rules.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoAcceptRules"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/auto-accept/disable":{"post":{"operationId":"disable_auto_accept_rules","summary":"Disable this key's rules (trades). Available with trading disabled; no idempotency key.","responses":{"200":{"description":"Disabled rules.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoAcceptRules"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/proposals/{id}/sign-ready":{"post":{"operationId":"get_sign_ready_settlement","summary":"Fetch a participant's sign-ready settlement (trades). Rechecks SOL and trading rails; preserves signatures, spend holds and old-message reconciliation when refreshing stale blockhashes. No idempotency key or request body.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"description":"expires_at is the signing-session deadline; the blockhash can expire earlier. Sign promptly. Re-fetch on expiry; attempt_busy means retry. An already submitted attempt returns status guidance without replacing its signed bytes.","responses":{"200":{"description":"Current partially-signed transaction and expiry in the standard attempt envelope. Sign locally then submit_signed_transaction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Attempt"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/limits/requests":{"post":{"operationId":"request_limit_increase","summary":"Request higher caps on the authenticated key; requires human website approval unless the owner enabled self-approve for this key. Self-approved requests return status approved, approved_via self_approve and approved_immediately true.","description":"Any active key; no additional scope or action idempotency key. Every supplied USD cap must exceed the current value, at most 10000/transaction and 50000/day. Resulting per-tx must be <= daily, including unchanged values, or returns 400 invalid_limits. Reason is required, 1–280 characters. One pending request per key; replaces old pending requests, expires after 24 hours. owner_link_required blocks approval until a human accepts ownership. Before migration 0141 returns 503 limit_requests_unavailable.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitIncreaseInput"}}}},"responses":{"201":{"description":"Pending owner approval, or immediately approved with updated caps when this key has owner-granted self-approve.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitRequested"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"get_limit_requests","summary":"List the authenticated key's latest 100 requests, newest first; any active key.","description":"Stored status; reads never mutate expiry. Pending requests past expires_at cannot be approved. Before migration 0141 returns 503 limit_requests_unavailable.","responses":{"200":{"description":"Owned requests and whether an owner link is needed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitRequests"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/limits/lower":{"post":{"operationId":"lower_limits","summary":"Immediately lower this key's caps; supplied values must be at most current caps.","description":"Any active key; no scope, action idempotency key or approval needed. Zero allowed; omitted values unchanged. Conditional update prevents increases. Before migration 0141 returns 503 limit_requests_unavailable.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LowerLimitsInput"}}}},"responses":{"200":{"description":"Updated caps.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LimitsLowered"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/agent/v1/owner-link":{"post":{"operationId":"link_owner","summary":"Propose a human owner by username for an agent-made account.","description":"Any active key. Returns owner_username, never owner_user_id. Repeat proposals to the same owner share one notification. No spending authority changes until that human accepts in their own session with a wallet signature. Self and agent-made owners are rejected. Only the accepted owner may unlink. Before migration 0141 returns 503 limit_requests_unavailable.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkOwnerInput"}}}},"responses":{"201":{"description":"Pending owner consent.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnerProposed"}}}},"400":{"description":"Invalid JSON, fields, missing idempotency key or incorrect signed message.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked or invalid key; invalid wallet signature/challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope, cap, attestation, region, account, access eligibility or availability restriction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict, busy/failed attempt, changed price/quote or signed bytes. Recover the same attempt before replacing a payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Signing window or quote expired. Budget may remain held; call me to advance reconciliation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 180000 characters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Username contains spaces/invisible characters or is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Respect the delay in the message and Retry-After when present.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay when supplied by the service."}}},"503":{"description":"Temporarily unavailable; recover the same attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"default":{"description":"Shared service or emergency error; original HTTP status and code are preserved in the uniform envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"AgentKey":{"type":"http","scheme":"bearer","bearerFormat":"gsk_","description":"Send Authorization: Bearer gsk_... on every authenticated request. Scopes are listed per action; cookies do not substitute for a key."},"OwnerSession":{"type":"apiKey","in":"cookie","name":"cardvault_session","description":"Signed-in wallet owner session for key listing/revocation. Human key creation with higher initial caps uses the separate signed Settings path."}},"schemas":{"CcBidDryRun":{"type":"object","properties":{"dry_run":{"type":"boolean","const":true},"simulation":{"type":"string","const":"succeeded"},"amount_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"proceeds_micro_usdc":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"},"effects":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"usdc_out"},"amount_micro_usdc":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","amount_micro_usdc","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"usdc_in"},"amount_micro_usdc":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","amount_micro_usdc","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"nft_out"},"asset":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","asset","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"nft_in"},"asset":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","asset","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"asset":{"type":"string"},"price_micro_usdc":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"}},"required":["type","asset"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"unlist"},"asset":{"type":"string"}},"required":["type","asset"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"listing_buy"},"asset":{"type":"string"},"price_micro_usdc":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"},"buyer":{"type":"string"},"seller":{"type":"string"},"program":{"type":"string"}},"required":["type","asset","price_micro_usdc","buyer","seller","program"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"sol_transfer"},"lamports":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","lamports","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"other"},"program":{"type":"string"}},"required":["type","program"],"additionalProperties":false}]}},"fee_payer":{"type":"string","minLength":32,"maxLength":44},"signers_required":{"type":"array","items":{"$ref":"#/components/schemas/CcBidDryRun/properties/fee_payer"}},"cap_impact":{"type":"object","properties":{"amount_micro_usdc":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"},"used_micro_usdc":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"},"reserved":{"type":"boolean","const":false}},"required":["amount_micro_usdc","used_micro_usdc","reserved"],"additionalProperties":false},"result":{"type":"object","properties":{"selected_offer":{"type":"object","properties":{"offer":{"$ref":"#/components/schemas/CcBidDryRun/properties/fee_payer"},"exists":{"type":"boolean","const":true},"bidder":{"$ref":"#/components/schemas/CcBidDryRun/properties/fee_payer"},"price_micro_usdc":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expired":{"type":"boolean"},"funded":{"type":"boolean"}},"required":["offer","exists","bidder","price_micro_usdc","expires_at","expired","funded"],"additionalProperties":false},"highest_skipped_bid":{"anyOf":[{"type":"object","properties":{"offer":{"$ref":"#/components/schemas/CcBidDryRun/properties/fee_payer"},"exists":{"$ref":"#/components/schemas/CcBidDryRun/properties/result/properties/selected_offer/properties/exists"},"bidder":{"$ref":"#/components/schemas/CcBidDryRun/properties/fee_payer"},"price_micro_usdc":{"$ref":"#/components/schemas/CcBidDryRun/properties/amount_micro_usdc"},"expires_at":{"$ref":"#/components/schemas/CcBidDryRun/properties/result/properties/selected_offer/properties/expires_at"},"expired":{"$ref":"#/components/schemas/CcBidDryRun/properties/result/properties/selected_offer/properties/expired"},"funded":{"$ref":"#/components/schemas/CcBidDryRun/properties/result/properties/selected_offer/properties/funded"},"reason":{"type":"string","enum":["underfunded","self_bid","insufficient_validity"]}},"required":["offer","exists","bidder","price_micro_usdc","expires_at","expired","funded","reason"],"additionalProperties":false},{"type":"null"}],"description":"Highest-priced ineligible bid observed in auto-selection, or null. Explicit offers do not scan competing bids."}},"required":["selected_offer","highest_skipped_bid"],"additionalProperties":true},"warnings":{"type":"array","items":{"type":"string"}},"next_step":{"type":"null"}},"required":["dry_run","simulation","amount_micro_usdc","proceeds_micro_usdc","effects","fee_payer","signers_required","cap_impact","result","warnings","next_step"],"additionalProperties":false},"Proposal":{"type":"object","properties":{"origin":{"type":"string","enum":["manual","standing_order"]},"auto_accept":{"type":"object","properties":{"accepted":{"type":"boolean"},"evaluations":{"type":"array","items":{"type":"object","properties":{"key_id":{"type":"string","format":"uuid"},"reason_code":{"type":"string"},"checked_at":{"type":"string"}},"required":["key_id","reason_code","checked_at"],"additionalProperties":false}}},"required":["accepted","evaluations"],"additionalProperties":false},"id":{"type":"string","format":"uuid"},"direction":{"type":"string","enum":["received","sent"]},"status":{"type":"string","enum":["pending","accepted","declined","cancelled","expired","settled","failed"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"counterparty":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"username":{"type":["string","null"]},"wallet":{"type":"string"},"is_bot":{"type":"boolean"}},"required":["user_id","username","wallet","is_bot"],"additionalProperties":false},"offered":{"type":"array","items":{"type":"object","properties":{"insured_value_checked_at":{"type":["string","null"]},"insured_value_stale":{"type":"boolean"},"id":{"type":"string","format":"uuid"},"mint":{"type":["string","null"]},"name":{"type":["string","null"]},"grade":{"type":["string","null"]},"grader":{"type":["string","null"]},"insured_value_micro_usdc":{"anyOf":[{"type":"string","pattern":"^\\d+$"},{"type":"null"}]},"insured_value_usd":{"anyOf":[{"type":"string","pattern":"^\\d+\\.\\d{6}$"},{"type":"null"}]},"market_value_micro_usdc":{"anyOf":[{"$ref":"#/components/schemas/Proposal/properties/offered/items/properties/insured_value_micro_usdc/anyOf/0"},{"type":"null"}]},"market_value_usd":{"anyOf":[{"$ref":"#/components/schemas/Proposal/properties/offered/items/properties/insured_value_usd/anyOf/0"},{"type":"null"}]}},"required":["id","mint","name","grade","grader","insured_value_micro_usdc","insured_value_usd","market_value_micro_usdc","market_value_usd"],"additionalProperties":false}},"requested":{"type":"array","items":{"$ref":"#/components/schemas/Proposal/properties/offered/items"}},"offered_usdc":{"type":"object","properties":{"micro_usdc":{"$ref":"#/components/schemas/Proposal/properties/offered/items/properties/insured_value_micro_usdc/anyOf/0"},"usd":{"$ref":"#/components/schemas/Proposal/properties/offered/items/properties/insured_value_usd/anyOf/0"}},"required":["micro_usdc","usd"],"additionalProperties":false},"requested_usdc":{"$ref":"#/components/schemas/Proposal/properties/offered_usdc"},"value_check":{"anyOf":[{"type":"object","properties":{"give_total_usd":{"type":["string","null"]},"get_total_usd":{"type":["string","null"]},"difference_usd":{"type":["string","null"]},"difference_pct":{"type":["number","null"]},"balance":{"anyOf":[{"type":"string","enum":["even","you_overpay","you_underpay"]},{"type":"null"}]},"values_complete":{"type":"boolean"},"cards":{"type":"array","items":{"type":"object","properties":{"mint":{"type":["string","null"]},"side":{"type":"string","enum":["give","get"]},"value_usd":{"type":["string","null"]},"insured_value_checked_at":{"type":["string","null"]},"insured_value_stale":{"type":"boolean"},"insured_value_usd":{"type":"string"},"market_reference_usd":{"type":"string"}},"required":["mint","side","value_usd"],"additionalProperties":false}},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"mint":{"type":"string"},"side":{"type":"string","enum":["give","get"]}},"required":["code","message"],"additionalProperties":false}}},"required":["give_total_usd","get_total_usd","difference_usd","difference_pct","balance","values_complete","cards","warnings"],"additionalProperties":false},{"type":"null"}]},"next_actions":{"type":"array","items":{"type":"string"}}},"required":["origin","id","direction","status","created_at","updated_at","expires_at","counterparty","offered","requested","offered_usdc","requested_usdc","value_check","next_actions"],"additionalProperties":false},"ProposalDetail":{"type":"object","properties":{"proposal":{"type":"object","properties":{"origin":{"type":"string","enum":["manual","standing_order"]},"auto_accept":{"type":"object","properties":{"accepted":{"type":"boolean"},"evaluations":{"type":"array","items":{"type":"object","properties":{"key_id":{"type":"string","format":"uuid"},"reason_code":{"type":"string"},"checked_at":{"type":"string"}},"required":["key_id","reason_code","checked_at"],"additionalProperties":false}}},"required":["accepted","evaluations"],"additionalProperties":false},"id":{"type":"string","format":"uuid"},"direction":{"type":"string","enum":["received","sent"]},"status":{"type":"string","enum":["pending","accepted","declined","cancelled","expired","settled","failed"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"counterparty":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"username":{"type":["string","null"]},"wallet":{"type":"string"},"is_bot":{"type":"boolean"}},"required":["user_id","username","wallet","is_bot"],"additionalProperties":false},"offered":{"type":"array","items":{"type":"object","properties":{"insured_value_checked_at":{"type":["string","null"]},"insured_value_stale":{"type":"boolean"},"id":{"type":"string","format":"uuid"},"mint":{"type":["string","null"]},"name":{"type":["string","null"]},"grade":{"type":["string","null"]},"grader":{"type":["string","null"]},"insured_value_micro_usdc":{"anyOf":[{"type":"string","pattern":"^\\d+$"},{"type":"null"}]},"insured_value_usd":{"anyOf":[{"type":"string","pattern":"^\\d+\\.\\d{6}$"},{"type":"null"}]},"market_value_micro_usdc":{"anyOf":[{"$ref":"#/components/schemas/ProposalDetail/properties/proposal/properties/offered/items/properties/insured_value_micro_usdc/anyOf/0"},{"type":"null"}]},"market_value_usd":{"anyOf":[{"$ref":"#/components/schemas/ProposalDetail/properties/proposal/properties/offered/items/properties/insured_value_usd/anyOf/0"},{"type":"null"}]}},"required":["id","mint","name","grade","grader","insured_value_micro_usdc","insured_value_usd","market_value_micro_usdc","market_value_usd"],"additionalProperties":false}},"requested":{"type":"array","items":{"$ref":"#/components/schemas/ProposalDetail/properties/proposal/properties/offered/items"}},"offered_usdc":{"type":"object","properties":{"micro_usdc":{"$ref":"#/components/schemas/ProposalDetail/properties/proposal/properties/offered/items/properties/insured_value_micro_usdc/anyOf/0"},"usd":{"$ref":"#/components/schemas/ProposalDetail/properties/proposal/properties/offered/items/properties/insured_value_usd/anyOf/0"}},"required":["micro_usdc","usd"],"additionalProperties":false},"requested_usdc":{"$ref":"#/components/schemas/ProposalDetail/properties/proposal/properties/offered_usdc"},"value_check":{"anyOf":[{"type":"object","properties":{"give_total_usd":{"type":["string","null"]},"get_total_usd":{"type":["string","null"]},"difference_usd":{"type":["string","null"]},"difference_pct":{"type":["number","null"]},"balance":{"anyOf":[{"type":"string","enum":["even","you_overpay","you_underpay"]},{"type":"null"}]},"values_complete":{"type":"boolean"},"cards":{"type":"array","items":{"type":"object","properties":{"mint":{"type":["string","null"]},"side":{"type":"string","enum":["give","get"]},"value_usd":{"type":["string","null"]},"insured_value_checked_at":{"type":["string","null"]},"insured_value_stale":{"type":"boolean"},"insured_value_usd":{"type":"string"},"market_reference_usd":{"type":"string"}},"required":["mint","side","value_usd"],"additionalProperties":false}},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"mint":{"type":"string"},"side":{"type":"string","enum":["give","get"]}},"required":["code","message"],"additionalProperties":false}}},"required":["give_total_usd","get_total_usd","difference_usd","difference_pct","balance","values_complete","cards","warnings"],"additionalProperties":false},{"type":"null"}]},"next_actions":{"type":"array","items":{"type":"string"}}},"required":["origin","id","direction","status","created_at","updated_at","expires_at","counterparty","offered","requested","offered_usdc","requested_usdc","value_check","next_actions"],"additionalProperties":false},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["proposal","next_step"],"additionalProperties":false},"ProposalList":{"type":"object","properties":{"proposals":{"type":"array","items":{"type":"object","properties":{"origin":{"type":"string","enum":["manual","standing_order"]},"auto_accept":{"type":"object","properties":{"accepted":{"type":"boolean"},"evaluations":{"type":"array","items":{"type":"object","properties":{"key_id":{"type":"string","format":"uuid"},"reason_code":{"type":"string"},"checked_at":{"type":"string"}},"required":["key_id","reason_code","checked_at"],"additionalProperties":false}}},"required":["accepted","evaluations"],"additionalProperties":false},"id":{"type":"string","format":"uuid"},"direction":{"type":"string","enum":["received","sent"]},"status":{"type":"string","enum":["pending","accepted","declined","cancelled","expired","settled","failed"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"counterparty":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"username":{"type":["string","null"]},"wallet":{"type":"string"},"is_bot":{"type":"boolean"}},"required":["user_id","username","wallet","is_bot"],"additionalProperties":false},"offered":{"type":"array","items":{"type":"object","properties":{"insured_value_checked_at":{"type":["string","null"]},"insured_value_stale":{"type":"boolean"},"id":{"type":"string","format":"uuid"},"mint":{"type":["string","null"]},"name":{"type":["string","null"]},"grade":{"type":["string","null"]},"grader":{"type":["string","null"]},"insured_value_micro_usdc":{"anyOf":[{"type":"string","pattern":"^\\d+$"},{"type":"null"}]},"insured_value_usd":{"anyOf":[{"type":"string","pattern":"^\\d+\\.\\d{6}$"},{"type":"null"}]},"market_value_micro_usdc":{"anyOf":[{"$ref":"#/components/schemas/ProposalList/properties/proposals/items/properties/offered/items/properties/insured_value_micro_usdc/anyOf/0"},{"type":"null"}]},"market_value_usd":{"anyOf":[{"$ref":"#/components/schemas/ProposalList/properties/proposals/items/properties/offered/items/properties/insured_value_usd/anyOf/0"},{"type":"null"}]}},"required":["id","mint","name","grade","grader","insured_value_micro_usdc","insured_value_usd","market_value_micro_usdc","market_value_usd"],"additionalProperties":false}},"requested":{"type":"array","items":{"$ref":"#/components/schemas/ProposalList/properties/proposals/items/properties/offered/items"}},"offered_usdc":{"type":"object","properties":{"micro_usdc":{"$ref":"#/components/schemas/ProposalList/properties/proposals/items/properties/offered/items/properties/insured_value_micro_usdc/anyOf/0"},"usd":{"$ref":"#/components/schemas/ProposalList/properties/proposals/items/properties/offered/items/properties/insured_value_usd/anyOf/0"}},"required":["micro_usdc","usd"],"additionalProperties":false},"requested_usdc":{"$ref":"#/components/schemas/ProposalList/properties/proposals/items/properties/offered_usdc"},"value_check":{"anyOf":[{"type":"object","properties":{"give_total_usd":{"type":["string","null"]},"get_total_usd":{"type":["string","null"]},"difference_usd":{"type":["string","null"]},"difference_pct":{"type":["number","null"]},"balance":{"anyOf":[{"type":"string","enum":["even","you_overpay","you_underpay"]},{"type":"null"}]},"values_complete":{"type":"boolean"},"cards":{"type":"array","items":{"type":"object","properties":{"mint":{"type":["string","null"]},"side":{"type":"string","enum":["give","get"]},"value_usd":{"type":["string","null"]},"insured_value_checked_at":{"type":["string","null"]},"insured_value_stale":{"type":"boolean"},"insured_value_usd":{"type":"string"},"market_reference_usd":{"type":"string"}},"required":["mint","side","value_usd"],"additionalProperties":false}},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"mint":{"type":"string"},"side":{"type":"string","enum":["give","get"]}},"required":["code","message"],"additionalProperties":false}}},"required":["give_total_usd","get_total_usd","difference_usd","difference_pct","balance","values_complete","cards","warnings"],"additionalProperties":false},{"type":"null"}]},"next_actions":{"type":"array","items":{"type":"string"}}},"required":["origin","id","direction","status","created_at","updated_at","expires_at","counterparty","offered","requested","offered_usdc","requested_usdc","value_check","next_actions"],"additionalProperties":false},"maxItems":100},"next_cursor":{"type":"string"},"server_time":{"type":"string","format":"date-time"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]},"setup":{"type":"object","properties":{"webhook_configured":{"type":"boolean"},"next_step":{"type":"string"}},"required":["webhook_configured"],"additionalProperties":false,"description":"Present only when the key's user has zero active webhooks. Includes scope-aware webhook setup and polling guidance; omitted once any user webhook is active. Does not indicate delivery health or polling status."}},"required":["proposals","next_cursor","server_time","next_step"],"additionalProperties":false},"KeyIntent":{"type":"object","properties":{"wallet_address":{"type":"string","minLength":32,"maxLength":44},"label":{"type":"string","minLength":1,"maxLength":80},"scopes":{"type":"array","items":{"type":"string","enum":["market","offers","trades","swap","packs","buyback","profile:write","webhooks:manage","orders:manage"]},"minItems":1,"maxItems":9},"per_tx_cap_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"daily_cap_micro_usdc":{"$ref":"#/components/schemas/KeyIntent/properties/per_tx_cap_micro_usdc"},"attested_not_wa":{"type":"boolean","default":false},"attested_age_18":{"type":"boolean","default":false}},"required":["wallet_address","label","scopes","per_tx_cap_micro_usdc","daily_cap_micro_usdc"],"additionalProperties":false},"IssueKey":{"type":"object","properties":{"wallet_address":{"type":"string","minLength":32,"maxLength":44},"label":{"type":"string","minLength":1,"maxLength":80},"scopes":{"type":"array","items":{"type":"string","enum":["market","offers","trades","swap","packs","buyback","profile:write","webhooks:manage","orders:manage"]},"minItems":1,"maxItems":9},"per_tx_cap_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"daily_cap_micro_usdc":{"$ref":"#/components/schemas/IssueKey/properties/per_tx_cap_micro_usdc"},"attested_not_wa":{"type":"boolean","default":false},"attested_age_18":{"type":"boolean","default":false},"nonce":{"type":"string","pattern":"^[a-f0-9]{64}\\.\\d{13}\\.[a-f0-9]{64}$"},"signature":{"type":"string","minLength":64,"maxLength":120}},"required":["wallet_address","label","scopes","per_tx_cap_micro_usdc","daily_cap_micro_usdc","nonce","signature"],"additionalProperties":false},"Submit":{"type":"object","properties":{"attempt_id":{"type":"string","format":"uuid"},"transactions":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9},"signed_transaction":{"type":"string","minLength":1,"maxLength":16000}},"required":["index","signed_transaction"],"additionalProperties":false},"minItems":1,"maxItems":10}},"required":["attempt_id","transactions"],"additionalProperties":false},"KeyInfo":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"wallet_address":{"type":"string","minLength":32,"maxLength":44},"label":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["market","offers","trades","swap","packs","buyback","profile:write","webhooks:manage","orders:manage"]}},"per_tx_cap_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"daily_cap_micro_usdc":{"$ref":"#/components/schemas/KeyInfo/properties/per_tx_cap_micro_usdc"},"self_approve_raises":{"type":"boolean"},"self_approve_granted_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"self_approve_granted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","wallet_address","label","scopes","per_tx_cap_micro_usdc","daily_cap_micro_usdc","self_approve_raises","self_approve_granted_by","self_approve_granted_at","created_at","revoked_at","last_used_at"],"additionalProperties":false},"IssuedKey":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"wallet_address":{"type":"string","minLength":32,"maxLength":44},"label":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["market","offers","trades","swap","packs","buyback","profile:write","webhooks:manage","orders:manage"]}},"per_tx_cap_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"daily_cap_micro_usdc":{"$ref":"#/components/schemas/IssuedKey/properties/per_tx_cap_micro_usdc"},"self_approve_raises":{"type":"boolean"},"self_approve_granted_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"self_approve_granted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"key":{"type":"string","pattern":"^gsk_[A-Za-z0-9_-]{43}$","description":"Shown only once; store securely."},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["id","wallet_address","label","scopes","per_tx_cap_micro_usdc","daily_cap_micro_usdc","self_approve_raises","self_approve_granted_by","self_approve_granted_at","created_at","revoked_at","last_used_at","key","next_step"],"additionalProperties":false},"KeyList":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"wallet_address":{"type":"string","minLength":32,"maxLength":44},"label":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["market","offers","trades","swap","packs","buyback","profile:write","webhooks:manage","orders:manage"]}},"per_tx_cap_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"daily_cap_micro_usdc":{"$ref":"#/components/schemas/KeyList/properties/keys/items/properties/per_tx_cap_micro_usdc"},"self_approve_raises":{"type":"boolean"},"self_approve_granted_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"self_approve_granted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","wallet_address","label","scopes","per_tx_cap_micro_usdc","daily_cap_micro_usdc","self_approve_raises","self_approve_granted_by","self_approve_granted_at","created_at","revoked_at","last_used_at"],"additionalProperties":false},"maxItems":100},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["keys","next_step"],"additionalProperties":false},"RevokedKey":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"wallet_address":{"type":"string","minLength":32,"maxLength":44},"label":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["market","offers","trades","swap","packs","buyback","profile:write","webhooks:manage","orders:manage"]}},"per_tx_cap_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"daily_cap_micro_usdc":{"$ref":"#/components/schemas/RevokedKey/properties/key/properties/per_tx_cap_micro_usdc"},"self_approve_raises":{"type":"boolean"},"self_approve_granted_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"self_approve_granted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","wallet_address","label","scopes","per_tx_cap_micro_usdc","daily_cap_micro_usdc","self_approve_raises","self_approve_granted_by","self_approve_granted_at","created_at","revoked_at","last_used_at"],"additionalProperties":false},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["key","next_step"],"additionalProperties":false},"Challenge":{"type":"object","properties":{"nonce":{"type":"string"},"message":{"type":"string"},"expires_at":{"type":"string","format":"date-time"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["nonce","message","expires_at","next_step"],"additionalProperties":false},"Me":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"wallet_address":{"type":"string","minLength":32,"maxLength":44},"label":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["market","offers","trades","swap","packs","buyback","profile:write","webhooks:manage","orders:manage"]}},"per_tx_cap_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"daily_cap_micro_usdc":{"$ref":"#/components/schemas/Me/properties/key/properties/per_tx_cap_micro_usdc"},"self_approve_raises":{"type":"boolean"},"self_approve_granted_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"self_approve_granted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","wallet_address","label","scopes","per_tx_cap_micro_usdc","daily_cap_micro_usdc","self_approve_raises","self_approve_granted_by","self_approve_granted_at","created_at","revoked_at","last_used_at"],"additionalProperties":false},"agent_api_enabled":{"type":"boolean"},"used_micro_usdc":{"$ref":"#/components/schemas/Me/properties/key/properties/per_tx_cap_micro_usdc"},"remaining_micro_usdc":{"$ref":"#/components/schemas/Me/properties/key/properties/per_tx_cap_micro_usdc"},"inventory":{"type":"object","properties":{"cards":{"type":"array","items":{"type":"object","properties":{"asset_id":{"type":"string","format":"uuid"},"mint":{"type":["string","null"]},"name":{"type":"string"},"status":{"type":"string"},"insured_value_checked_at":{"type":["string","null"]},"insured_value_stale":{"type":"boolean"},"insured_value_usd":{"type":["string","null"]},"market_value_usd":{"type":["string","null"]}},"required":["asset_id","mint","name","status","insured_value_checked_at","insured_value_stale","insured_value_usd","market_value_usd"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["cards","next_cursor"],"additionalProperties":false},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]},"setup":{"type":"object","properties":{"webhook_configured":{"type":"boolean"},"next_step":{"type":"string"}},"required":["webhook_configured"],"additionalProperties":false,"description":"Present only when the key's user has zero active webhooks. Includes scope-aware webhook setup and polling guidance; omitted once any user webhook is active. Does not indicate delivery health or polling status."}},"required":["key","agent_api_enabled","used_micro_usdc","remaining_micro_usdc","inventory","next_step"],"additionalProperties":false},"Attempt":{"type":"object","properties":{"recovery":{"type":"object","properties":{"action":{"type":"string","enum":["sign_and_submit","handoff_to_signer","retry_same_key","new_idempotency_key","refresh_blockhash","rebuild","wait","none"],"description":"handoff_to_signer: give the bytes to the original wallet and originating API key to check/refresh, sign and submit. tx_mismatch checks expiry first. For unexpired attempts, recorded signed bytes use retry_same_key; without recorded bytes, sign_and_submit fetches current sign-ready bytes. refresh_blockhash requires an invalid hash, unbounded hash age, or at most 32 blocks of verified/estimated margin. Within 20s of refresh, low margin or unknown age waits unless the hash is invalid; the guard is capped at the deadline; retry_after_s >= 1 even when seconds_left rounds down to zero before expiry."},"idempotency_key_reusable":{"type":"boolean"},"retry_after_s":{"type":["number","null"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"seconds_left":{"type":["number","null"]},"refresh_url":{"type":"string"},"refresh_tool":{"type":"string"}},"required":["action","idempotency_key_reusable","retry_after_s","expires_at","seconds_left"],"additionalProperties":false},"handoff":{"type":"object","properties":{"shareable_with":{"type":"string","const":"same_owner_keys"},"required_scope":{"type":"string","enum":["market","offers","trades","swap","packs","buyback","profile:write","webhooks:manage","orders:manage"]},"signing_wallet":{"type":"string"}},"required":["shareable_with"],"additionalProperties":false},"attempt_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","confirmed","failed"]},"amount_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"expires_at":{"type":"string","format":"date-time"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]},"retry_after_seconds":{"type":"integer","exclusiveMinimum":0,"description":"Delay before polling after an unknown blockhash observation; also in recovery.retry_after_s."},"seconds_remaining":{"type":"integer","minimum":0},"proceeds_micro_usdc":{"$ref":"#/components/schemas/Attempt/properties/amount_micro_usdc"},"transactions":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9},"unsigned_transaction":{"type":"string","description":"Base64 serialized transaction. Sign the exact message locally; preserve partner signatures."},"reference":{"type":"string"},"blockhash":{"type":"string"},"last_valid_block_height":{"type":"integer","description":"Conservative reconciliation ceiling; does not establish the transaction's signing margin."},"blockhash_last_valid_block_height":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Exact expiry height verified for the transaction message's blockhash; otherwise null (older attempts may omit it). CC bids retain exact expiry; market buys and list/unlist use partner bytes with an estimated expiry floor. Immediately after the partner returns bytes, before simulations or account work, finalized and processed validity probes establish the age bound. A processed-valid and finalized-invalid hash is newer than the probe bank, assuming the same fork and finalized context <= processed validity context. Its expiry floor is probe finalized height + 150, persisted unchanged through bind even if the hash finalizes meanwhile. Binding and polls compare processed height to the floor with a separate 32-block signing margin. At 2.4 blocks/s and 32-block finalized lag, a fresh build stays sign_and_submit for about 36s: (150 - 32 - 32) / 2.4 = 35.8s; build latency consumes that window. Already-finalized unmatched hashes at the early probe have unknown age and request refresh. Legacy in-flight attempts with no recorded expiry get a single refresh_blockhash after deploy; the replacement records its own freshness evidence. Matching getLatestBlockhash observations are also exact. The estimate is not returned here."},"confirmed":{"type":"boolean"},"result":{"type":"object","additionalProperties":{},"description":"Action-specific service response; additional fields are preserved. See the guide's endpoint reference."},"effects":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"usdc_out"},"amount_micro_usdc":{"$ref":"#/components/schemas/Attempt/properties/amount_micro_usdc"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","amount_micro_usdc","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"usdc_in"},"amount_micro_usdc":{"$ref":"#/components/schemas/Attempt/properties/amount_micro_usdc"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","amount_micro_usdc","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"nft_out"},"asset":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","asset","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"nft_in"},"asset":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","asset","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"asset":{"type":"string"},"price_micro_usdc":{"$ref":"#/components/schemas/Attempt/properties/amount_micro_usdc"}},"required":["type","asset"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"unlist"},"asset":{"type":"string"}},"required":["type","asset"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"listing_buy"},"asset":{"type":"string"},"price_micro_usdc":{"$ref":"#/components/schemas/Attempt/properties/amount_micro_usdc"},"buyer":{"type":"string"},"seller":{"type":"string"},"program":{"type":"string"}},"required":["type","asset","price_micro_usdc","buyer","seller","program"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"sol_transfer"},"lamports":{"$ref":"#/components/schemas/Attempt/properties/amount_micro_usdc"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","lamports","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"other"},"program":{"type":"string"}},"required":["type","program"],"additionalProperties":false}]}},"fee_payer":{"type":["string","null"]},"signers_required":{"type":"array","items":{"type":"string"}}},"required":["index","unsigned_transaction","reference","confirmed","effects","fee_payer","signers_required"],"additionalProperties":false}},"result":{"type":"object","properties":{"selected_offer":{"type":"object","properties":{"offer":{"type":"string","minLength":32,"maxLength":44},"exists":{"type":"boolean","const":true},"bidder":{"$ref":"#/components/schemas/Attempt/properties/result/properties/selected_offer/properties/offer"},"price_micro_usdc":{"$ref":"#/components/schemas/Attempt/properties/amount_micro_usdc"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expired":{"type":"boolean"},"funded":{"type":"boolean"}},"required":["offer","exists","bidder","price_micro_usdc","expires_at","expired","funded"],"additionalProperties":false},"highest_skipped_bid":{"anyOf":[{"type":"object","properties":{"offer":{"$ref":"#/components/schemas/Attempt/properties/result/properties/selected_offer/properties/offer"},"exists":{"$ref":"#/components/schemas/Attempt/properties/result/properties/selected_offer/properties/exists"},"bidder":{"$ref":"#/components/schemas/Attempt/properties/result/properties/selected_offer/properties/offer"},"price_micro_usdc":{"$ref":"#/components/schemas/Attempt/properties/amount_micro_usdc"},"expires_at":{"$ref":"#/components/schemas/Attempt/properties/result/properties/selected_offer/properties/expires_at"},"expired":{"$ref":"#/components/schemas/Attempt/properties/result/properties/selected_offer/properties/expired"},"funded":{"$ref":"#/components/schemas/Attempt/properties/result/properties/selected_offer/properties/funded"},"reason":{"type":"string","enum":["underfunded","self_bid","insufficient_validity"]}},"required":["offer","exists","bidder","price_micro_usdc","expires_at","expired","funded","reason"],"additionalProperties":false},{"type":"null"}],"description":"Highest-priced ineligible bid observed in auto-selection, or null. Explicit offers do not scan competing bids."},"buyback":{"type":"object","properties":{"eligible":{"type":["boolean","null"]},"rate_pct":{"type":["number","null"]},"estimated_refund_micro_usdc":{"anyOf":[{"$ref":"#/components/schemas/Attempt/properties/amount_micro_usdc"},{"type":"null"}]},"is_estimate":{"type":"boolean","const":true}},"required":["eligible","rate_pct","estimated_refund_micro_usdc","is_estimate"],"additionalProperties":false},"proposal_id":{"type":"string","format":"uuid"},"trade_id":{"type":"string","format":"uuid"},"offer_id":{"type":"string","format":"uuid"},"escrow_id":{"type":"string","format":"uuid"},"settlement":{"type":"null"},"settlement_error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},"next_step":{"$ref":"#/components/schemas/Attempt/properties/next_step"}},"additionalProperties":true}},"required":["attempt_id","status","amount_micro_usdc","expires_at","next_step","seconds_remaining","transactions","result"],"additionalProperties":false},"DryRun":{"type":"object","properties":{"dry_run":{"type":"boolean","const":true},"effects":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"usdc_out"},"amount_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","amount_micro_usdc","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"usdc_in"},"amount_micro_usdc":{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","amount_micro_usdc","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"nft_out"},"asset":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","asset","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"nft_in"},"asset":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","asset","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"asset":{"type":"string"},"price_micro_usdc":{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"}},"required":["type","asset"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"unlist"},"asset":{"type":"string"}},"required":["type","asset"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"listing_buy"},"asset":{"type":"string"},"price_micro_usdc":{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"},"buyer":{"type":"string"},"seller":{"type":"string"},"program":{"type":"string"}},"required":["type","asset","price_micro_usdc","buyer","seller","program"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"sol_transfer"},"lamports":{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"},"from":{"type":"string"},"to":{"type":"string"}},"required":["type","lamports","from","to"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"other"},"program":{"type":"string"}},"required":["type","program"],"additionalProperties":false}]}},"fee_payer":{"type":["string","null"]},"signers_required":{"type":"array","items":{"type":"string"}},"network_fee_lamports":{"anyOf":[{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"},{"type":"null"}]},"sol":{"type":"array","items":{"type":"object","properties":{"wallet":{"type":"string"},"sol_balance_lamports":{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"},"sol_needed_lamports":{"anyOf":[{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"},{"type":"null"}]},"sufficient":{"type":["boolean","null"]},"as_of":{"type":"string"},"source":{"type":"string"}},"required":["wallet","sol_balance_lamports","sol_needed_lamports","sufficient","as_of","source"],"additionalProperties":false}},"simulation":{"type":"object","properties":{"success":{"type":"boolean"},"error":{},"logs":{"type":"array","items":{"type":"string"}},"units_consumed":{"type":["number","null"]}},"required":["success","logs","units_consumed"],"additionalProperties":false},"cap_impact":{"type":"object","properties":{"amount_micro_usdc":{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"},"reserved_micro_usdc":{"type":"string","const":"0"},"remaining_micro_usdc":{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"},"remaining_after_micro_usdc":{"$ref":"#/components/schemas/DryRun/properties/effects/items/anyOf/0/properties/amount_micro_usdc"},"as_of":{"type":"string"},"source":{"type":"string"}},"required":["amount_micro_usdc","reserved_micro_usdc","remaining_micro_usdc","remaining_after_micro_usdc","as_of","source"],"additionalProperties":false},"guard":{"type":"object","additionalProperties":{}},"warnings":{"type":"array","items":{"type":"string"}},"next_step":{"type":"string"}},"required":["dry_run","effects","fee_payer","signers_required","network_fee_lamports","sol","simulation","cap_impact","guard","warnings","next_step"],"additionalProperties":false},"MarketBuyConflict":{"type":"object","properties":{"error":{"type":"object","properties":{"recovery":{"type":"object","properties":{"action":{"type":"string","enum":["sign_and_submit","handoff_to_signer","retry_same_key","new_idempotency_key","refresh_blockhash","rebuild","wait","none"],"description":"handoff_to_signer: give the bytes to the original wallet and originating API key to check/refresh, sign and submit. tx_mismatch checks expiry first. For unexpired attempts, recorded signed bytes use retry_same_key; without recorded bytes, sign_and_submit fetches current sign-ready bytes. refresh_blockhash requires an invalid hash, unbounded hash age, or at most 32 blocks of verified/estimated margin. Within 20s of refresh, low margin or unknown age waits unless the hash is invalid; the guard is capped at the deadline; retry_after_s >= 1 even when seconds_left rounds down to zero before expiry."},"idempotency_key_reusable":{"type":"boolean"},"retry_after_s":{"type":["number","null"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"seconds_left":{"type":["number","null"]},"refresh_url":{"type":"string"},"refresh_tool":{"type":"string"}},"required":["action","idempotency_key_reusable","retry_after_s","expires_at","seconds_left"],"additionalProperties":false},"code":{"type":"string","enum":["listing_price_changed","listing_gone","price_above_max","listing_changed"]},"message":{"type":"string"},"retryable":{"type":"boolean"},"next_step_text":{"type":"string"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]},"current":{"type":"object","properties":{"offer":{"anyOf":[{"type":"string","minLength":32,"maxLength":44},{"type":"null"}]},"exists":{"type":"boolean"},"available":{"type":"boolean"},"bidder":{"$ref":"#/components/schemas/MarketBuyConflict/properties/error/properties/current/properties/offer/anyOf/0"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expired":{"type":"boolean"},"funded":{"type":"boolean"},"price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"price_usd":{"type":"string"},"insured_value_usd":{"type":["string","null"]},"as_of_basis":{"type":"string","enum":["observed","fetched"]},"source_updated_at":{"type":"string","format":"date-time"},"price_as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"price_as_of_basis":{"type":"string","enum":["observed","fetched"]},"price_source":{"type":"string"},"as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"source":{"type":"string"},"listing_status":{"type":"string"},"sol_balance_lamports":{"$ref":"#/components/schemas/MarketBuyConflict/properties/error/properties/current/properties/price_micro_usdc"},"sol_needed_lamports":{"$ref":"#/components/schemas/MarketBuyConflict/properties/error/properties/current/properties/price_micro_usdc"},"cap_remaining_usd":{"type":"string"}},"additionalProperties":false},"current_price_usdc":{"type":"string","pattern":"^\\d+\\.\\d{2}$"},"current_price_micro_usdc":{"$ref":"#/components/schemas/MarketBuyConflict/properties/error/properties/current/properties/price_micro_usdc"},"expected_price_usdc":{"type":"string","pattern":"^\\d+\\.\\d{2}$"},"expected_price_micro_usdc":{"$ref":"#/components/schemas/MarketBuyConflict/properties/error/properties/current/properties/price_micro_usdc"},"max_price_usdc":{"type":"string","pattern":"^\\d+\\.\\d{2}$"},"max_price_micro_usdc":{"$ref":"#/components/schemas/MarketBuyConflict/properties/error/properties/current/properties/price_micro_usdc"},"current_owner":{"$ref":"#/components/schemas/MarketBuyConflict/properties/error/properties/current/properties/offer/anyOf/0"}},"required":["code","message","retryable","next_step_text"],"additionalProperties":true}},"required":["error"],"additionalProperties":false},"InsufficientSol":{"type":"object","properties":{"error":{"type":"object","properties":{"party":{"type":"string","enum":["maker","taker"]},"wallet":{"type":"string","minLength":32,"maxLength":44},"required_lamports":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"balance_lamports":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/required_lamports"},"shortfall_lamports":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/required_lamports"},"recovery":{"type":"object","properties":{"action":{"type":"string","enum":["sign_and_submit","handoff_to_signer","retry_same_key","new_idempotency_key","refresh_blockhash","rebuild","wait","none"],"description":"handoff_to_signer: give the bytes to the original wallet and originating API key to check/refresh, sign and submit. tx_mismatch checks expiry first. For unexpired attempts, recorded signed bytes use retry_same_key; without recorded bytes, sign_and_submit fetches current sign-ready bytes. refresh_blockhash requires an invalid hash, unbounded hash age, or at most 32 blocks of verified/estimated margin. Within 20s of refresh, low margin or unknown age waits unless the hash is invalid; the guard is capped at the deadline; retry_after_s >= 1 even when seconds_left rounds down to zero before expiry."},"idempotency_key_reusable":{"type":"boolean"},"retry_after_s":{"type":["number","null"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"seconds_left":{"type":["number","null"]},"refresh_url":{"type":"string"},"refresh_tool":{"type":"string"}},"required":["action","idempotency_key_reusable","retry_after_s","expires_at","seconds_left"],"additionalProperties":false},"code":{"type":"string","const":"insufficient_sol"},"message":{"type":"string"},"retryable":{"type":"boolean"},"next_step_text":{"type":"string"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]},"current":{"type":"object","properties":{"offer":{"anyOf":[{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/wallet"},{"type":"null"}]},"exists":{"type":"boolean"},"available":{"type":"boolean"},"bidder":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/wallet"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expired":{"type":"boolean"},"funded":{"type":"boolean"},"price_micro_usdc":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/required_lamports"},"price_usd":{"type":"string"},"insured_value_usd":{"type":["string","null"]},"as_of_basis":{"type":"string","enum":["observed","fetched"]},"source_updated_at":{"type":"string","format":"date-time"},"price_as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"price_as_of_basis":{"type":"string","enum":["observed","fetched"]},"price_source":{"type":"string"},"as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"source":{"type":"string"},"listing_status":{"type":"string"},"sol_balance_lamports":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/required_lamports"},"sol_needed_lamports":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/required_lamports"},"cap_remaining_usd":{"type":"string"}},"additionalProperties":false},"shortfalls":{"type":"array","items":{"type":"object","properties":{"party":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/party"},"wallet":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/wallet"},"required_lamports":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/required_lamports"},"balance_lamports":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/required_lamports"},"shortfall_lamports":{"$ref":"#/components/schemas/InsufficientSol/properties/error/properties/required_lamports"}},"required":["party","wallet","required_lamports","balance_lamports","shortfall_lamports"],"additionalProperties":false},"minItems":1,"maxItems":2}},"required":["party","wallet","required_lamports","balance_lamports","shortfall_lamports","code","message","retryable","next_step_text","shortfalls"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"AttemptStatus":{"anyOf":[{"$ref":"#/components/schemas/Attempt"},{"type":"object","properties":{"recovery":{"type":"object","properties":{"action":{"type":"string","enum":["sign_and_submit","handoff_to_signer","retry_same_key","new_idempotency_key","refresh_blockhash","rebuild","wait","none"],"description":"handoff_to_signer: give the bytes to the original wallet and originating API key to check/refresh, sign and submit. tx_mismatch checks expiry first. For unexpired attempts, recorded signed bytes use retry_same_key; without recorded bytes, sign_and_submit fetches current sign-ready bytes. refresh_blockhash requires an invalid hash, unbounded hash age, or at most 32 blocks of verified/estimated margin. Within 20s of refresh, low margin or unknown age waits unless the hash is invalid; the guard is capped at the deadline; retry_after_s >= 1 even when seconds_left rounds down to zero before expiry."},"idempotency_key_reusable":{"type":"boolean"},"retry_after_s":{"type":["number","null"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"seconds_left":{"type":["number","null"]},"refresh_url":{"type":"string"},"refresh_tool":{"type":"string"}},"required":["action","idempotency_key_reusable","retry_after_s","expires_at","seconds_left"],"additionalProperties":false},"handoff":{"type":"object","properties":{"shareable_with":{"type":"string","const":"same_owner_keys"},"required_scope":{"type":"string","enum":["market","offers","trades","swap","packs","buyback","profile:write","webhooks:manage","orders:manage"]},"signing_wallet":{"type":"string"}},"required":["shareable_with"],"additionalProperties":false},"attempt_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","confirmed","failed"]},"amount_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"expires_at":{"type":"string","format":"date-time"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]},"retry_after_seconds":{"type":"integer","exclusiveMinimum":0,"description":"Delay before polling after an unknown blockhash observation; also in recovery.retry_after_s."}},"required":["attempt_id","status","amount_micro_usdc","expires_at","next_step"],"additionalProperties":false}],"description":"Before a build has data, status returns only attempt_id, status, amount_micro_usdc and expires_at. Expired attempts return 410."},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"recovery":{"type":"object","properties":{"action":{"type":"string","enum":["sign_and_submit","handoff_to_signer","retry_same_key","new_idempotency_key","refresh_blockhash","rebuild","wait","none"],"description":"handoff_to_signer: give the bytes to the original wallet and originating API key to check/refresh, sign and submit. tx_mismatch checks expiry first. For unexpired attempts, recorded signed bytes use retry_same_key; without recorded bytes, sign_and_submit fetches current sign-ready bytes. refresh_blockhash requires an invalid hash, unbounded hash age, or at most 32 blocks of verified/estimated margin. Within 20s of refresh, low margin or unknown age waits unless the hash is invalid; the guard is capped at the deadline; retry_after_s >= 1 even when seconds_left rounds down to zero before expiry."},"idempotency_key_reusable":{"type":"boolean"},"retry_after_s":{"type":["number","null"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"seconds_left":{"type":["number","null"]},"refresh_url":{"type":"string"},"refresh_tool":{"type":"string"}},"required":["action","idempotency_key_reusable","retry_after_s","expires_at","seconds_left"],"additionalProperties":false},"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"next_step_text":{"type":"string"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]},"current":{"type":"object","properties":{"offer":{"anyOf":[{"type":"string","minLength":32,"maxLength":44},{"type":"null"}]},"exists":{"type":"boolean"},"available":{"type":"boolean"},"bidder":{"$ref":"#/components/schemas/Error/properties/error/properties/current/properties/offer/anyOf/0"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expired":{"type":"boolean"},"funded":{"type":"boolean"},"price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"price_usd":{"type":"string"},"insured_value_usd":{"type":["string","null"]},"as_of_basis":{"type":"string","enum":["observed","fetched"]},"source_updated_at":{"type":"string","format":"date-time"},"price_as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"price_as_of_basis":{"type":"string","enum":["observed","fetched"]},"price_source":{"type":"string"},"as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"source":{"type":"string"},"listing_status":{"type":"string"},"sol_balance_lamports":{"$ref":"#/components/schemas/Error/properties/error/properties/current/properties/price_micro_usdc"},"sol_needed_lamports":{"$ref":"#/components/schemas/Error/properties/error/properties/current/properties/price_micro_usdc"},"cap_remaining_usd":{"type":"string"}},"additionalProperties":false}},"required":["code","message","retryable","next_step_text"],"additionalProperties":true}},"required":["error"],"additionalProperties":false,"description":"Uniform MCP/REST error. Stable code, message, retryable, concrete next_step_text; current contains only known facts. Legacy details are retained inside error; executable recovery hints use next_step."},"Card":{"type":"object","properties":{"mint":{"type":"string","minLength":32,"maxLength":44},"name":{"type":"string"},"set":{"type":"string"},"category":{"type":"string"},"grader":{"type":"string"},"grade":{"type":"string"},"insured_value_usd":{"type":"string"},"insured_value_as_of_basis":{"type":"string","enum":["observed","fetched","source"]},"insured_value_source_updated_at":{"type":"string","format":"date-time"},"insured_value_as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"insured_value_source":{"type":"string","enum":["collector_crypt","cc_listing","onchain_attribute","stored"]},"insured_value_checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"insured_value_stale":{"type":"boolean"},"insured_value_note":{"type":"string"},"market_reference_usd":{"type":["string","null"]},"market_reference_note":{"type":"string"},"price_usdc":{"type":"string"},"price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"listing_price_as_of":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Time of the successful CC listing observation. Null when the live check is unavailable."},"listing_price_source":{"type":"string","enum":["cc_live","cc_index"],"description":"cc_live uses the per-card CC market endpoint (30s success cache, 2.5s deadline). cc_index identifies discovery candidates only; actionable prices require cc_live."},"pct_vs_insured":{"type":"number"},"percent_below_insured":{"type":"number"},"listing_status_reason":{"type":"string"},"listing_status":{"type":"string","enum":["listed","unlisted","unknown"]},"url":{"type":"string"},"images":{"type":"array","items":{"type":"string"}},"cc_offers":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"price_usdc":{"type":"string"},"bidder_wallet":{"$ref":"#/components/schemas/Card/properties/mint"},"created_at":{"type":"string","format":"date-time"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"funded":{"type":"boolean"}},"required":["price_usdc","bidder_wallet","created_at","expires_at","funded"],"additionalProperties":false}},{"type":"null"}],"description":"Highest funded unexpired bid first; public chain fields only. Decimal USDC strings retain up to six places. Empty means no visible bids; null means unavailable."},"cc_offers_stale":{"type":"boolean","description":"Cached last-good book during refresh/failure; never older than five minutes. Funding is a snapshot, not reserved funds."}},"required":["mint","name","listing_status","url","images","cc_offers","cc_offers_stale"],"additionalProperties":false},"CardRead":{"type":"object","required":["card","next_step"],"properties":{"card":{"$ref":"#/components/schemas/Card"},"next_step":{"type":"null"}}},"packs_summary_response":{"type":"object","properties":{"packType":{"type":"string","minLength":1,"maxLength":32},"price_usd":{"type":"number"},"ev":{"type":["number","null"]},"odds":{"type":"object","additionalProperties":{"type":"number"}},"instantBuyback":{"type":["number","null"]},"top_hits":{"type":"array","items":{"type":"object","properties":{"insured_value_checked_at":{"type":["string","null"]},"insured_value_stale":{"type":"boolean"},"nftAddress":{"type":["string","null"]},"name":{"type":"string"},"image":{"type":["string","null"]},"rarity":{"type":["string","null"]},"insured_value_usd":{"type":["number","null"]},"grader":{"type":["string","null"]},"grade":{"type":["string","null"]}},"required":["insured_value_checked_at","insured_value_stale","nftAddress","name","image","rarity","insured_value_usd","grader","grade"],"additionalProperties":false}},"top_hits_complete":{"type":"boolean"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["packType","price_usd","ev","odds","instantBuyback","top_hits","top_hits_complete","next_step"],"additionalProperties":false},"packs_contents_response":{"type":"object","properties":{"packType":{"type":"string","minLength":1,"maxLength":32},"cards":{"type":"array","items":{"type":"object","properties":{"insured_value_checked_at":{"type":["string","null"]},"insured_value_stale":{"type":"boolean"},"nftAddress":{"type":["string","null"]},"name":{"type":"string"},"image":{"type":["string","null"]},"rarity":{"type":["string","null"]},"insured_value_usd":{"type":["number","null"]},"grader":{"type":["string","null"]},"grade":{"type":["string","null"]}},"required":["insured_value_checked_at","insured_value_stale","nftAddress","name","image","rarity","insured_value_usd","grader","grade"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["packType","cards","next_cursor","next_step"],"additionalProperties":false},"packs_buyback-quote_response":{"type":"object","properties":{"eligible":{"type":["boolean","null"]},"rate_pct":{"type":["number","null"]},"estimated_refund_micro_usdc":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},{"type":"null"}]},"is_estimate":{"type":"boolean","const":true},"nftAddress":{"type":"string","minLength":32,"maxLength":44},"insured_value_usd":{"type":["string","null"]},"ownership_verified":{"type":"boolean"},"note":{"type":"string"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["eligible","rate_pct","estimated_refund_micro_usdc","is_estimate","nftAddress","insured_value_usd","ownership_verified","note","next_step"],"additionalProperties":false},"market_accept-bid":{"type":"object","properties":{"mint":{"type":"string","minLength":32,"maxLength":44},"offer":{"$ref":"#/components/schemas/market_accept-bid/properties/mint"},"min_price_usd":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d{0,9})(\\.\\d{1,6})?$"},{"type":"number","minimum":0,"maximum":1000000000,"multipleOf":0.000001}]},"dry_run":{"type":"boolean"}},"required":["mint"],"additionalProperties":false},"gifts_send":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"asset_ids":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":5},"recipient":{"type":"string","minLength":1,"maxLength":64},"message":{"type":"string","maxLength":140},"private":{"type":"boolean"},"max_price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"}},"required":["asset_ids","recipient"],"additionalProperties":false},"profile_update":{"type":"object","properties":{"username":{"type":"string"},"avatarUrl":{"anyOf":[{"type":"string","format":"uri","maxLength":1024},{"type":"null"}]}},"additionalProperties":false},"market_buy":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"mint":{"type":"string","minLength":32,"maxLength":44},"max_price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"max_staleness_seconds":{"type":"integer","minimum":1,"maximum":86400,"description":"Maximum age of our live insured-value fetch; defaults to 120 seconds. CC metadata update time is informational only."},"max_pct_over_insured":{"type":"number","minimum":0,"maximum":100000,"multipleOf":0.000001,"description":"Maximum percentage above insured value; omitted means no percentage cap."}},"required":["mint"],"additionalProperties":false},"market_list":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"mint":{"type":"string","minLength":32,"maxLength":44},"price":{"type":"string","pattern":"^(0|[1-9]\\d{0,6})(\\.\\d{1,2})?$"}},"required":["mint","price"],"additionalProperties":false},"market_unlist":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"mint":{"type":"string","minLength":32,"maxLength":44}},"required":["mint"],"additionalProperties":false},"offers_create":{"type":"object","properties":{"offeredAssetIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":20,"default":[]},"requestedAssetIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":20,"default":[]},"usdcOffered":{"type":"number","minimum":0,"maximum":1000000,"default":0},"usdcRequested":{"$ref":"#/components/schemas/offers_create/properties/usdcOffered","default":0},"message":{"type":"string","maxLength":2000},"expiresAt":{"type":"string","format":"date-time"},"trade_id":{"type":"string","format":"uuid"},"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."}},"required":["trade_id"],"additionalProperties":false},"offers_accept":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"offer_id":{"type":"string","format":"uuid"},"max_price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"}},"required":["offer_id"],"additionalProperties":false},"offers_cancel":{"type":"object","properties":{"offer_id":{"type":"string","format":"uuid"}},"required":["offer_id"],"additionalProperties":false},"proposals_create":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"recipientWallet":{"type":"string","minLength":32,"maxLength":44},"offeredAssetIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":20,"default":[]},"requestedAssetIds":{"$ref":"#/components/schemas/proposals_create/properties/offeredAssetIds","default":[]},"proposerUsdc":{"type":"number","minimum":0,"maximum":1000000,"multipleOf":0.000001,"default":0},"recipientUsdc":{"type":"number","minimum":0,"maximum":1000000,"multipleOf":0.000001,"default":0},"message":{"type":"string","maxLength":280}},"required":["recipientWallet"],"additionalProperties":false},"proposals_accept":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"proposal_id":{"type":"string","format":"uuid"},"max_price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"max_staleness_seconds":{"type":"integer","minimum":1,"maximum":86400,"description":"Maximum age of our live insured-value fetch; defaults to 120 seconds. CC metadata update time is informational only."},"max_pct_over_insured":{"type":"number","minimum":0,"maximum":100000,"multipleOf":0.000001,"description":"Maximum percentage above insured value; omitted means no percentage cap."}},"required":["proposal_id"],"additionalProperties":false},"proposals_decline":{"type":"object","properties":{"proposal_id":{"type":"string","format":"uuid"}},"required":["proposal_id"],"additionalProperties":false},"proposals_cancel":{"type":"object","properties":{"proposal_id":{"type":"string","format":"uuid"}},"required":["proposal_id"],"additionalProperties":false},"swap_quote":{"type":"object","properties":{"userCardIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":20,"default":[]},"vaultCardIds":{"type":"array","items":{"$ref":"#/components/schemas/swap_quote/properties/userCardIds/items"},"minItems":1,"maxItems":20}},"required":["vaultCardIds"],"additionalProperties":false},"swap_execute":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"userCardIds":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":20,"default":[]},"vaultCardIds":{"type":"array","items":{"$ref":"#/components/schemas/swap_execute/properties/userCardIds/items"},"minItems":1,"maxItems":20},"expectedQuote":{"type":"string","pattern":"^[a-f0-9]{64}$"},"waiveCashBack":{"type":"boolean","default":false},"max_price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"max_staleness_seconds":{"type":"integer","minimum":1,"maximum":86400,"description":"Maximum age of our live insured-value fetch; defaults to 120 seconds. CC metadata update time is informational only."},"max_pct_over_insured":{"type":"number","minimum":0,"maximum":100000,"multipleOf":0.000001,"description":"Maximum percentage above insured value; omitted means no percentage cap."}},"required":["vaultCardIds","expectedQuote"],"additionalProperties":false},"packs_buy":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"packType":{"type":"string","minLength":1,"maxLength":32},"count":{"type":"integer","minimum":1,"maximum":10,"default":1},"turbo":{"type":"boolean","default":false},"max_price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"}},"required":["packType"],"additionalProperties":false},"packs_open":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"memo":{"type":"string","minLength":1,"maxLength":200}},"required":["memo"],"additionalProperties":false},"packs_buyback":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"nftAddress":{"type":"string","minLength":32,"maxLength":44}},"required":["nftAddress"],"additionalProperties":false},"trades_settlement":{"type":"object","properties":{"dry_run":{"type":"boolean","description":"Build and simulate without reservations, database writes or idempotency consumption."},"offer_id":{"type":"string","format":"uuid"},"max_price_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"}},"required":["offer_id"],"additionalProperties":false},"EventList":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["trade_proposal.received","trade_proposal.sent","trade_proposal.accepted","trade_proposal.declined","trade_proposal.cancelled","trade_proposal.expired","trade_proposal.settled","trade_proposal.failed","agent.limit_request.approved","agent.limit_request.denied","agent.limit_request.expired","offer.cc_bid_received","listing.sold","gift.received","attempt.confirmed","attempt.failed","auto_accept.rejected","key.scope_missing","market.listing.created","market.listing.price_changed","market.listing.removed","price.alert","order.matched"]},"created_at":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"required":["id","type","created_at","data"],"additionalProperties":false}},"next_cursor":{"type":"string"}},"required":["events","next_cursor"],"additionalProperties":false},"WebhookCreate":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048},"auth_header":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^[\\x20-\\x7E]+$","description":"Write-only full Authorization header value, e.g. Bearer abc. 1–1024 printable ASCII characters; no CR/LF. Always still verify the HMAC signature.","writeOnly":true},"events":{"type":"array","items":{"type":"string","enum":["trade_proposal.received","trade_proposal.sent","trade_proposal.accepted","trade_proposal.declined","trade_proposal.cancelled","trade_proposal.expired","trade_proposal.settled","trade_proposal.failed","agent.limit_request.approved","agent.limit_request.denied","agent.limit_request.expired","offer.cc_bid_received","listing.sold","gift.received","attempt.confirmed","attempt.failed","auto_accept.rejected","key.scope_missing","market.listing.created","market.listing.price_changed","market.listing.removed","price.alert","all"]},"minItems":1,"maxItems":23,"description":"all covers wallet/trade events only. Explicitly select market.listing.created, market.listing.price_changed or price.alert with filters for market listings. Removals require explicit market.listing.removed selection, even with filters or price.alert. order.matched is reserved.","default":["all"]},"filters":{"type":"object","properties":{"max_price_usdc":{"type":"number","exclusiveMinimum":0,"maximum":1000000000},"max_price_to_insured_pct":{"type":"number","exclusiveMinimum":0,"maximum":100000},"name_contains":{"type":"string","minLength":1,"maxLength":100},"franchise":{"type":"string","minLength":1,"maxLength":100},"min_grade":{"type":"number","minimum":0,"maximum":10},"grader":{"type":"string","minLength":1,"maxLength":32}},"additionalProperties":false}},"required":["url"],"additionalProperties":false},"WebhookUpdate":{"type":"object","properties":{"auth_header":{"anyOf":[{"type":"string","minLength":1,"maxLength":1024,"pattern":"^[\\x20-\\x7E]+$","description":"Write-only full Authorization header value, e.g. Bearer abc. 1–1024 printable ASCII characters; no CR/LF. Always still verify the HMAC signature."},{"type":"null"}],"description":"Write-only full Authorization header value, e.g. Bearer abc. 1–1024 printable ASCII characters; no CR/LF. Always still verify the HMAC signature.","writeOnly":true}},"additionalProperties":false},"Webhook":{"type":"object","properties":{"webhook":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string"},"events":{"type":"array","items":{"anyOf":[{"type":"string","enum":["trade_proposal.received","trade_proposal.sent","trade_proposal.accepted","trade_proposal.declined","trade_proposal.cancelled","trade_proposal.expired","trade_proposal.settled","trade_proposal.failed","agent.limit_request.approved","agent.limit_request.denied","agent.limit_request.expired","offer.cc_bid_received","listing.sold","gift.received","attempt.confirmed","attempt.failed","auto_accept.rejected","key.scope_missing","market.listing.created","market.listing.price_changed","market.listing.removed","price.alert","order.matched"]},{"type":"string","const":"all"}]}},"status":{"type":"string","enum":["active","disabled"]},"filters":{"anyOf":[{"type":"object","properties":{"max_price_usdc":{"type":"number","exclusiveMinimum":0,"maximum":1000000000},"max_price_to_insured_pct":{"type":"number","exclusiveMinimum":0,"maximum":100000},"name_contains":{"type":"string","minLength":1,"maxLength":100},"franchise":{"type":"string","minLength":1,"maxLength":100},"min_grade":{"type":"number","minimum":0,"maximum":10},"grader":{"type":"string","minLength":1,"maxLength":32}},"additionalProperties":false},{"type":"null"}]},"auth_header_set":{"type":"boolean"},"consecutive_failures":{"type":"integer"},"disabled_reason":{"type":["string","null"]},"last_success_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","url","events","status","auth_header_set","consecutive_failures","disabled_reason","last_success_at","created_at","updated_at"],"additionalProperties":false},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["webhook","next_step"],"additionalProperties":false},"WebhookSecret":{"type":"object","properties":{"webhook":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string"},"events":{"type":"array","items":{"anyOf":[{"type":"string","enum":["trade_proposal.received","trade_proposal.sent","trade_proposal.accepted","trade_proposal.declined","trade_proposal.cancelled","trade_proposal.expired","trade_proposal.settled","trade_proposal.failed","agent.limit_request.approved","agent.limit_request.denied","agent.limit_request.expired","offer.cc_bid_received","listing.sold","gift.received","attempt.confirmed","attempt.failed","auto_accept.rejected","key.scope_missing","market.listing.created","market.listing.price_changed","market.listing.removed","price.alert","order.matched"]},{"type":"string","const":"all"}]}},"status":{"type":"string","enum":["active","disabled"]},"filters":{"anyOf":[{"type":"object","properties":{"max_price_usdc":{"type":"number","exclusiveMinimum":0,"maximum":1000000000},"max_price_to_insured_pct":{"type":"number","exclusiveMinimum":0,"maximum":100000},"name_contains":{"type":"string","minLength":1,"maxLength":100},"franchise":{"type":"string","minLength":1,"maxLength":100},"min_grade":{"type":"number","minimum":0,"maximum":10},"grader":{"type":"string","minLength":1,"maxLength":32}},"additionalProperties":false},{"type":"null"}]},"auth_header_set":{"type":"boolean"},"consecutive_failures":{"type":"integer"},"disabled_reason":{"type":["string","null"]},"last_success_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","url","events","status","auth_header_set","consecutive_failures","disabled_reason","last_success_at","created_at","updated_at"],"additionalProperties":false},"secret":{"type":"string","description":"Shown only on create/rotate; whsec_ followed by base64 HMAC key."},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["webhook","secret","next_step"],"additionalProperties":false},"WebhookList":{"type":"object","properties":{"webhooks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string"},"events":{"type":"array","items":{"anyOf":[{"type":"string","enum":["trade_proposal.received","trade_proposal.sent","trade_proposal.accepted","trade_proposal.declined","trade_proposal.cancelled","trade_proposal.expired","trade_proposal.settled","trade_proposal.failed","agent.limit_request.approved","agent.limit_request.denied","agent.limit_request.expired","offer.cc_bid_received","listing.sold","gift.received","attempt.confirmed","attempt.failed","auto_accept.rejected","key.scope_missing","market.listing.created","market.listing.price_changed","market.listing.removed","price.alert","order.matched"]},{"type":"string","const":"all"}]}},"status":{"type":"string","enum":["active","disabled"]},"filters":{"anyOf":[{"type":"object","properties":{"max_price_usdc":{"type":"number","exclusiveMinimum":0,"maximum":1000000000},"max_price_to_insured_pct":{"type":"number","exclusiveMinimum":0,"maximum":100000},"name_contains":{"type":"string","minLength":1,"maxLength":100},"franchise":{"type":"string","minLength":1,"maxLength":100},"min_grade":{"type":"number","minimum":0,"maximum":10},"grader":{"type":"string","minLength":1,"maxLength":32}},"additionalProperties":false},{"type":"null"}]},"auth_header_set":{"type":"boolean"},"consecutive_failures":{"type":"integer"},"disabled_reason":{"type":["string","null"]},"last_success_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","url","events","status","auth_header_set","consecutive_failures","disabled_reason","last_success_at","created_at","updated_at"],"additionalProperties":false}},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["webhooks","next_step"],"additionalProperties":false},"WebhookDeleted":{"type":"object","properties":{"deleted":{"type":"boolean","const":true},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["deleted","next_step"],"additionalProperties":false},"WebhookTest":{"type":"object","properties":{"status_code":{"type":["number","null"]},"latency_ms":{"type":"number"},"error":{"type":["string","null"]},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["status_code","latency_ms","error","next_step"],"additionalProperties":false},"StandingOrder":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"key_id":{"type":"string","format":"uuid"},"client_order_id":{"type":"string","format":"uuid"},"catalog_card_id":{"type":"string","format":"uuid"},"asset_id":{"type":"string","format":"uuid"},"grade":{"type":["string","null"]},"min_grade":{"type":["string","null"]},"max_value_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"max_usdc_add_micro_usdc":{"$ref":"#/components/schemas/StandingOrder/properties/max_value_micro_usdc"},"min_value_micro_usdc":{"anyOf":[{"$ref":"#/components/schemas/StandingOrder/properties/max_value_micro_usdc"},{"type":"null"}]},"value_tolerance_pct":{"type":"number"},"pause_reason":{"anyOf":[{"type":"string","enum":["asset_gone","ownership_changed"]},{"type":"null"}]},"status":{"type":"string","enum":["active","paused"]},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","user_id","key_id","client_order_id","status","expires_at","created_at","updated_at"],"additionalProperties":false},"StandingOrderResult":{"type":"object","required":["order"],"properties":{"order":{"$ref":"#/components/schemas/StandingOrder"}}},"StandingOrderList":{"type":"object","required":["orders","next_after"],"properties":{"orders":{"type":"array","items":{"$ref":"#/components/schemas/StandingOrder"}},"next_after":{"type":["string","null"],"format":"uuid"}}},"OrderMatches":{"type":"object","properties":{"matches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"want_id":{"type":"string","format":"uuid"},"have_id":{"type":"string","format":"uuid"},"proposal_id":{"type":"string","format":"uuid"},"status":{"type":"string"},"origin":{"type":"string","const":"standing_order"},"created_at":{"type":"string","format":"date-time"}},"required":["id","want_id","have_id","proposal_id","status","origin","created_at"],"additionalProperties":false}},"next_after":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["matches","next_after"],"additionalProperties":false},"OrderDeleted":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":false},"create_standing_want":{"type":"object","properties":{"client_order_id":{"type":"string","format":"uuid"},"catalog_card_id":{"type":"string","format":"uuid"},"grade":{"anyOf":[{"type":"number","minimum":0,"maximum":10,"multipleOf":0.01},{"type":"null"}]},"min_grade":{"$ref":"#/components/schemas/create_standing_want/properties/grade"},"max_value_micro_usdc":{"type":"string","pattern":"^(0|[1-9][0-9]{0,12})$"},"max_usdc_add_micro_usdc":{"$ref":"#/components/schemas/create_standing_want/properties/max_value_micro_usdc","default":"0"},"value_tolerance_pct":{"type":"integer","minimum":0,"maximum":100,"default":10},"status":{"type":"string","enum":["active","paused"],"default":"active"},"expires_at":{"type":"string","format":"date-time"}},"required":["client_order_id","catalog_card_id","max_value_micro_usdc"],"additionalProperties":false},"list_standing_wants":{"type":"object","properties":{"after":{"type":"string","format":"uuid"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25}},"additionalProperties":false},"update_standing_want":{"type":"object","properties":{"catalog_card_id":{"type":"string","format":"uuid"},"grade":{"anyOf":[{"type":"number","minimum":0,"maximum":10,"multipleOf":0.01},{"type":"null"}]},"min_grade":{"$ref":"#/components/schemas/update_standing_want/properties/grade"},"max_value_micro_usdc":{"type":"string","pattern":"^(0|[1-9][0-9]{0,12})$"},"max_usdc_add_micro_usdc":{"$ref":"#/components/schemas/update_standing_want/properties/max_value_micro_usdc","default":"0"},"value_tolerance_pct":{"type":"integer","minimum":0,"maximum":100,"default":10},"status":{"type":"string","enum":["active","paused"],"default":"active"},"expires_at":{"type":"string","format":"date-time"}},"additionalProperties":false},"delete_standing_want":{"type":"object","properties":{"order_id":{"type":"string","format":"uuid"}},"required":["order_id"],"additionalProperties":false},"create_standing_have":{"type":"object","properties":{"client_order_id":{"type":"string","format":"uuid"},"asset_id":{"type":"string","format":"uuid"},"min_value_micro_usdc":{"anyOf":[{"type":"string","pattern":"^(0|[1-9][0-9]{0,12})$"},{"type":"null"}]},"status":{"type":"string","enum":["active","paused"],"default":"active"},"expires_at":{"type":"string","format":"date-time"}},"required":["client_order_id","asset_id"],"additionalProperties":false},"list_standing_haves":{"type":"object","properties":{"after":{"type":"string","format":"uuid"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25}},"additionalProperties":false},"delete_standing_have":{"type":"object","properties":{"order_id":{"type":"string","format":"uuid"}},"required":["order_id"],"additionalProperties":false},"list_order_matches":{"type":"object","properties":{"after":{"type":"string","format":"uuid"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":25}},"additionalProperties":false},"AutoAcceptInput":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"counterparties":{"type":"string","enum":["any","bots_only","allowlist"],"default":"any"},"allowed_wallets":{"type":"array","items":{"type":"string","minLength":32,"maxLength":44},"maxItems":100,"default":[]},"max_value_given_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$","default":"0"},"max_usdc_paid_micro_usdc":{"$ref":"#/components/schemas/AutoAcceptInput/properties/max_value_given_micro_usdc","default":"0"},"min_value_ratio_bps":{"type":"integer","minimum":0,"maximum":100000,"default":9500},"require_complete_values":{"type":"boolean","default":true},"only_standing_wants":{"type":"boolean","default":false},"standing_want_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"default":null},"daily_count_cap":{"type":"integer","minimum":0,"maximum":1000,"default":0},"daily_value_cap_micro_usdc":{"$ref":"#/components/schemas/AutoAcceptInput/properties/max_value_given_micro_usdc","default":"0"}},"additionalProperties":false},"AutoAcceptRules":{"type":"object","properties":{"rules":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"counterparties":{"type":"string","enum":["any","bots_only","allowlist"],"default":"any"},"allowed_wallets":{"type":"array","items":{"type":"string","minLength":32,"maxLength":44},"maxItems":100,"default":[]},"max_value_given_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$","default":"0"},"max_usdc_paid_micro_usdc":{"$ref":"#/components/schemas/AutoAcceptRules/properties/rules/properties/max_value_given_micro_usdc","default":"0"},"min_value_ratio_bps":{"type":"integer","minimum":0,"maximum":100000,"default":9500},"require_complete_values":{"type":"boolean","default":true},"only_standing_wants":{"type":"boolean","default":false},"standing_want_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"default":null},"daily_count_cap":{"type":"integer","minimum":0,"maximum":1000,"default":0},"daily_value_cap_micro_usdc":{"$ref":"#/components/schemas/AutoAcceptRules/properties/rules/properties/max_value_given_micro_usdc","default":"0"},"key_id":{"type":"string","format":"uuid"},"updated_at":{"type":["string","null"]}},"required":["key_id","updated_at"],"additionalProperties":false},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["rules","next_step"],"additionalProperties":false},"LimitIncreaseInput":{"type":"object","properties":{"per_tx_usd":{"anyOf":[{"type":"string"},{"type":"number"}]},"daily_usd":{"$ref":"#/components/schemas/LimitIncreaseInput/properties/per_tx_usd"},"reason":{"type":"string","minLength":1,"maxLength":280}},"required":["reason"],"additionalProperties":false},"LowerLimitsInput":{"type":"object","properties":{"per_tx_usd":{"anyOf":[{"type":"string"},{"type":"number"}]},"daily_usd":{"$ref":"#/components/schemas/LowerLimitsInput/properties/per_tx_usd"}},"additionalProperties":false},"LinkOwnerInput":{"type":"object","properties":{"username":{"type":"string","minLength":1,"maxLength":32}},"required":["username"],"additionalProperties":false},"LimitRequested":{"type":"object","properties":{"request":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"key_id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"per_tx_micro_usdc":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},{"type":"null"}]},"daily_micro_usdc":{"anyOf":[{"$ref":"#/components/schemas/LimitRequested/properties/request/properties/per_tx_micro_usdc/anyOf/0"},{"type":"null"}]},"reason":{"type":"string"},"status":{"type":"string","enum":["pending","approved","denied","expired","superseded"]},"approved_via":{"anyOf":[{"type":"string","enum":["owner","self_approve"]},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"}},"required":["id","key_id","user_id","per_tx_micro_usdc","daily_micro_usdc","reason","status","approved_via","created_at","updated_at","expires_at"],"additionalProperties":false},"approved_immediately":{"type":"boolean"},"approve_url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"owner_link_required":{"type":"boolean"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["request","approved_immediately","approve_url","owner_link_required","next_step"],"additionalProperties":false},"LimitRequests":{"type":"object","properties":{"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"key_id":{"type":"string","format":"uuid"},"user_id":{"type":"string","format":"uuid"},"per_tx_micro_usdc":{"anyOf":[{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},{"type":"null"}]},"daily_micro_usdc":{"anyOf":[{"$ref":"#/components/schemas/LimitRequests/properties/requests/items/properties/per_tx_micro_usdc/anyOf/0"},{"type":"null"}]},"reason":{"type":"string"},"status":{"type":"string","enum":["pending","approved","denied","expired","superseded"]},"approved_via":{"anyOf":[{"type":"string","enum":["owner","self_approve"]},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"}},"required":["id","key_id","user_id","per_tx_micro_usdc","daily_micro_usdc","reason","status","approved_via","created_at","updated_at","expires_at"],"additionalProperties":false},"maxItems":100},"owner_link_required":{"type":"boolean"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["requests","owner_link_required","next_step"],"additionalProperties":false},"LimitsLowered":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"wallet_address":{"type":"string","minLength":32,"maxLength":44},"label":{"type":"string"},"per_tx_cap_micro_usdc":{"type":"string","pattern":"^(0|[1-9]\\d{0,19})$"},"daily_cap_micro_usdc":{"$ref":"#/components/schemas/LimitsLowered/properties/key/properties/per_tx_cap_micro_usdc"}},"required":["id","wallet_address","label","per_tx_cap_micro_usdc","daily_cap_micro_usdc"],"additionalProperties":false},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["key","next_step"],"additionalProperties":false},"OwnerProposed":{"type":"object","properties":{"owner_link":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"agent_user_id":{"type":"string","format":"uuid"},"owner_username":{"type":"string"},"status":{"type":"string","const":"pending"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"}},"required":["id","agent_user_id","owner_username","status","created_at","updated_at","expires_at"],"additionalProperties":false},"approve_url":{"type":"string","format":"uri"},"next_step":{"anyOf":[{"type":"object","properties":{"tool":{"type":"string"},"rest":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST"]},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false},"args_hint":{"type":"object","additionalProperties":{}},"deadline":{"type":"string","format":"date-time"},"message":{"type":"string"}},"required":["tool","rest","args_hint"],"additionalProperties":false},{"type":"null"}]}},"required":["owner_link","approve_url","next_step"],"additionalProperties":false}}}}