{"openapi":"3.0.3","info":{"title":"Agent Mercantile API","version":"0.1.0","description":"Pay-per-call machine services for web context, webpage change detection, x402 service-change snapshot, allowance exposure, portfolio preflight, factual DeFi venue snapshots, Bazaar visibility snapshots, Bazaar visibility-change comparison, and transaction-gas preflight.","x-guidance":"Agent Mercantile is a pay-per-call REST API. VM01–VM11 are paid POST operations. Discover them with GET /openapi.json, GET /v1/catalog, GET /llms.txt, and GET /.well-known/x402. Use each operation's OpenAPI request schema and request-body examples for input. Do not invent fields. Malformed or unsupported input is rejected with HTTP 400 and is not payable. x-payment-info is discovery metadata only. The live unpaid HTTP 402 challenge is the payment authority. A valid unpaid request returns HTTP 402 and does not run provider work. Payment is x402 v2 exact USDC on Base (eip155:8453). Callers hold their own VM07, VM08, VM09, VM10, and VM11 baselines outside Agent Mercantile. Agent Mercantile does not host a scheduler, alert service, MCP server, or customer history store. VM07 comparison statuses are BASELINE, UNCHANGED, CHANGED, and INCONCLUSIVE. VM11 Bazaar visibility-change decisions are BASELINE_CREATED, CONTINUE, CHANGED, and HOLD. VM11 compares Coinbase Bazaar discovery visibility. It does not replace VM05 and does not probe the direct x402 payment contract compared by VM08. Incomplete, truncated, HOLD, or unusable evidence must not replace a known-good baseline and must not be treated as UNCHANGED. An optional later VM01 call for current webpage text is a separate paid request. There is no automatic paid VM07→VM01 loop. Coinbase no-body diagnostics cannot supply VM07's required URL; do not invent a default URL.","contact":{"email":"contact@agentmercantile.com","url":"https://agentmercantile.com/developers/"}},"servers":[{"url":"https://api.agentmercantile.com"}],"paths":{"/":{"get":{"summary":"Machine-readable API orientation","responses":{"200":{"description":"JSON object with current paid resource and documentation URLs"}}}},"/health":{"get":{"summary":"Agent Mercantile health","responses":{"200":{"description":"Health object","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}}}},"/llms.txt":{"get":{"summary":"Tiny machine-readable index","responses":{"200":{"description":"text/plain non-normative index"}}}},"/v1/catalog":{"get":{"summary":"First-party machine catalog","description":"Free read-only JSON catalog of VM01–VM11 generated from the canonical machine descriptors. Zero provider, ledger, reserve, verify, or settle work. Sibling related[] entries are rediscovery links, not recommendations. Buyer Intelligence is not present.","responses":{"200":{"description":"JSON object listing exactly VM01–VM11 with job, when_to_call, schemas, examples, and current prices"}}}},"/openapi.json":{"get":{"summary":"This OpenAPI document","responses":{"200":{"description":"OpenAPI 3.0.3"}}}},"/v1/url-context":{"post":{"operationId":"postVm01UrlContext","tags":["VM01"],"x-am-family":"WEB_INTELLIGENCE","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"summary":"URL Context Pack: fetch one public HTTPS webpage into deterministic structured JSON context","description":"Fetch deterministic, token-efficient context from one public HTTPS URL: canonical URL, title/description, headings, clean main content, structured-data types, freshness observations, evidence, and limitations. Call when you need a bounded JSON reading of one public page without a browser, login, crawl, or LLM. Call when you need a bounded JSON reading of one public HTTPS page without a browser, login, site crawl, or LLM. Not for private URLs, http, non-443 ports, authenticated pages, or multi-URL crawls. POST JSON {\"url\":\"<https URL>\"}. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.01 USDC on Base (eip155:8453). Malformed or policy-ineligible requests return HTTP 400 without a payable contract. A compatible client authorizes payment and retries; a successful paid request returns the JSON pack plus PAYMENT-RESPONSE. No LLM, browser rendering, or crawl. Methodology url-context-0.1.0. One public HTTPS URL on port 443.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UrlContextRequest"},"example":{"url":"https://example.com/"}}}},"responses":{"200":{"description":"OK, PARTIAL, or HOLD technical result after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UrlContextResponse"}}}},"400":{"description":"Malformed JSON, missing/invalid url, unsupported scheme, credentials in the URL, or another structurally ineligible request. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 10000 atomic Base USDC for a policy-eligible unpaid request"},"503":{"description":"Pilot disabled or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"url":"https://example.com/"},"method":"POST"},"output":{"type":"json","example":{"status":"OK","methodology_version":"url-context-0.1.0","checked_at":"2026-08-19T00:00:00.000Z","requested_url":"https://example.com/","final_url":"https://example.com/","http":{"status":200,"content_type":"text/html; charset=UTF-8","redirect_count":0},"metadata":{"title":"Example Domain","description":null,"canonical":"https://example.com/"},"outline":[{"level":1,"text":"Example Domain"}],"content":{"text":"This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.","extraction_basis":"body-heuristic","characters":155,"approx_tokens":39,"token_estimate_method":"ceil(characters/4)","truncated":false},"structured_data":{"json_ld_types":[]},"freshness":{"observations":[]},"size":{"source_bytes_read":1256,"output_json_bytes":1400,"normalized_content_characters":155},"evidence":{"final_response_headers":{"content-type":"text/html; charset=UTF-8"},"notes":[]},"limitations":[]}},"description":"Fetch deterministic, token-efficient context from one public HTTPS URL: canonical URL, title/description, headings, clean main content, structured-data types, freshness observations, evidence, and limitations. Call when you need a bounded JSON reading of one public page without a browser, login, crawl, or LLM."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["url"],"additionalProperties":false,"properties":{"url":{"type":"string","format":"uri","description":"One absolute public HTTPS URL on port 443. No credentials in the URL. http, non-443 ports, and private/non-public targets are rejected without fetch."}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","methodology_version","requested_url","content","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"methodology_version":{"type":"string","enum":["url-context-0.1.0"]},"checked_at":{"type":"string","description":"ISO-8601 timestamp when extraction ran."},"requested_url":{"type":"string","description":"The buyer-supplied URL after request validation."},"final_url":{"type":"string","description":"Final URL after bounded redirects, or null on HOLD.","nullable":true},"http":{"type":"object","properties":{"status":{"type":"integer","nullable":true},"content_type":{"type":"string","nullable":true},"redirect_count":{"type":"integer"}}},"metadata":{"type":"object","properties":{"title":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"canonical":{"type":"string","nullable":true}}},"outline":{"type":"array","items":{"type":"object","properties":{"level":{"type":"integer"},"text":{"type":"string"}}}},"content":{"type":"object","properties":{"text":{"type":"string"},"extraction_basis":{"type":"string","enum":["main","article","body-heuristic","none"]},"characters":{"type":"integer"},"approx_tokens":{"type":"integer"},"token_estimate_method":{"type":"string"},"truncated":{"type":"boolean"}}},"structured_data":{"type":"object","properties":{"json_ld_types":{"type":"array","items":{"type":"string"}}}},"freshness":{"type":"object","properties":{"observations":{"type":"array"}}},"size":{"type":"object"},"evidence":{"type":"object"},"limitations":{"type":"array","items":{"type":"string"}}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM01"}},"/v1/allowance-exposure":{"post":{"operationId":"postVm02AllowanceExposure","tags":["VM02"],"x-am-family":"ONCHAIN_PREFLIGHT","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"summary":"Allowance Exposure Preflight: one Base ERC-20 owner/token/spender allowance vs balance","description":"Inspect one Base ERC-20 owner/token/spender allowance with same-block balance and token metadata plus factual exposure flags. No wallet access, signing, or transaction execution. Call when you need a same-block Base allowance-versus-balance snapshot for one owner/token/spender triple. Call when you need a same-block Base allowance-versus-balance snapshot for one owner, one ERC-20 token, and one spender. Not a wallet-wide scanner, Permit2 reader, other-chain checker, simulator, or revoke advisor. POST JSON {\"owner\":\"0x...\",\"token\":\"0x...\",\"spender\":\"0x...\"}. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.01 USDC on Base (eip155:8453). Malformed requests return HTTP 400 without a payable contract. No RPC before payment. Methodology allowance-exposure-0.1.0.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllowanceExposureRequest"},"example":{"owner":"0x0000000000000000000000000000000000000001","token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","spender":"0x0000000000000000000000000000000000000002"}}}},"responses":{"200":{"description":"OK or factual HOLD after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllowanceExposureResponse"},"example":{"status":"OK","machine":"VM02","methodology_version":"allowance-exposure-0.1.0","network":"eip155:8453","block_number":"12345678","owner":"0x0000000000000000000000000000000000000001","token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","spender":"0x0000000000000000000000000000000000000002","token_metadata":{"symbol":"USDC","decimals":6},"allowance_raw":"1000000","allowance_adjusted":"1","balance_raw":"500000","balance_adjusted":"0.5","allowance_balance_exposure_raw":"500000","allowance_balance_exposure_adjusted":"0.5","allowance_covers_current_balance":true,"max_uint256_approval":false,"effectively_unlimited":false,"evidence":{"block_number":"12345678","same_block_reads":true,"token_code_present":true},"limitations":["Base Mainnet only (eip155:8453)."]}}}},"400":{"description":"Malformed JSON, missing/invalid owner/token/spender, token zero-address, or unexpected fields. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 10000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"owner":"0x0000000000000000000000000000000000000001","token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","spender":"0x0000000000000000000000000000000000000002"},"method":"POST"},"output":{"type":"json","example":{"status":"OK","machine":"VM02","methodology_version":"allowance-exposure-0.1.0","network":"eip155:8453","block_number":"12345678","owner":"0x0000000000000000000000000000000000000001","token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","spender":"0x0000000000000000000000000000000000000002","token_metadata":{"symbol":"USDC","decimals":6},"allowance_raw":"1000000","allowance_adjusted":"1","balance_raw":"500000","balance_adjusted":"0.5","allowance_balance_exposure_raw":"500000","allowance_balance_exposure_adjusted":"0.5","allowance_covers_current_balance":true,"max_uint256_approval":false,"effectively_unlimited":false,"evidence":{"block_number":"12345678","same_block_reads":true,"token_code_present":true},"limitations":["Base Mainnet only (eip155:8453)."]}},"description":"Inspect one Base ERC-20 owner/token/spender allowance with same-block balance and token metadata plus factual exposure flags. No wallet access, signing, or transaction execution. Call when you need a same-block Base allowance-versus-balance snapshot for one owner/token/spender triple."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["owner","token","spender"],"additionalProperties":false,"properties":{"owner":{"type":"string","description":"ERC-20 token owner address. 0x-prefixed 20-byte EVM address."},"token":{"type":"string","description":"ERC-20 token contract. 0x-prefixed 20-byte EVM address. Zero address is rejected."},"spender":{"type":"string","description":"Spender address. 0x-prefixed 20-byte EVM address."}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","machine","methodology_version","network","block_number","owner","token","spender","token_metadata","allowance_raw","allowance_adjusted","balance_raw","balance_adjusted","allowance_balance_exposure_raw","allowance_balance_exposure_adjusted","allowance_covers_current_balance","max_uint256_approval","effectively_unlimited","evidence","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","HOLD"]},"machine":{"type":"string","enum":["VM02"]},"methodology_version":{"type":"string","enum":["allowance-exposure-0.1.0"]},"network":{"type":"string","enum":["eip155:8453"]},"block_number":{"type":"string","nullable":true},"owner":{"type":"string"},"token":{"type":"string"},"spender":{"type":"string"},"token_metadata":{"type":"object","properties":{"symbol":{"type":"string","nullable":true},"decimals":{"type":"integer","nullable":true}}},"allowance_raw":{"type":"string","description":"uint256 as a decimal integer string","nullable":true},"allowance_adjusted":{"type":"string","nullable":true},"balance_raw":{"type":"string","nullable":true},"balance_adjusted":{"type":"string","nullable":true},"allowance_balance_exposure_raw":{"type":"string","nullable":true},"allowance_balance_exposure_adjusted":{"type":"string","nullable":true},"allowance_covers_current_balance":{"type":"boolean"},"max_uint256_approval":{"type":"boolean"},"effectively_unlimited":{"type":"boolean"},"evidence":{"type":"object","properties":{"block_number":{"type":"string","nullable":true},"same_block_reads":{"type":"boolean"},"token_code_present":{"type":"boolean","nullable":true}}},"limitations":{"type":"array","items":{"type":"string"}}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM02"}},"/v1/portfolio-preflight":{"post":{"operationId":"postVm03PortfolioPreflight","tags":["VM03"],"x-am-family":"ONCHAIN_PREFLIGHT","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"summary":"Portfolio Preflight: bounded Ethereum/Base discovery snapshot of at most 40 holdings, with overflow counts and evidence-readiness","description":"Bounded Ethereum/Base wallet/portfolio holdings evidence: inventory, partial DEX pricing coverage, concentration, and evidence gaps. Pre-action evidence-readiness check for whether that evidence is sufficiently complete for downstream factual reasoning. Not guaranteed net worth, investment advice, transaction approval, or execution. Call when you need to check whether bounded Ethereum/Base wallet/portfolio evidence is sufficiently complete before downstream reasoning. Discovery returns at most 40 holdings. overflow_holding_count>0 means additional holdings were omitted. overflow_count_complete=false means that omitted-count total is not guaranteed complete. status=PARTIAL can be the expected truthful state when the 40-holding cap is reached and does not necessarily mean the request failed. Includes inventory/composition, partial DEX pricing coverage, concentration, and evidence gaps. Not guaranteed net worth, investment advice, transaction approval/safety certification, or execution. POST JSON {\"address\":\"0x...\"}. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.01 USDC (10000 atomic) on Base (eip155:8453). Malformed requests return HTTP 400 without a payable contract. No inventory or DexScreener calls before payment. Methodology portfolio-preflight-0.2.0. Not investment advice.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioPreflightRequest"},"example":{"address":"0x0000000000000000000000000000000000000001","chains":["eip155:1","eip155:8453"]}}}},"responses":{"200":{"description":"Paid JSON. status may be OK, PARTIAL, or HOLD. Discovery returns at most 40 holdings. overflow_holding_count>0 means holdings were omitted. overflow_count_complete=false means that omitted-count total is not guaranteed complete. PARTIAL can be the expected truthful state when the 40-holding cap is reached and does not necessarily mean the request failed. Not complete portfolio enumeration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioPreflightResponse"},"example":{"status":"OK","machine":"VM03","methodology_version":"portfolio-preflight-0.2.0","checked_at":"2026-08-21T00:00:00.000Z","address":"0x0000000000000000000000000000000000000001","requested_chains":["eip155:1","eip155:8453"],"chains_run":["eip155:1","eip155:8453"],"chain_results":[{"chain":"eip155:1","inventory_status":"OK","block_number_observed":"1","inventory_complete":true,"provider_response_complete":true,"discovery_capped":false,"pages_read":1}],"valuation":{"quote_basis":"PARTIAL_DEX_QUOTED_COMPOSITION","priced_usd":null,"priced_holding_count":0,"unpriced_holding_count":2,"as_of":"2026-08-21T00:00:00.000Z"},"concentration":{"concentrated":false,"basis":"PRICED_HOLDINGS_ONLY","threshold":"0.40","largest_priced_share":null,"largest_priced_holding":null},"holdings":[{"chain":"eip155:1","asset_kind":"native","token":null,"symbol":"ETH","decimals":18,"balance_raw":"0","balance_adjusted":"0","price_usd":null,"priced_usd":null,"liquidity_usd":null,"volume_h24_usd":null,"pair_address":null,"pair_url":null,"pair_created_at":null,"observations":["NO_DEX_MARKET"],"confidence":"MEDIUM","evidence_ids":["e-inv-eip155:1"]}],"returned_holding_count":1,"overflow_holding_count":0,"overflow_count_complete":true,"sources":[{"id":"src-inv-eip155:1","role":"inventory","provider":"alchemy","chain":"eip155:1","retrieved_at":"2026-08-21T00:00:00.000Z","block_number":"1","request_scope":"native+erc20_unknown","pagination_complete":true,"provider_response_complete":true,"discovery_capped":false,"limitations":[]}],"evidence":[{"id":"e-inv-eip155:1","kind":"inventory","summary":"Bounded native and ERC-20 discovery."}],"limitations":["This is a bounded DEX-quoted composition, not guaranteed net worth.","Discovery returns at most 40 holdings. This example returns 1 holding, overflow_holding_count=0, and overflow_count_complete=true. overflow_holding_count>0 means additional holdings were omitted. overflow_count_complete=false means that omitted-count total is not guaranteed complete. status=PARTIAL can be the expected truthful state when the 40-holding cap is reached and does not necessarily mean the request failed. Not complete portfolio enumeration."],"confidence":"MEDIUM","readiness":{"purpose":"PRE_ACTION_EVIDENCE_READINESS","status":"PARTIAL","evidence_sufficient_for_reasoning":false,"inventory_complete":true,"pricing_coverage":{"priced_holding_count":0,"unpriced_holding_count":1,"priced_share_of_returned_holdings":"0"},"concentration_flag":false,"factual_flags":["NO_DEX_MARKET"],"evidence_gaps":["INCOMPLETE_PRICING_COVERAGE","UNPRICED_HOLDINGS"]}}}}},"400":{"description":"Malformed JSON, invalid address/chains/declared_holdings, or unexpected fields. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 10000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled, missing inventory credential, or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"address":"0x0000000000000000000000000000000000000001","chains":["eip155:1","eip155:8453"]},"method":"POST"},"output":{"type":"json","example":{"status":"OK","machine":"VM03","methodology_version":"portfolio-preflight-0.2.0","checked_at":"2026-08-21T00:00:00.000Z","address":"0x0000000000000000000000000000000000000001","requested_chains":["eip155:1","eip155:8453"],"chains_run":["eip155:1","eip155:8453"],"chain_results":[{"chain":"eip155:1","inventory_status":"OK","block_number_observed":"1","inventory_complete":true,"provider_response_complete":true,"discovery_capped":false,"pages_read":1}],"valuation":{"quote_basis":"PARTIAL_DEX_QUOTED_COMPOSITION","priced_usd":null,"priced_holding_count":0,"unpriced_holding_count":2,"as_of":"2026-08-21T00:00:00.000Z"},"concentration":{"concentrated":false,"basis":"PRICED_HOLDINGS_ONLY","threshold":"0.40","largest_priced_share":null,"largest_priced_holding":null},"holdings":[{"chain":"eip155:1","asset_kind":"native","token":null,"symbol":"ETH","decimals":18,"balance_raw":"0","balance_adjusted":"0","price_usd":null,"priced_usd":null,"liquidity_usd":null,"volume_h24_usd":null,"pair_address":null,"pair_url":null,"pair_created_at":null,"observations":["NO_DEX_MARKET"],"confidence":"MEDIUM","evidence_ids":["e-inv-eip155:1"]}],"returned_holding_count":1,"overflow_holding_count":0,"overflow_count_complete":true,"sources":[{"id":"src-inv-eip155:1","role":"inventory","provider":"alchemy","chain":"eip155:1","retrieved_at":"2026-08-21T00:00:00.000Z","block_number":"1","request_scope":"native+erc20_unknown","pagination_complete":true,"provider_response_complete":true,"discovery_capped":false,"limitations":[]}],"evidence":[{"id":"e-inv-eip155:1","kind":"inventory","summary":"Bounded native and ERC-20 discovery."}],"limitations":["This is a bounded DEX-quoted composition, not guaranteed net worth.","Discovery returns at most 40 holdings. This example returns 1 holding, overflow_holding_count=0, and overflow_count_complete=true. overflow_holding_count>0 means additional holdings were omitted. overflow_count_complete=false means that omitted-count total is not guaranteed complete. status=PARTIAL can be the expected truthful state when the 40-holding cap is reached and does not necessarily mean the request failed. Not complete portfolio enumeration."],"confidence":"MEDIUM","readiness":{"purpose":"PRE_ACTION_EVIDENCE_READINESS","status":"PARTIAL","evidence_sufficient_for_reasoning":false,"inventory_complete":true,"pricing_coverage":{"priced_holding_count":0,"unpriced_holding_count":1,"priced_share_of_returned_holdings":"0"},"concentration_flag":false,"factual_flags":["NO_DEX_MARKET"],"evidence_gaps":["INCOMPLETE_PRICING_COVERAGE","UNPRICED_HOLDINGS"]}}},"description":"Bounded Ethereum/Base discovery snapshot: at most 40 holdings returned. overflow_holding_count>0 means additional holdings were omitted. overflow_count_complete=false means that omitted-count total is not guaranteed complete. status=PARTIAL can be the expected truthful state when the 40-holding cap is reached and does not necessarily mean the request failed. Not complete portfolio enumeration, net worth, investment advice, or execution."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["address"],"additionalProperties":false,"properties":{"address":{"type":"string","description":"One public 0x-prefixed 20-byte EVM address."},"chains":{"type":"array","minItems":1,"maxItems":2,"uniqueItems":true,"items":{"type":"string","enum":["eip155:1","eip155:8453"]},"description":"Optional. Defaults to Ethereum and Base."},"declared_holdings":{"type":"array","maxItems":10,"items":{"type":"object","required":["chain","token","quantity_raw"],"additionalProperties":false,"properties":{"chain":{"type":"string","enum":["eip155:1","eip155:8453"]},"token":{"type":"string","description":"Nonzero ERC-20 contract."},"quantity_raw":{"type":"string","description":"uint256 decimal integer string. Hint only."}}}}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","machine","methodology_version","checked_at","address","requested_chains","chains_run","chain_results","valuation","concentration","holdings","returned_holding_count","overflow_holding_count","overflow_count_complete","sources","evidence","limitations","confidence","readiness"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"],"description":"OK, PARTIAL, or HOLD. PARTIAL can be the expected truthful state for a large wallet when discovery reaches the 40-holding cap. PARTIAL does not necessarily mean the request failed."},"machine":{"type":"string","enum":["VM03"]},"methodology_version":{"type":"string","enum":["portfolio-preflight-0.2.0"]},"checked_at":{"type":"string"},"address":{"type":"string"},"requested_chains":{"type":"array","items":{"type":"string"}},"chains_run":{"type":"array","items":{"type":"string"}},"chain_results":{"type":"array"},"valuation":{"type":"object"},"concentration":{"type":"object"},"holdings":{"type":"array","description":"Bounded discovery snapshot. At most 40 holdings are returned. Not complete portfolio enumeration."},"returned_holding_count":{"type":"integer","description":"Number of holdings included in holdings. Maximum 40."},"overflow_holding_count":{"type":"integer","description":"Discovered holdings omitted from holdings. Greater than 0 means additional holdings exist beyond the returned snapshot."},"overflow_count_complete":{"type":"boolean","description":"Whether overflow_holding_count is a complete omitted total. false means that omitted-count total is not guaranteed complete. Treat false as an explicit limitation rather than an exhaustive count."},"sources":{"type":"array"},"evidence":{"type":"array"},"limitations":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"readiness":{"type":"object","required":["purpose","status","evidence_sufficient_for_reasoning","inventory_complete","pricing_coverage","concentration_flag","factual_flags","evidence_gaps"],"properties":{"purpose":{"type":"string","enum":["PRE_ACTION_EVIDENCE_READINESS"]},"status":{"type":"string","enum":["READY","PARTIAL","HOLD"]},"evidence_sufficient_for_reasoning":{"type":"boolean"},"inventory_complete":{"type":"boolean"},"pricing_coverage":{"type":"object"},"concentration_flag":{"type":"boolean"},"factual_flags":{"type":"array","items":{"type":"string"}},"evidence_gaps":{"type":"array","items":{"type":"string"}}}}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM03"}},"/v1/productive-venue-snapshot":{"post":{"operationId":"postVm04ProductiveVenueSnapshot","tags":["VM04"],"x-am-family":"ONCHAIN_PREFLIGHT","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"summary":"Productive Venue Snapshot: factual Aave V3 and Lido rates for one chain and asset","description":"Observe factual Aave V3 lending supply APR and Lido staking APR for one Ethereum/Base asset, with timestamps, evidence, explicit rate labels, optional filters/sort, and limitations. No ranking or investment recommendation. Call when you need currently observed supported-venue rates for one asset, not a ranking. Call when you need currently observed Aave V3 supply APR and/or Lido staking APR for one supported Ethereum or Base asset. Factual snapshot only — not a ranking, recommendation, or complete map of DeFi. POST JSON {\"chain_id\":1,\"asset\":{\"kind\":\"native\"}} or {\"chain_id\":1,\"asset\":{\"kind\":\"symbol\",\"symbol\":\"ETH\"}}. Optional venue_types, protocols, sort, and limit. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.01 USDC (10000 atomic) on Base (eip155:8453). Malformed requests return HTTP 400 without a payable contract. No Aave, Lido, or RPC work before payment. Methodology productive-venue-0.2.0. Live pay-per-call machine.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductiveVenueRequest"},"example":{"chain_id":1,"asset":{"kind":"native"}}}}},"responses":{"200":{"description":"OK, PARTIAL, EMPTY supported set, or post-settlement HOLD after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductiveVenueResponse"},"example":{"status":"OK","classification":"OBSERVED_COMPLETE","machine":"VM04","methodology_version":"productive-venue-0.2.0","protocol_set_version":"aave-v3-lido-eth-base-2026-08-22-v1","chain_id":1,"asset":{"kind":"native"},"request":{"chain_id":1,"asset":{"kind":"native"},"venue_types":null,"protocols":null,"sort":"protocol","limit":20},"resolved":{"chain_id":1,"asset":{"kind":"native"},"symbol":"ETH"},"sort":{"order":"protocol","field":"protocol","label":"objective_sort_not_a_recommendation"},"result_count":0,"truncated":false,"omissions":[],"retrieved_at":"2026-08-22T00:00:00.000Z","block_number":"1","cached":false,"observation_age_ms":0,"venues":[],"limitations":["This is a factual snapshot of supported protocol state. It is not investment advice, not a recommendation, and not a complete map of DeFi."],"errors":[],"evidence":[]}}}},"400":{"description":"Malformed JSON, unsupported chain, invalid asset, or unexpected fields. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 10000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled, missing RPC credential, or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"chain_id":1,"asset":{"kind":"native"}},"method":"POST"},"output":{"type":"json","example":{"status":"OK","classification":"OBSERVED_COMPLETE","machine":"VM04","methodology_version":"productive-venue-0.2.0","protocol_set_version":"aave-v3-lido-eth-base-2026-08-22-v1","chain_id":1,"asset":{"kind":"native"},"request":{"chain_id":1,"asset":{"kind":"native"},"venue_types":null,"protocols":null,"sort":"protocol","limit":20},"resolved":{"chain_id":1,"asset":{"kind":"native"},"symbol":"ETH"},"sort":{"order":"protocol","field":"protocol","label":"objective_sort_not_a_recommendation"},"result_count":0,"truncated":false,"omissions":[],"retrieved_at":"2026-08-22T00:00:00.000Z","block_number":"1","cached":false,"observation_age_ms":0,"venues":[],"limitations":["This is a factual snapshot of supported protocol state. It is not investment advice, not a recommendation, and not a complete map of DeFi."],"errors":[],"evidence":[]}},"description":"Observe factual Aave V3 lending supply APR and Lido staking APR for one Ethereum/Base asset, with timestamps, evidence, explicit rate labels, optional filters/sort, and limitations. No ranking or investment recommendation. Call when you need currently observed supported-venue rates for one asset, not a ranking."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["chain_id","asset"],"additionalProperties":false,"properties":{"chain_id":{"type":"integer","enum":[1,8453],"description":"Ethereum 1 or Base 8453 only."},"asset":{"type":"object","description":"native, erc20, or allowlisted symbol asset object","additionalProperties":false,"required":["kind"],"properties":{"kind":{"type":"string","enum":["native","erc20","symbol"]},"address":{"type":"string","description":"Required for erc20. Exact nonzero 20-byte EVM address."},"symbol":{"type":"string","description":"Required for kind=symbol. Allowlist ETH, WETH, USDC, stETH, wstETH. Chain-specific."}}},"venue_types":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["lending","liquid_staking"]}},"protocols":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["aave_v3","lido"]}},"sort":{"type":"string","enum":["protocol","rate_desc","rate_asc"],"description":"Objective sort only. rate_* uses primary_apr. Null rates sort last. Not a recommendation."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Default 20. Applied after filters and sort."}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","classification","machine","methodology_version","protocol_set_version","chain_id","asset","request","resolved","sort","result_count","truncated","omissions","retrieved_at","venues","limitations","errors","evidence"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"classification":{"type":"string","enum":["OBSERVED_COMPLETE","OBSERVED_PARTIAL","OBSERVED_EMPTY_SUPPORTED_SET","HOLD_UPSTREAM","HOLD_OUTPUT_REFUSED"]},"machine":{"type":"string","enum":["VM04"]},"methodology_version":{"type":"string","enum":["productive-venue-0.2.0"]},"protocol_set_version":{"type":"string"},"chain_id":{"type":"integer","enum":[1,8453]},"asset":{"type":"object"},"retrieved_at":{"type":"string"},"request":{"type":"object"},"resolved":{"type":"object"},"sort":{"type":"object"},"result_count":{"type":"integer"},"truncated":{"type":"boolean"},"omissions":{"type":"array","items":{"type":"string"}},"block_number":{"type":"string"},"cached":{"type":"boolean"},"observation_age_ms":{"type":"integer"},"venues":{"type":"array"},"limitations":{"type":"array","items":{"type":"string"}},"errors":{"type":"array"},"evidence":{"type":"array"}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM04"}},"/v1/bazaar-visibility":{"post":{"operationId":"postVm05BazaarVisibilitySnapshot","tags":["VM05"],"x-am-family":"AGENT_COMMERCE","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"summary":"Bazaar Visibility Snapshot: factual Coinbase Bazaar merchant presence and top-20 search position","description":"Observe whether one x402 seller resource appears in Coinbase Bazaar merchant discovery and where the exact resource sits in the first 20 results for 1–3 buyer-supplied job-language searches. Factual evidence only. Call when you need a point-in-time Bazaar presence and top-20 search observation, not a trust, SEO, or remediation score. Call when you need a point-in-time factual observation of whether one x402 resource appears in Coinbase Bazaar merchant discovery and where it sits in the first 20 results for 1–3 buyer-supplied job-language searches. Not a trust score, SEO score, rank beyond the observed top 20, or remediation recommendation. POST JSON {\"resource\":\"https://...\",\"pay_to\":\"0x...\",\"queries\":[\"job language\"]}. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.01 USDC (10000 atomic) on Base (eip155:8453). Malformed requests return HTTP 400 without a payable contract. No Coinbase discovery request before payment. The submitted resource is never fetched. Methodology bazaar-visibility-0.1.0.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BazaarVisibilityRequest"},"example":{"resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","queries":["example paid json api"]}}}},"responses":{"200":{"description":"OK, PARTIAL, or factual HOLD after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BazaarVisibilityResponse"},"example":{"status":"OK","machine":"VM05","methodology_version":"bazaar-visibility-0.1.0","checked_at":"2026-08-28T00:00:00.000Z","resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","merchant":{"presence":"FOUND","pagination":{"limit":20,"offset":0,"total":1,"returned":1},"match":{"resource":"https://api.example.com/v1/paid","type":"http","x402_version":2,"description":"Example paid resource","last_updated":"2026-08-28T00:00:00.000Z","accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","pay_to":"0x0000000000000000000000000000000000000001","max_timeout_seconds":60}],"extensions_summary":{"names":["bazaar"],"bazaar_info_present":true,"bazaar_schema_present":true},"quality":{"l30_days_total_calls":3,"l30_days_unique_payers":2,"last_called_at":"2026-08-28T00:00:00.000Z"},"service_name":"Example API","tags":["example"],"icon_url":null,"curated":null,"skill_url":null},"retrieved_at":"2026-08-28T00:00:00.000Z","provider":{"host":"api.cdp.coinbase.com","path":"/platform/v2/x402/discovery/merchant","method":"GET"},"error":null},"searches":[{"query":"example paid json api","visibility":"IN_TOP_20","position":1,"returned_count":1,"search_method":"hybrid","partial_results":false,"retrieved_at":"2026-08-28T00:00:00.000Z","provider":{"host":"api.cdp.coinbase.com","path":"/platform/v2/x402/discovery/search","method":"GET"},"error":null}],"evidence":{"provider":"coinbase-cdp-bazaar-discovery","origin":"https://api.cdp.coinbase.com","path_prefix":"/platform/v2/x402/discovery/","outbound_requests":2,"merchant_requests":1,"search_requests":1,"auth_header_sent":false,"submitted_resource_fetched":false,"url_equality":"https host-lowercase default-port-443 pathname+search exact; fragments and userinfo rejected; query-string order is significant"},"limitations":["This is a point-in-time Coinbase Bazaar observation, not proof of future visibility.","Coinbase search ranking formula is external and may change.","Observed position is only within the returned top 20.","partialResults=true means additional results may exist beyond the returned page.","Merchant pagination is intentionally bounded to one page (limit=20, offset=0).","quality, call, and payer fields are Coinbase-reported observations, not Agent Mercantile verification of buyer independence.","No resource endpoint was fetched or functionally tested.","No recommendation, remediation, trust, quality, or SEO score is produced."]}}}},"400":{"description":"Malformed JSON, invalid resource/pay_to/queries, or unexpected fields. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 10000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","queries":["example paid json api"]},"method":"POST"},"output":{"type":"json","example":{"status":"OK","machine":"VM05","methodology_version":"bazaar-visibility-0.1.0","checked_at":"2026-08-28T00:00:00.000Z","resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","merchant":{"presence":"FOUND","pagination":{"limit":20,"offset":0,"total":1,"returned":1},"match":{"resource":"https://api.example.com/v1/paid","type":"http","x402_version":2,"description":"Example paid resource","last_updated":"2026-08-28T00:00:00.000Z","accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","pay_to":"0x0000000000000000000000000000000000000001","max_timeout_seconds":60}],"extensions_summary":{"names":["bazaar"],"bazaar_info_present":true,"bazaar_schema_present":true},"quality":{"l30_days_total_calls":3,"l30_days_unique_payers":2,"last_called_at":"2026-08-28T00:00:00.000Z"},"service_name":"Example API","tags":["example"],"icon_url":null,"curated":null,"skill_url":null},"retrieved_at":"2026-08-28T00:00:00.000Z","provider":{"host":"api.cdp.coinbase.com","path":"/platform/v2/x402/discovery/merchant","method":"GET"},"error":null},"searches":[{"query":"example paid json api","visibility":"IN_TOP_20","position":1,"returned_count":1,"search_method":"hybrid","partial_results":false,"retrieved_at":"2026-08-28T00:00:00.000Z","provider":{"host":"api.cdp.coinbase.com","path":"/platform/v2/x402/discovery/search","method":"GET"},"error":null}],"evidence":{"provider":"coinbase-cdp-bazaar-discovery","origin":"https://api.cdp.coinbase.com","path_prefix":"/platform/v2/x402/discovery/","outbound_requests":2,"merchant_requests":1,"search_requests":1,"auth_header_sent":false,"submitted_resource_fetched":false,"url_equality":"https host-lowercase default-port-443 pathname+search exact; fragments and userinfo rejected; query-string order is significant"},"limitations":["This is a point-in-time Coinbase Bazaar observation, not proof of future visibility.","Coinbase search ranking formula is external and may change.","Observed position is only within the returned top 20.","partialResults=true means additional results may exist beyond the returned page.","Merchant pagination is intentionally bounded to one page (limit=20, offset=0).","quality, call, and payer fields are Coinbase-reported observations, not Agent Mercantile verification of buyer independence.","No resource endpoint was fetched or functionally tested.","No recommendation, remediation, trust, quality, or SEO score is produced."]}},"description":"Observe whether one x402 seller resource appears in Coinbase Bazaar merchant discovery and where the exact resource sits in the first 20 results for 1–3 buyer-supplied job-language searches. Factual evidence only. Call when you need a point-in-time Bazaar presence and top-20 search observation, not a trust, SEO, or remediation score."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["resource","pay_to","queries"],"additionalProperties":false,"properties":{"resource":{"type":"string","format":"uri","description":"Exactly one absolute HTTPS x402 resource URL identifier. Treated as an identifier only; never fetched or proxied. Fragments, credentials, non-HTTPS, and non-443 ports are rejected."},"pay_to":{"type":"string","description":"Merchant payTo address. 0x-prefixed 20-byte EVM address."},"queries":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"string","minLength":2,"maxLength":400,"description":"Buyer-job search string. Coinbase search maximum is 400 characters."},"description":"1 to 3 buyer-supplied job-language searches. No hidden default query."}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","machine","methodology_version","checked_at","resource","pay_to","merchant","searches","evidence","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM05"]},"methodology_version":{"type":"string","enum":["bazaar-visibility-0.1.0"]},"checked_at":{"type":"string"},"resource":{"type":"string"},"pay_to":{"type":"string"},"merchant":{"type":"object"},"searches":{"type":"array"},"evidence":{"type":"object"},"limitations":{"type":"array","items":{"type":"string"}}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM05"}},"/v1/transaction-gas-preflight":{"post":{"operationId":"postVm06TransactionGasPreflight","tags":["VM06"],"x-am-family":"ONCHAIN_PREFLIGHT","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"summary":"Transaction Gas Preflight: factual Ethereum/Base gas units and recent execution-fee evidence","description":"Return bounded factual eth_estimateGas units and recent eth_feeHistory execution-fee evidence for one unsigned Ethereum or Base transaction. Not execution, signing, custody, trading, or a guaranteed final cost. Call when you need point-in-time gas units and recent execution-fee context before signing or submitting. Call when you need point-in-time gas units and recent execution-fee context before signing or submitting an Ethereum or Base transaction. Not transaction execution, signing, wallet/custody, trading, approval, simulation-as-guarantee, or financial advice. POST JSON {\"chain\":\"eip155:8453\",\"to\":\"0x...\"}. Calldata max 8192 bytes. Request body max 20480 bytes. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.005 USDC (5000 atomic) on Base (eip155:8453). Malformed requests return HTTP 400 without a payable contract. No Alchemy call before payment. Methodology transaction-gas-preflight-0.1.0.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionGasRequest"},"example":{"chain":"eip155:8453","to":"0x0000000000000000000000000000000000000001","data":"0x","value_wei":"0"}}}},"responses":{"200":{"description":"OK, PARTIAL, UNESTIMABLE, or factual HOLD after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionGasResponse"},"example":{"status":"OK","machine":"VM06","methodology_version":"transaction-gas-preflight-0.1.0","checked_at":"2026-08-29T00:00:00.000Z","chain":{"caip2":"eip155:8453","chain_id":8453,"name":"base"},"request_shape":{"has_from":false,"calldata_bytes":0,"value_nonzero":false},"gas_estimate":{"gas_units":"21000"},"fee_history":{"block_count":5,"newest_block":"latest","reward_percentiles":[10,50,90],"oldest_block":"0x1","base_fee_per_gas":["100","110","120","130","140"],"gas_used_ratio":["0.1","0.2","0.3","0.4","0.5"],"priority_fee_rewards":[["1","2","3"],["1","2","3"],["1","2","3"],["1","2","3"],["1","2","3"]]},"illustrative_execution_fees":{"kind":"illustrative_execution_fee_observations","recommendation":false,"guaranteed_final_cost":false,"covers":"l2_execution_fee_only","l1_security_or_data_fee_included":false,"labeled_as_total_transaction_cost":false,"scenarios":[{"label":"recent_base_plus_p50_priority","base_fee_per_gas_wei":"140","priority_fee_per_gas_wei":"2","execution_fee_wei":"2982000","execution_fee_eth":"0.000000000002982"}]},"provider":{"name":"alchemy","host":"base-mainnet.g.alchemy.com","methods":["eth_estimateGas","eth_feeHistory"],"url":"https://base-mainnet.g.alchemy.com","credential_material":false},"limitations":["This is a point-in-time gas-estimation and fee-history observation, not a guaranteed final cost.","Base results cover L2 execution-fee evidence only and do not include the separate Base L1 security/data fee.","VM06 Base arithmetic is not a total transaction cost."]}}}},"400":{"description":"Malformed JSON, unsupported chain/address/data/value, unknown execution-control fields. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 5000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"chain":"eip155:8453","to":"0x0000000000000000000000000000000000000001","data":"0x","value_wei":"0"},"method":"POST"},"output":{"type":"json","example":{"status":"OK","machine":"VM06","methodology_version":"transaction-gas-preflight-0.1.0","checked_at":"2026-08-29T00:00:00.000Z","chain":{"caip2":"eip155:8453","chain_id":8453,"name":"base"},"request_shape":{"has_from":false,"calldata_bytes":0,"value_nonzero":false},"gas_estimate":{"gas_units":"21000"},"fee_history":{"block_count":5,"newest_block":"latest","reward_percentiles":[10,50,90],"oldest_block":"0x1","base_fee_per_gas":["100","110","120","130","140"],"gas_used_ratio":["0.1","0.2","0.3","0.4","0.5"],"priority_fee_rewards":[["1","2","3"],["1","2","3"],["1","2","3"],["1","2","3"],["1","2","3"]]},"illustrative_execution_fees":{"kind":"illustrative_execution_fee_observations","recommendation":false,"guaranteed_final_cost":false,"covers":"l2_execution_fee_only","l1_security_or_data_fee_included":false,"labeled_as_total_transaction_cost":false,"scenarios":[{"label":"recent_base_plus_p50_priority","base_fee_per_gas_wei":"140","priority_fee_per_gas_wei":"2","execution_fee_wei":"2982000","execution_fee_eth":"0.000000000002982"}]},"provider":{"name":"alchemy","host":"base-mainnet.g.alchemy.com","methods":["eth_estimateGas","eth_feeHistory"],"url":"https://base-mainnet.g.alchemy.com","credential_material":false},"limitations":["This is a point-in-time gas-estimation and fee-history observation, not a guaranteed final cost.","Base results cover L2 execution-fee evidence only and do not include the separate Base L1 security/data fee.","VM06 Base arithmetic is not a total transaction cost."]}},"description":"Return bounded factual eth_estimateGas units and recent eth_feeHistory execution-fee evidence for one unsigned Ethereum or Base transaction. Not execution, signing, custody, trading, or a guaranteed final cost. Call when you need point-in-time gas units and recent execution-fee context before signing or submitting."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["chain","to"],"additionalProperties":false,"properties":{"chain":{"type":"string","enum":["eip155:1","eip155:8453"],"description":"Analysis chain only. Payment remains Base eip155:8453."},"to":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Required 0x-prefixed 20-byte destination. Contract creation is not supported."},"from":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Optional 0x-prefixed 20-byte sender used only as an eth_estimateGas field. No ownership is implied."},"data":{"type":"string","pattern":"^0x(?:[0-9a-fA-F]{2})*$","maxLength":16386,"description":"Optional 0x-prefixed even-length hex calldata. Default 0x. Maximum 8192 bytes. Request body maximum 20480 bytes."},"value_wei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","description":"Optional unsigned base-10 integer string in the uint256 range. Default 0. JSON Schema cannot express the full uint256 upper bound; runtime validation rejects values above 2^256-1."}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","machine","methodology_version","checked_at","chain","gas_estimate","fee_history","illustrative_execution_fees","provider","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","UNESTIMABLE","HOLD"]},"machine":{"type":"string","enum":["VM06"]},"methodology_version":{"type":"string","enum":["transaction-gas-preflight-0.1.0"]},"checked_at":{"type":"string"},"chain":{"type":"object"},"request_shape":{"type":"object"},"gas_estimate":{"type":"object","nullable":true},"fee_history":{"type":"object","nullable":true},"illustrative_execution_fees":{"type":"object","nullable":true},"provider":{"type":"object"},"limitations":{"type":"array","items":{"type":"string"}}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM06"}},"/v1/web-change-snapshot":{"post":{"operationId":"postVm07WebChangeSnapshot","tags":["VM07"],"x-am-family":"WEB_INTELLIGENCE","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"summary":"Web Change Snapshot: bounded HTTPS webpage change detection against a caller-held baseline","description":"Determine whether the bounded normalized representation of one public HTTPS webpage has changed since a caller-held baseline. Returns fingerprints and change status, not continuous monitoring, alerts, webhooks, semantic importance, AI summaries, or site-wide crawling. Call when you need webpage change detection, URL change, page freshness, documentation monitoring, pricing-page monitoring, or policy-page monitoring of one public HTTPS page. Not continuous monitoring, alerts, webhooks, semantic importance detection, AI summaries, or site-wide crawling. POST JSON {\"url\":\"https://...\"}. Optional baseline is compact hashes only. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.005 USDC (5000 atomic) on Base (eip155:8453). Malformed requests return HTTP 400 without a payable contract. No page fetch before payment except VM01 structural URL-policy checks. Reuses VM01 HTTPS/SSRF/extract. Methodology web-change-snapshot-0.1.0.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebChangeSnapshotRequest"},"examples":{"first_check":{"summary":"Valid first check; establishes a caller-held baseline after payment","value":{"url":"https://example.com/"}},"recheck":{"summary":"Valid recheck using a caller-held compact baseline (hashes only)","value":{"url":"https://example.com/","baseline":{"methodology_version":"web-change-snapshot-0.1.0","page_sha256":"34226d50aa7881c384ac5dd0ec9b237714a99bcd3bba151fd98edc443221922a","components":{"final_url":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","http":"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","metadata":"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd","outline":"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","content":"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","structured_data":"1111111111111111111111111111111111111111111111111111111111111111"},"content_truncated":false,"extraction_complete":true}}}}}}},"responses":{"200":{"description":"OK, PARTIAL, or HOLD product health plus BASELINE/UNCHANGED/CHANGED/INCONCLUSIVE comparison after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebChangeSnapshotResponse"},"example":{"status":"OK","machine":"VM07","methodology_version":"web-change-snapshot-0.1.0","checked_at":"2026-09-10T00:00:00.000Z","requested_url":"https://example.com/","final_url":"https://example.com/","http":{"status":200,"content_type":"text/html; charset=UTF-8","redirect_count":0},"comparison_status":"BASELINE","comparison_scope":"Comparison covers the bounded normalized representation observed by VM07, not the entire website or entire webpage.","changed_components":[],"baseline":{"methodology_version":"web-change-snapshot-0.1.0","page_sha256":"34226d50aa7881c384ac5dd0ec9b237714a99bcd3bba151fd98edc443221922a","components":{"final_url":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","http":"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","metadata":"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd","outline":"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","content":"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","structured_data":"1111111111111111111111111111111111111111111111111111111111111111"},"content_truncated":false,"extraction_complete":true},"metadata":{"title":"Example Domain","description":null,"canonical":"https://example.com/"},"outline":[{"level":1,"text":"Example Domain"}],"structured_data":{"json_ld_types":[]},"extraction":{"basis":"body-heuristic","characters":155,"truncated":false,"complete":true},"completeness":{"content_truncated":false,"extraction_complete":true,"product_status":"OK"},"limitations":["Comparison covers the bounded normalized representation observed by VM07, not the entire website or entire webpage."]}}}},"400":{"description":"Malformed JSON, invalid/private URL, unexpected fields, or malformed baseline hashes. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 5000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"url":"https://example.com/"},"method":"POST"},"output":{"type":"json","example":{"status":"OK","machine":"VM07","methodology_version":"web-change-snapshot-0.1.0","checked_at":"2026-09-10T00:00:00.000Z","requested_url":"https://example.com/","final_url":"https://example.com/","http":{"status":200,"content_type":"text/html; charset=UTF-8","redirect_count":0},"comparison_status":"BASELINE","comparison_scope":"Comparison covers the bounded normalized representation observed by VM07, not the entire website or entire webpage.","changed_components":[],"baseline":{"methodology_version":"web-change-snapshot-0.1.0","page_sha256":"34226d50aa7881c384ac5dd0ec9b237714a99bcd3bba151fd98edc443221922a","components":{"final_url":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","http":"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","metadata":"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd","outline":"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","content":"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","structured_data":"1111111111111111111111111111111111111111111111111111111111111111"},"content_truncated":false,"extraction_complete":true},"metadata":{"title":"Example Domain","description":null,"canonical":"https://example.com/"},"outline":[{"level":1,"text":"Example Domain"}],"structured_data":{"json_ld_types":[]},"extraction":{"basis":"body-heuristic","characters":155,"truncated":false,"complete":true},"completeness":{"content_truncated":false,"extraction_complete":true,"product_status":"OK"},"limitations":["Comparison covers the bounded normalized representation observed by VM07, not the entire website or entire webpage."]}},"description":"Determine whether the bounded normalized representation of one public HTTPS webpage has changed since a caller-held baseline. Returns fingerprints and change status, not continuous monitoring, alerts, webhooks, semantic importance, AI summaries, or site-wide crawling."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["url"],"additionalProperties":false,"properties":{"url":{"type":"string","format":"uri","description":"One absolute public HTTPS URL on port 443. No credentials in the URL. http, non-443 ports, and private/non-public targets are rejected without fetch."},"baseline":{"type":"object","additionalProperties":false,"required":["methodology_version","page_sha256","components","content_truncated","extraction_complete"],"description":"Optional caller-held compact comparison evidence. Hashes and completeness/methodology fields only. Never resend the previous webpage body.","properties":{"methodology_version":{"type":"string"},"page_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"components":{"type":"object","additionalProperties":false,"required":["final_url","http","metadata","outline","content","structured_data"],"properties":{"final_url":{"type":"string","pattern":"^[0-9a-f]{64}$"},"http":{"type":"string","pattern":"^[0-9a-f]{64}$"},"metadata":{"type":"string","pattern":"^[0-9a-f]{64}$"},"outline":{"type":"string","pattern":"^[0-9a-f]{64}$"},"content":{"type":"string","pattern":"^[0-9a-f]{64}$"},"structured_data":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"content_truncated":{"type":"boolean"},"extraction_complete":{"type":"boolean"}}}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","machine","methodology_version","checked_at","requested_url","comparison_status","baseline","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM07"]},"methodology_version":{"type":"string","enum":["web-change-snapshot-0.1.0"]},"checked_at":{"type":"string"},"requested_url":{"type":"string"},"final_url":{"type":"string","nullable":true},"http":{"type":"object"},"comparison_status":{"type":"string","enum":["BASELINE","UNCHANGED","CHANGED","INCONCLUSIVE"]},"comparison_scope":{"type":"string"},"changed_components":{"type":"array","items":{"type":"string"}},"baseline":{"type":"object"},"metadata":{"type":"object"},"outline":{"type":"array"},"structured_data":{"type":"object"},"extraction":{"type":"object"},"completeness":{"type":"object"},"limitations":{"type":"array","items":{"type":"string"}}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM07"}},"/v1/x402-service-change-snapshot":{"post":{"operationId":"postVm08X402ServiceChangeSnapshot","tags":["VM08"],"x-am-family":"AGENT_COMMERCE","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"summary":"x402 Service Change Snapshot: re-qualify a caller-held payment-contract baseline","description":"Determine whether a previously accepted x402 service payment contract is still equivalent enough to proceed. Compares one live unpaid 402 challenge, using a caller-supplied GET or POST request shape, against a caller-held baseline bound to that request identity. Not uptime monitoring, a trust score, a webhook, a marketplace crawl, or a generic POST {} probe of every x402 resource. Call when you need to re-qualify a previously accepted x402 payment contract using a caller-held baseline. Not an uptime monitor, 30-day watcher, webhook, trust score, or marketplace crawler. POST JSON {\"resource_url\":\"https://...\",\"method\":\"GET\"|\"POST\"}. Optional POST body is a JSON object. Optional caller-held baseline, price_policy, and discovery listing. Method is required; discovery cannot invent it. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.01 USDC (10000 atomic) on Base (eip155:8453). Malformed requests return HTTP 400 without a payable contract. No 402 probe before payment except structural URL-policy checks. Methodology x402-service-change-snapshot-0.1.0.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402ServiceChangeRequest"},"example":{"resource_url":"https://api.agentmercantile.com/v1/url-context","method":"POST"}}}},"responses":{"200":{"description":"OK, PARTIAL, or HOLD plus BASELINE_CREATED/CONTINUE/REVIEW/STOP/UNKNOWN after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402ServiceChangeResponse"},"example":{"status":"OK","machine":"VM08","methodology_version":"x402-service-change-snapshot-0.1.0","candidate_id":"VM08-CANDIDATE","decision":"BASELINE_CREATED","observation_kind":"first","material_change_classes":["BASELINE_CREATED"],"checked_at":"2026-09-18T00:00:00.000Z","requested_resource":"https://api.agentmercantile.com/v1/url-context","probe":{"method":"POST","resource_url":"https://api.agentmercantile.com/v1/url-context","body_sha256":"44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a"},"reason":"BASELINE_CREATED:BASELINE_CREATED","recommended_action":"Initial qualification only. Hold this reusable baseline. This result is not a comparison against a previously accepted payment contract.","baseline":{"reusable":true,"methodology_version":"x402-service-change-snapshot-0.1.0","provenance":"direct_service","observed_at":"2026-09-18T00:00:00.000Z"},"limitations":["Caller holds the baseline. Agent Mercantile does not store a monitoring history for this resource."]}}}},"400":{"description":"Malformed JSON, invalid/private resource_url, unexpected fields, or malformed baseline. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 10000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"resource_url":"https://api.agentmercantile.com/v1/url-context","method":"POST"},"method":"POST"},"output":{"type":"json","example":{"status":"OK","machine":"VM08","methodology_version":"x402-service-change-snapshot-0.1.0","candidate_id":"VM08-CANDIDATE","decision":"BASELINE_CREATED","observation_kind":"first","material_change_classes":["BASELINE_CREATED"],"checked_at":"2026-09-18T00:00:00.000Z","requested_resource":"https://api.agentmercantile.com/v1/url-context","probe":{"method":"POST","resource_url":"https://api.agentmercantile.com/v1/url-context","body_sha256":"44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a"},"reason":"BASELINE_CREATED:BASELINE_CREATED","recommended_action":"Initial qualification only. Hold this reusable baseline. This result is not a comparison against a previously accepted payment contract.","baseline":{"reusable":true,"methodology_version":"x402-service-change-snapshot-0.1.0","provenance":"direct_service","observed_at":"2026-09-18T00:00:00.000Z"},"limitations":["Caller holds the baseline. Agent Mercantile does not store a monitoring history for this resource."]}},"description":"Determine whether a previously accepted x402 service payment contract is still equivalent enough to proceed. Compares one live unpaid 402 challenge, using a caller-supplied GET or POST request shape, against a caller-held baseline bound to that request identity. Not uptime monitoring, a trust score, a webhook, a marketplace crawl, or a generic POST {} probe of every x402 resource."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["resource_url","method"],"additionalProperties":false,"properties":{"resource_url":{"type":"string","format":"uri","description":"One absolute public HTTPS x402 resource URL on port 443. VM08 probes this URL once after payment using the caller-supplied method."},"method":{"type":"string","enum":["GET","POST"],"description":"HTTP method for the unpaid 402 probe. Required. Discovery listings cannot invent this method. x402 does not imply every paid resource is POST."},"body":{"type":"object","description":"Optional JSON object for POST probes only. Omitted POST body is sent as {}. GET probes must not include body. No custom headers or credentials."},"baseline":{"type":"object","description":"Optional caller-held reusable payment-contract baseline from a previous VM08 OK observation. Bound to method, URL, and POST body fingerprint."},"price_policy":{"type":"object","additionalProperties":false,"properties":{"modest_increase_bps":{"type":"integer"},"max_increase_bps":{"type":"integer"}}},"discovery":{"type":"object","description":"Optional caller-supplied discovery/catalog listing. Not fetched by VM08 and not used to choose method."}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","machine","methodology_version","decision","baseline","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM08"]},"methodology_version":{"type":"string","enum":["x402-service-change-snapshot-0.1.0"]},"decision":{"type":"string","enum":["BASELINE_CREATED","CONTINUE","REVIEW","STOP","UNKNOWN"]},"requested_resource":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM08"}},"/v1/x402-presign-handoff":{"post":{"operationId":"postVm09X402PresignHandoff","tags":["VM09"],"x-am-family":"AGENT_COMMERCE","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"}},"summary":"x402 Pre-Sign Handoff Packet: unpaid 402 + coverage evidence for a separate signer","description":"Produce a normalized pre-sign evidence packet for one unpaid x402 v2 exact Base USDC EIP-3009 requirement: request identity, selected requirement including asset transfer method, public payer coverage, caller ceiling, optional baseline evidence, and an integrity digest. Non-eip3009 or incomplete transfer methods fail closed. Does not sign, pay, construct a transaction, read payment-authority allowances, or recommend whether to buy. Call when a planner keeps wallet/signing authority separate and needs one canonical unpaid-402 + coverage packet for an EIP-3009 exact Base USDC requirement. Not a wallet, not a recommendation, not a target payment. Does not qualify non-eip3009 transfer methods. POST JSON with resource_url, method, payer_address, max_amount_atomic, and allowed_pay_to. Optional POST body and compact baseline. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.01 USDC (10000 atomic) on Base (eip155:8453). Malformed requests return HTTP 400 without a payable contract. No target 402 probe or RPC before payment. Methodology x402-presign-handoff-0.1.0.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PresignHandoffRequest"},"example":{"resource_url":"https://api.agentmercantile.com/v1/url-context","method":"POST","payer_address":"0x1111111111111111111111111111111111111111","max_amount_atomic":"20000","allowed_pay_to":["0xdb7b2b54f80479826222749a2ea73a8acc306e1e"]}}}},"responses":{"200":{"description":"READY, NOT_READY, or INDETERMINATE pre-sign packet after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PresignHandoffResponse"},"example":{"status":"OK","machine":"VM09","methodology_version":"x402-presign-handoff-0.1.0","decision":"READY","observed_at":"2026-09-18T00:00:00.000Z","expires_at":"2026-09-18T00:01:00.000Z","signing":false,"payment_execution":false,"transaction_construction":false,"custody":false,"recommendation":false,"reason_codes":["DIRECT_CONTRACT_COMPLETE","SUPPORTED_TRANSFER_METHOD","WITHIN_CALLER_LIMIT","BALANCE_SUFFICIENT"],"selected_requirement":{"index":0,"scheme":"exact","network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","amount_atomic":"10000","pay_to":"0xdb7b2b54f80479826222749a2ea73a8acc306e1e","max_timeout_seconds":60,"asset_transfer_method":"eip3009"},"direct_resource_url":"https://api.agentmercantile.com/v1/url-context","resource_identity_match":true}}}},"400":{"description":"Malformed JSON, invalid URL, missing payer/max/payTo, or unexpected fields. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 10000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"resource_url":"https://api.agentmercantile.com/v1/url-context","method":"POST","payer_address":"0x1111111111111111111111111111111111111111","max_amount_atomic":"20000","allowed_pay_to":["0xdb7b2b54f80479826222749a2ea73a8acc306e1e"]},"method":"POST"},"output":{"type":"json","example":{"status":"OK","machine":"VM09","methodology_version":"x402-presign-handoff-0.1.0","decision":"READY","observed_at":"2026-09-18T00:00:00.000Z","expires_at":"2026-09-18T00:01:00.000Z","signing":false,"payment_execution":false,"transaction_construction":false,"custody":false,"recommendation":false,"reason_codes":["DIRECT_CONTRACT_COMPLETE","SUPPORTED_TRANSFER_METHOD","WITHIN_CALLER_LIMIT","BALANCE_SUFFICIENT"],"selected_requirement":{"index":0,"scheme":"exact","network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","amount_atomic":"10000","pay_to":"0xdb7b2b54f80479826222749a2ea73a8acc306e1e","max_timeout_seconds":60,"asset_transfer_method":"eip3009"},"direct_resource_url":"https://api.agentmercantile.com/v1/url-context","resource_identity_match":true}},"description":"Produce a normalized pre-sign evidence packet for one unpaid x402 v2 exact Base USDC EIP-3009 requirement: request identity, selected requirement including asset transfer method, public payer coverage, caller ceiling, optional baseline evidence, and an integrity digest. Non-eip3009 or incomplete transfer methods fail closed. Does not sign, pay, construct a transaction, read payment-authority allowances, or recommend whether to buy."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["resource_url","method","payer_address","max_amount_atomic","allowed_pay_to"],"additionalProperties":false,"properties":{"resource_url":{"type":"string","format":"uri","description":"One absolute public HTTPS x402 resource URL on port 443. Probed unpaid after AM payment."},"method":{"type":"string","enum":["GET","POST"],"description":"HTTP method for the unpaid target 402 probe. Required."},"body":{"type":"object","description":"Optional JSON object for POST probes only. No custom headers or credentials."},"payer_address":{"type":"string","description":"Public EVM address whose Base USDC balanceOf is read after AM payment."},"max_amount_atomic":{"type":"string","description":"Caller maximum atomic USDC amount. Non-negative integer string."},"allowed_pay_to":{"type":"array","items":{"type":"string"},"description":"Non-empty bounded list of caller-approved payTo addresses."},"baseline":{"type":"object","description":"Optional caller-held compact baseline: request identity plus scheme/network/asset/amount/payTo."}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","machine","methodology_version","decision","handoff_sha256","signing","payment_execution"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM09"]},"methodology_version":{"type":"string","enum":["x402-presign-handoff-0.1.0"]},"decision":{"type":"string","enum":["READY","NOT_READY","INDETERMINATE"]},"signing":{"type":"boolean","enum":[false]},"payment_execution":{"type":"boolean","enum":[false]},"transaction_construction":{"type":"boolean","enum":[false]},"custody":{"type":"boolean","enum":[false]},"recommendation":{"type":"boolean","enum":[false]},"direct_resource_url":{"type":"string","nullable":true},"resource_identity_match":{"type":"boolean","nullable":true},"selected_requirement":{"type":"object","description":"Selected supported exact Base USDC requirement. asset_transfer_method is the resolved extra.assetTransferMethod (omitted extra defaults to eip3009). Present only when VM09 selected a requirement it qualifies.","properties":{"index":{"type":"integer"},"scheme":{"type":"string"},"network":{"type":"string"},"asset":{"type":"string"},"amount_atomic":{"type":"string"},"pay_to":{"type":"string"},"max_timeout_seconds":{"type":"integer","nullable":true},"asset_transfer_method":{"type":"string","enum":["eip3009"],"description":"VM09 V1 only qualifies eip3009. Unsupported or incomplete transfer methods never appear on a READY packet."}},"nullable":true},"reason_codes":{"type":"array","items":{"type":"string","enum":["DIRECT_CONTRACT_COMPLETE","DIRECT_CONTRACT_INCOMPLETE","SUPPORTED_SCHEME","UNSUPPORTED_SCHEME","SUPPORTED_NETWORK","UNSUPPORTED_NETWORK","SUPPORTED_ASSET","UNSUPPORTED_ASSET","PAY_TO_ALLOWED","PAY_TO_UNEXPECTED","BALANCE_SUFFICIENT","BALANCE_INSUFFICIENT","WITHIN_CALLER_LIMIT","CALLER_LIMIT_EXCEEDED","BASELINE_MATCH","MATERIAL_CONTRACT_CHANGE","REQUEST_IDENTITY_MISMATCH","RESOURCE_IDENTITY_MISMATCH","SUPPORTED_TRANSFER_METHOD","UNSUPPORTED_TRANSFER_METHOD","TRANSFER_METHOD_INCOMPLETE"]}}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM09"}},"/v1/payment-authority-snapshot":{"post":{"operationId":"postVm10PaymentAuthoritySnapshot","tags":["VM10"],"x-am-family":"AGENT_COMMERCE","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"summary":"Payment Authority Snapshot: unpaid 402 + same-block token authority evidence","description":"Produce a factual snapshot of current x402 payment authority for one unpaid v2 requirement and one public EVM payer: selected scheme/network/asset/amount/payTo/transfer method, same-block token balance, canonical token-spender allowance when that path applies, and declared recovery-path classification. Does not sign, approve, construct a transaction, judge native gas, or recommend whether to buy. Call when a planner needs a read-only authority snapshot before considering an approval or payment. Not a wallet, not a gas estimator, not a recommendation, not a target payment. POST JSON with resource_url, method, and payer_address. Optional POST body and compact authority baseline. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.005 USDC (5000 atomic) on Base (eip155:8453). Malformed requests return HTTP 400 without a payable contract. No target 402 probe or RPC before payment. Methodology payment-authority-snapshot-0.1.0.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentAuthoritySnapshotRequest"},"example":{"resource_url":"https://api.agentmercantile.com/v1/url-context","method":"POST","payer_address":"0x1111111111111111111111111111111111111111"}}}},"responses":{"200":{"description":"Payment-authority state packet after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentAuthoritySnapshotResponse"},"example":{"status":"OK","machine":"VM10","methodology_version":"payment-authority-snapshot-0.1.0","state":"READY_EXISTING","signing":false,"payment_execution":false,"transaction_construction":false,"approval_mutation":false,"custody":false,"recommendation":false,"gas_sufficiency_judgment":false}}}},"400":{"description":"Malformed JSON, invalid URL, missing payer, forbidden fields, or unexpected fields. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 5000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"resource_url":"https://api.agentmercantile.com/v1/url-context","method":"POST","payer_address":"0x1111111111111111111111111111111111111111"},"method":"POST"},"output":{"type":"json","example":{"status":"OK","machine":"VM10","methodology_version":"payment-authority-snapshot-0.1.0","state":"READY_EXISTING","signing":false,"payment_execution":false,"transaction_construction":false,"approval_mutation":false,"custody":false,"recommendation":false,"gas_sufficiency_judgment":false}},"description":"Produce a factual snapshot of current x402 payment authority for one unpaid v2 requirement and one public EVM payer: selected scheme/network/asset/amount/payTo/transfer method, same-block token balance, canonical token-spender allowance when that path applies, and declared recovery-path classification. Does not sign, approve, construct a transaction, judge native gas, or recommend whether to buy."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["resource_url","method","payer_address"],"additionalProperties":false,"properties":{"resource_url":{"type":"string","format":"uri","description":"One absolute public HTTPS x402 resource URL on port 443. Probed unpaid after AM payment."},"method":{"type":"string","enum":["GET","POST"],"description":"HTTP method for the unpaid target 402 probe."},"body":{"type":"object","description":"Optional JSON object for POST probes only. No custom headers or credentials."},"payer_address":{"type":"string","description":"Public EVM payer whose token balance and canonical spender allowance are read after AM payment."},"baseline":{"type":"object","description":"Optional caller-held compact VM10 authority baseline. Must include baseline_sha256 over the compact fields; tampered or foreign-methodology baselines are rejected before payment advertisement."}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","machine","methodology_version","state","snapshot_sha256","signing","approval_mutation"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM10"]},"methodology_version":{"type":"string","enum":["payment-authority-snapshot-0.1.0"]},"state":{"type":"string","enum":["READY_EXISTING","APPROVAL_PATH_SPONSORED_ERC20","APPROVAL_PATH_EIP2612","DIRECT_APPROVAL_REQUIRED","NOT_READY_BALANCE","UNSUPPORTED_PROTOCOL_OR_NETWORK","INDETERMINATE"]},"signing":{"type":"boolean","enum":[false]},"payment_execution":{"type":"boolean","enum":[false]},"transaction_construction":{"type":"boolean","enum":[false]},"approval_mutation":{"type":"boolean","enum":[false]},"custody":{"type":"boolean","enum":[false]},"recommendation":{"type":"boolean","enum":[false]},"gas_sufficiency_judgment":{"type":"boolean","enum":[false]}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM10"}},"/v1/bazaar-visibility-change":{"post":{"operationId":"postVm11BazaarVisibilityChange","tags":["VM11"],"x-am-family":"AGENT_COMMERCE","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"summary":"Bazaar Visibility Change Snapshot: compare Coinbase Bazaar discovery visibility to a caller-held baseline","description":"Compare one x402 resource's Coinbase Bazaar discovery visibility with a caller-held baseline: merchant presence, discovery metadata, schema metadata, visible payment fields, and top-20 position for 1–3 buyer queries. Not a VM05 replacement, direct payment-contract probe, global rank, or remediation advice. Call when you need a deterministic comparison of one resource's Coinbase Bazaar discovery visibility against a caller-held baseline for 1–3 buyer-job searches. Not a generic Bazaar search, not a replacement for VM05, and not a VM08 direct-contract probe. POST JSON with resource, pay_to, and 1–3 queries. Optional caller-held sealed baseline. A syntactically valid unpaid request returns HTTP 402 x402 v2 exact $0.005 USDC (5000 atomic) on Base (eip155:8453). Malformed requests, including a tampered or identity-mismatched baseline, return HTTP 400 without a payable contract. No Coinbase discovery request before payment. Methodology bazaar-visibility-change-0.1.0. This does not replace VM05 and does not probe the direct x402 contract compared by VM08.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BazaarVisibilityChangeRequest"},"example":{"resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","queries":["example paid json api"]}}}},"responses":{"200":{"description":"BASELINE_CREATED, CONTINUE, CHANGED, or HOLD after a valid paid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BazaarVisibilityChangeResponse"},"example":{"status":"OK","decision":"BASELINE_CREATED","machine":"VM11","methodology_version":"bazaar-visibility-change-0.1.0","checked_at":"2026-10-01T00:00:00.000Z","resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","queries":["example paid json api"],"comparison_performed":false,"material_change_classes":[],"deltas":[],"hold_reason":null,"current_baseline":{"methodology_version":"bazaar-visibility-change-0.1.0","resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","queries":["example paid json api"],"search_window":20,"merchant_page_limit":20,"merchant_page_offset":0,"observation":{"merchant_presence":"FOUND","merchant_note":null,"metadata":{"service_name":"Example Paid API","description":"Bounded JSON for one buyer job","tags":["json"],"curated":false,"icon_url":null,"skill_url":null},"schema_discovery":{"type":"http","x402_version":2,"extension_names":["bazaar"],"bazaar_info_present":true,"bazaar_schema_present":true},"payment":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","amount":"10000","pay_to":"0x0000000000000000000000000000000000000001","max_timeout_seconds":60}],"searches":[{"query":"example paid json api","visibility":"IN_TOP_20","position":3,"window_note":null}]},"observation_sha256":"3523d15ece3c8d136ed9ba4fca6d45806c12c5116094c006d6e7cd2ecb73a508","observed_at":"2026-10-01T00:00:00.000Z","reusable":true,"observation_complete":true,"baseline_sha256":"245e3845a03a4f6fa5a9cc2a4b628b9571a6e1c992f88f3007331d03275f8565"},"direct_x402_probe":false,"server_baseline_stored":false}}}},"400":{"description":"Malformed JSON, invalid resource or pay_to, duplicate queries, extra fields, or a tampered or identity-mismatched baseline. Not a payable contract."},"402":{"description":"x402 v2 PAYMENT-REQUIRED exact 5000 atomic Base USDC for a structurally valid unpaid request"},"503":{"description":"Pilot disabled or fail-closed HOLD"}},"x-am-bazaar":{"bazaar":{"info":{"input":{"type":"http","bodyType":"json","body":{"resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","queries":["example paid json api"]},"method":"POST"},"output":{"type":"json","example":{"status":"OK","decision":"BASELINE_CREATED","machine":"VM11","methodology_version":"bazaar-visibility-change-0.1.0","checked_at":"2026-10-01T00:00:00.000Z","resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","queries":["example paid json api"],"comparison_performed":false,"material_change_classes":[],"deltas":[],"hold_reason":null,"current_baseline":{"methodology_version":"bazaar-visibility-change-0.1.0","resource":"https://api.example.com/v1/paid","pay_to":"0x0000000000000000000000000000000000000001","queries":["example paid json api"],"search_window":20,"merchant_page_limit":20,"merchant_page_offset":0,"observation":{"merchant_presence":"FOUND","merchant_note":null,"metadata":{"service_name":"Example Paid API","description":"Bounded JSON for one buyer job","tags":["json"],"curated":false,"icon_url":null,"skill_url":null},"schema_discovery":{"type":"http","x402_version":2,"extension_names":["bazaar"],"bazaar_info_present":true,"bazaar_schema_present":true},"payment":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","amount":"10000","pay_to":"0x0000000000000000000000000000000000000001","max_timeout_seconds":60}],"searches":[{"query":"example paid json api","visibility":"IN_TOP_20","position":3,"window_note":null}]},"observation_sha256":"3523d15ece3c8d136ed9ba4fca6d45806c12c5116094c006d6e7cd2ecb73a508","observed_at":"2026-10-01T00:00:00.000Z","reusable":true,"observation_complete":true,"baseline_sha256":"245e3845a03a4f6fa5a9cc2a4b628b9571a6e1c992f88f3007331d03275f8565"},"direct_x402_probe":false,"server_baseline_stored":false}},"description":"Compare one x402 resource's Coinbase Bazaar discovery visibility with a caller-held baseline: merchant presence, discovery metadata, schema metadata, visible payment fields, and top-20 position for 1–3 buyer queries. Not a VM05 replacement, direct payment-contract probe, global rank, or remediation advice."},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json","form-data","text"]},"body":{"type":"object","required":["resource","pay_to","queries"],"additionalProperties":false,"properties":{"resource":{"type":"string","format":"uri","description":"Exactly one absolute HTTPS x402 resource URL identifier. Treated as an identifier only; never fetched. Fragments, credentials, non-HTTPS, and non-443 ports are rejected."},"pay_to":{"type":"string","description":"Merchant payTo address. 0x-prefixed 20-byte EVM address."},"queries":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"string","minLength":2,"maxLength":400},"description":"1 to 3 caller-selected buyer-job search strings. Whitespace is collapsed and the set is ordered lexicographically. Duplicate normalized queries are rejected. No hidden default query."},"baseline":{"type":"object","description":"Optional caller-held sealed VM11 baseline. Must bind resource, pay_to, normalized queries, methodology, observation, and baseline_sha256. Tampered or identity-mismatched baselines are rejected before payment advertisement. Not stored server-side."}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object","required":["status","decision","machine","methodology_version","comparison_performed","deltas","current_baseline"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"decision":{"type":"string","enum":["BASELINE_CREATED","CONTINUE","CHANGED","HOLD"]},"machine":{"type":"string","enum":["VM11"]},"methodology_version":{"type":"string","enum":["bazaar-visibility-change-0.1.0"]},"comparison_performed":{"type":"boolean"},"material_change_classes":{"type":"array","items":{"type":"string"}},"deltas":{"type":"array"},"current_baseline":{"type":"object","nullable":true},"limitations":{"type":"array","items":{"type":"string"}}}}},"required":["type"]}},"required":["input"]}}},"x-am-machine":"VM11"}},"/samples/productive-venue-snapshot":{"get":{"summary":"Captured Productive Venue Snapshot example","description":"Static captured live example for the canonical native-Ethereum fixture. Zero Aave, Lido, Alchemy, or payment work at request time. Not a current paid observation.","x-am-machine":"VM04","responses":{"200":{"description":"JSON sample labeled sample=true and sample_kind=CAPTURED_LIVE_EXAMPLE"}}}},"/v1/pilot/status":{"get":{"summary":"Commercial pilot occupancy/status","description":"Ledger occupancy without CDP verify/settle. Not a product SKU.","responses":{"200":{"description":"Ready status object"},"503":{"description":"Pilot HOLD"}}}}},"components":{"schemas":{"Health":{"type":"object","properties":{"service":{"type":"string","enum":["Agent Mercantile"]},"machine":{"type":"string","enum":["VM01"],"description":"Legacy first-listed machine id. Company/service identity is service=Agent Mercantile; the seven-machine registry is machines."},"machines":{"type":"array","items":{"type":"string"}},"version":{"type":"string"},"methodology_version":{"type":"string","enum":["url-context-0.1.0"]},"status":{"type":"string","enum":["ok"]},"commercial_pilot":{"type":"string"},"runtime":{"type":"string"},"build_identity":{"type":"string"},"source_commit":{"type":"string","nullable":true},"persistence":{"type":"string"}}},"UrlContextRequest":{"type":"object","required":["url"],"additionalProperties":false,"properties":{"url":{"type":"string","format":"uri","example":"https://example.com/","description":"One absolute public HTTPS URL on port 443."}}},"UrlContextResponse":{"type":"object","required":["status","methodology_version","requested_url","content","limitations"],"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"methodology_version":{"type":"string","enum":["url-context-0.1.0"]},"requested_url":{"type":"string"},"final_url":{"type":"string","nullable":true},"http":{"type":"object"},"metadata":{"type":"object"},"outline":{"type":"array"},"content":{"type":"object"},"structured_data":{"type":"object"},"freshness":{"type":"object"},"size":{"type":"object"},"evidence":{"type":"object"},"limitations":{"type":"array","items":{"type":"string"}}}},"AllowanceExposureRequest":{"type":"object","required":["owner","token","spender"],"additionalProperties":false,"properties":{"owner":{"type":"string","example":"0x0000000000000000000000000000000000000001","description":"0x-prefixed 20-byte EVM address."},"token":{"type":"string","example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"ERC-20 contract. Zero address rejected."},"spender":{"type":"string","example":"0x0000000000000000000000000000000000000002","description":"0x-prefixed 20-byte EVM address."}}},"AllowanceExposureResponse":{"type":"object","required":["status","machine","methodology_version","network","block_number","owner","token","spender","token_metadata","allowance_raw","allowance_adjusted","balance_raw","balance_adjusted","allowance_balance_exposure_raw","allowance_balance_exposure_adjusted","allowance_covers_current_balance","max_uint256_approval","effectively_unlimited","evidence","limitations"],"properties":{"status":{"type":"string","enum":["OK","HOLD"]},"machine":{"type":"string","enum":["VM02"]},"methodology_version":{"type":"string","enum":["allowance-exposure-0.1.0"]},"network":{"type":"string"},"block_number":{"type":"string","nullable":true},"owner":{"type":"string"},"token":{"type":"string"},"spender":{"type":"string"},"token_metadata":{"type":"object"},"allowance_raw":{"type":"string","nullable":true},"allowance_adjusted":{"type":"string","nullable":true},"balance_raw":{"type":"string","nullable":true},"balance_adjusted":{"type":"string","nullable":true},"allowance_balance_exposure_raw":{"type":"string","nullable":true},"allowance_balance_exposure_adjusted":{"type":"string","nullable":true},"allowance_covers_current_balance":{"type":"boolean"},"max_uint256_approval":{"type":"boolean"},"effectively_unlimited":{"type":"boolean"},"evidence":{"type":"object"},"limitations":{"type":"array","items":{"type":"string"}}}},"PortfolioPreflightRequest":{"type":"object","required":["address"],"additionalProperties":false,"properties":{"address":{"type":"string","example":"0x0000000000000000000000000000000000000001","description":"One 0x-prefixed 20-byte EVM address."},"chains":{"type":"array","items":{"type":"string","enum":["eip155:1","eip155:8453"]},"example":["eip155:1","eip155:8453"]},"declared_holdings":{"type":"array","maxItems":10,"items":{"type":"object","additionalProperties":false,"properties":{"chain":{"type":"string"},"token":{"type":"string"},"quantity_raw":{"type":"string"}}}}}},"PortfolioPreflightResponse":{"type":"object","required":["status","machine","methodology_version","checked_at","address","requested_chains","chains_run","chain_results","valuation","concentration","holdings","returned_holding_count","overflow_holding_count","overflow_count_complete","sources","evidence","limitations","confidence","readiness"],"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"],"description":"OK, PARTIAL, or HOLD. PARTIAL can be the expected truthful state for a large wallet when discovery reaches the 40-holding cap. PARTIAL does not necessarily mean the request failed."},"machine":{"type":"string","enum":["VM03"]},"methodology_version":{"type":"string","enum":["portfolio-preflight-0.2.0"]},"checked_at":{"type":"string"},"address":{"type":"string"},"requested_chains":{"type":"array"},"chains_run":{"type":"array"},"chain_results":{"type":"array"},"valuation":{"type":"object"},"concentration":{"type":"object"},"holdings":{"type":"array","description":"Bounded discovery snapshot. At most 40 holdings are returned. Not complete portfolio enumeration."},"returned_holding_count":{"type":"integer","description":"Number of holdings included in holdings. Maximum 40."},"overflow_holding_count":{"type":"integer","description":"Discovered holdings omitted from holdings. Greater than 0 means additional holdings exist beyond the returned snapshot."},"overflow_count_complete":{"type":"boolean","description":"Whether overflow_holding_count is a complete omitted total. false means that omitted-count total is not guaranteed complete. Treat false as an explicit limitation rather than an exhaustive count."},"sources":{"type":"array"},"evidence":{"type":"array"},"limitations":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"readiness":{"type":"object"}}},"ProductiveVenueRequest":{"type":"object","required":["chain_id","asset"],"additionalProperties":false,"properties":{"chain_id":{"type":"integer","enum":[1,8453]},"asset":{"type":"object","additionalProperties":false,"required":["kind"],"properties":{"kind":{"type":"string","enum":["native","erc20","symbol"]},"address":{"type":"string"},"symbol":{"type":"string"}}},"venue_types":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["lending","liquid_staking"]}},"protocols":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["aave_v3","lido"]}},"sort":{"type":"string","enum":["protocol","rate_desc","rate_asc"]},"limit":{"type":"integer","minimum":1,"maximum":20}}},"ProductiveVenueResponse":{"type":"object","required":["status","classification","machine","methodology_version","protocol_set_version","chain_id","asset","request","resolved","sort","result_count","truncated","omissions","retrieved_at","venues","limitations","errors","evidence"],"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"classification":{"type":"string","enum":["OBSERVED_COMPLETE","OBSERVED_PARTIAL","OBSERVED_EMPTY_SUPPORTED_SET","HOLD_UPSTREAM","HOLD_OUTPUT_REFUSED"]},"machine":{"type":"string","enum":["VM04"]},"methodology_version":{"type":"string","enum":["productive-venue-0.2.0"]},"protocol_set_version":{"type":"string"},"chain_id":{"type":"integer","enum":[1,8453]},"asset":{"type":"object"},"request":{"type":"object"},"resolved":{"type":"object"},"sort":{"type":"object"},"result_count":{"type":"integer"},"truncated":{"type":"boolean"},"omissions":{"type":"array","items":{"type":"string"}},"retrieved_at":{"type":"string"},"block_number":{"type":"string","nullable":true},"cached":{"type":"boolean"},"observation_age_ms":{"type":"integer"},"venues":{"type":"array"},"limitations":{"type":"array","items":{"type":"string"}},"errors":{"type":"array"},"evidence":{"type":"array"}}},"BazaarVisibilityRequest":{"type":"object","required":["resource","pay_to","queries"],"additionalProperties":false,"properties":{"resource":{"type":"string","format":"uri","description":"Exactly one absolute HTTPS x402 resource URL identifier. Treated as an identifier only; never fetched or proxied. Fragments, credentials, non-HTTPS, and non-443 ports are rejected."},"pay_to":{"type":"string","description":"Merchant payTo address. 0x-prefixed 20-byte EVM address."},"queries":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"string","minLength":2,"maxLength":400,"description":"Buyer-job search string. Coinbase search maximum is 400 characters."},"description":"1 to 3 buyer-supplied job-language searches. No hidden default query."}}},"BazaarVisibilityResponse":{"type":"object","required":["status","machine","methodology_version","checked_at","resource","pay_to","merchant","searches","evidence","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM05"]},"methodology_version":{"type":"string","enum":["bazaar-visibility-0.1.0"]},"checked_at":{"type":"string"},"resource":{"type":"string"},"pay_to":{"type":"string"},"merchant":{"type":"object"},"searches":{"type":"array"},"evidence":{"type":"object"},"limitations":{"type":"array","items":{"type":"string"}}}},"TransactionGasRequest":{"type":"object","required":["chain","to"],"additionalProperties":false,"properties":{"chain":{"type":"string","enum":["eip155:1","eip155:8453"],"description":"Analysis chain only. Payment remains Base eip155:8453."},"to":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Required 0x-prefixed 20-byte destination. Contract creation is not supported."},"from":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Optional 0x-prefixed 20-byte sender used only as an eth_estimateGas field. No ownership is implied."},"data":{"type":"string","pattern":"^0x(?:[0-9a-fA-F]{2})*$","maxLength":16386,"description":"Optional 0x-prefixed even-length hex calldata. Default 0x. Maximum 8192 bytes. Request body maximum 20480 bytes."},"value_wei":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","description":"Optional unsigned base-10 integer string in the uint256 range. Default 0. JSON Schema cannot express the full uint256 upper bound; runtime validation rejects values above 2^256-1."}}},"TransactionGasResponse":{"type":"object","required":["status","machine","methodology_version","checked_at","chain","gas_estimate","fee_history","illustrative_execution_fees","provider","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","UNESTIMABLE","HOLD"]},"machine":{"type":"string","enum":["VM06"]},"methodology_version":{"type":"string","enum":["transaction-gas-preflight-0.1.0"]},"checked_at":{"type":"string"},"chain":{"type":"object"},"request_shape":{"type":"object"},"gas_estimate":{"type":"object","nullable":true},"fee_history":{"type":"object","nullable":true},"illustrative_execution_fees":{"type":"object","nullable":true},"provider":{"type":"object"},"limitations":{"type":"array","items":{"type":"string"}}}},"WebChangeSnapshotRequest":{"type":"object","required":["url"],"additionalProperties":false,"properties":{"url":{"type":"string","format":"uri","description":"One absolute public HTTPS URL on port 443. No credentials in the URL. http, non-443 ports, and private/non-public targets are rejected without fetch."},"baseline":{"type":"object","additionalProperties":false,"required":["methodology_version","page_sha256","components","content_truncated","extraction_complete"],"description":"Optional caller-held compact comparison evidence. Hashes and completeness/methodology fields only. Never resend the previous webpage body.","properties":{"methodology_version":{"type":"string"},"page_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"components":{"type":"object","additionalProperties":false,"required":["final_url","http","metadata","outline","content","structured_data"],"properties":{"final_url":{"type":"string","pattern":"^[0-9a-f]{64}$"},"http":{"type":"string","pattern":"^[0-9a-f]{64}$"},"metadata":{"type":"string","pattern":"^[0-9a-f]{64}$"},"outline":{"type":"string","pattern":"^[0-9a-f]{64}$"},"content":{"type":"string","pattern":"^[0-9a-f]{64}$"},"structured_data":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"content_truncated":{"type":"boolean"},"extraction_complete":{"type":"boolean"}}}}},"WebChangeSnapshotResponse":{"type":"object","required":["status","machine","methodology_version","checked_at","requested_url","comparison_status","baseline","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM07"]},"methodology_version":{"type":"string","enum":["web-change-snapshot-0.1.0"]},"checked_at":{"type":"string"},"requested_url":{"type":"string"},"final_url":{"type":"string","nullable":true},"http":{"type":"object"},"comparison_status":{"type":"string","enum":["BASELINE","UNCHANGED","CHANGED","INCONCLUSIVE"]},"comparison_scope":{"type":"string"},"changed_components":{"type":"array","items":{"type":"string"}},"baseline":{"type":"object"},"metadata":{"type":"object"},"outline":{"type":"array"},"structured_data":{"type":"object"},"extraction":{"type":"object"},"completeness":{"type":"object"},"limitations":{"type":"array","items":{"type":"string"}}}},"X402ServiceChangeRequest":{"type":"object","required":["resource_url","method"],"additionalProperties":false,"properties":{"resource_url":{"type":"string","format":"uri","description":"One absolute public HTTPS x402 resource URL on port 443. VM08 probes this URL once after payment using the caller-supplied method."},"method":{"type":"string","enum":["GET","POST"],"description":"HTTP method for the unpaid 402 probe. Required. Discovery listings cannot invent this method. x402 does not imply every paid resource is POST."},"body":{"type":"object","description":"Optional JSON object for POST probes only. Omitted POST body is sent as {}. GET probes must not include body. No custom headers or credentials."},"baseline":{"type":"object","description":"Optional caller-held reusable payment-contract baseline from a previous VM08 OK observation. Bound to method, URL, and POST body fingerprint."},"price_policy":{"type":"object","additionalProperties":false,"properties":{"modest_increase_bps":{"type":"integer"},"max_increase_bps":{"type":"integer"}}},"discovery":{"type":"object","description":"Optional caller-supplied discovery/catalog listing. Not fetched by VM08 and not used to choose method."}}},"X402ServiceChangeResponse":{"type":"object","required":["status","machine","methodology_version","decision","baseline","limitations"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM08"]},"methodology_version":{"type":"string","enum":["x402-service-change-snapshot-0.1.0"]},"decision":{"type":"string","enum":["BASELINE_CREATED","CONTINUE","REVIEW","STOP","UNKNOWN"]},"requested_resource":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}}}},"X402PresignHandoffRequest":{"type":"object","required":["resource_url","method","payer_address","max_amount_atomic","allowed_pay_to"],"additionalProperties":false,"properties":{"resource_url":{"type":"string","format":"uri","description":"One absolute public HTTPS x402 resource URL on port 443. Probed unpaid after AM payment."},"method":{"type":"string","enum":["GET","POST"],"description":"HTTP method for the unpaid target 402 probe. Required."},"body":{"type":"object","description":"Optional JSON object for POST probes only. No custom headers or credentials."},"payer_address":{"type":"string","description":"Public EVM address whose Base USDC balanceOf is read after AM payment."},"max_amount_atomic":{"type":"string","description":"Caller maximum atomic USDC amount. Non-negative integer string."},"allowed_pay_to":{"type":"array","items":{"type":"string"},"description":"Non-empty bounded list of caller-approved payTo addresses."},"baseline":{"type":"object","description":"Optional caller-held compact baseline: request identity plus scheme/network/asset/amount/payTo."}}},"X402PresignHandoffResponse":{"type":"object","required":["status","machine","methodology_version","decision","handoff_sha256","signing","payment_execution"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM09"]},"methodology_version":{"type":"string","enum":["x402-presign-handoff-0.1.0"]},"decision":{"type":"string","enum":["READY","NOT_READY","INDETERMINATE"]},"signing":{"type":"boolean","enum":[false]},"payment_execution":{"type":"boolean","enum":[false]},"transaction_construction":{"type":"boolean","enum":[false]},"custody":{"type":"boolean","enum":[false]},"recommendation":{"type":"boolean","enum":[false]},"direct_resource_url":{"type":"string","nullable":true},"resource_identity_match":{"type":"boolean","nullable":true},"selected_requirement":{"type":"object","description":"Selected supported exact Base USDC requirement. asset_transfer_method is the resolved extra.assetTransferMethod (omitted extra defaults to eip3009). Present only when VM09 selected a requirement it qualifies.","properties":{"index":{"type":"integer"},"scheme":{"type":"string"},"network":{"type":"string"},"asset":{"type":"string"},"amount_atomic":{"type":"string"},"pay_to":{"type":"string"},"max_timeout_seconds":{"type":"integer","nullable":true},"asset_transfer_method":{"type":"string","enum":["eip3009"],"description":"VM09 V1 only qualifies eip3009. Unsupported or incomplete transfer methods never appear on a READY packet."}},"nullable":true},"reason_codes":{"type":"array","items":{"type":"string","enum":["DIRECT_CONTRACT_COMPLETE","DIRECT_CONTRACT_INCOMPLETE","SUPPORTED_SCHEME","UNSUPPORTED_SCHEME","SUPPORTED_NETWORK","UNSUPPORTED_NETWORK","SUPPORTED_ASSET","UNSUPPORTED_ASSET","PAY_TO_ALLOWED","PAY_TO_UNEXPECTED","BALANCE_SUFFICIENT","BALANCE_INSUFFICIENT","WITHIN_CALLER_LIMIT","CALLER_LIMIT_EXCEEDED","BASELINE_MATCH","MATERIAL_CONTRACT_CHANGE","REQUEST_IDENTITY_MISMATCH","RESOURCE_IDENTITY_MISMATCH","SUPPORTED_TRANSFER_METHOD","UNSUPPORTED_TRANSFER_METHOD","TRANSFER_METHOD_INCOMPLETE"]}}}},"PaymentAuthoritySnapshotRequest":{"type":"object","required":["resource_url","method","payer_address"],"additionalProperties":false,"properties":{"resource_url":{"type":"string","format":"uri","description":"One absolute public HTTPS x402 resource URL on port 443. Probed unpaid after AM payment."},"method":{"type":"string","enum":["GET","POST"],"description":"HTTP method for the unpaid target 402 probe."},"body":{"type":"object","description":"Optional JSON object for POST probes only. No custom headers or credentials."},"payer_address":{"type":"string","description":"Public EVM payer whose token balance and canonical spender allowance are read after AM payment."},"baseline":{"type":"object","description":"Optional caller-held compact VM10 authority baseline. Must include baseline_sha256 over the compact fields; tampered or foreign-methodology baselines are rejected before payment advertisement."}}},"PaymentAuthoritySnapshotResponse":{"type":"object","required":["status","machine","methodology_version","state","snapshot_sha256","signing","approval_mutation"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"machine":{"type":"string","enum":["VM10"]},"methodology_version":{"type":"string","enum":["payment-authority-snapshot-0.1.0"]},"state":{"type":"string","enum":["READY_EXISTING","APPROVAL_PATH_SPONSORED_ERC20","APPROVAL_PATH_EIP2612","DIRECT_APPROVAL_REQUIRED","NOT_READY_BALANCE","UNSUPPORTED_PROTOCOL_OR_NETWORK","INDETERMINATE"]},"signing":{"type":"boolean","enum":[false]},"payment_execution":{"type":"boolean","enum":[false]},"transaction_construction":{"type":"boolean","enum":[false]},"approval_mutation":{"type":"boolean","enum":[false]},"custody":{"type":"boolean","enum":[false]},"recommendation":{"type":"boolean","enum":[false]},"gas_sufficiency_judgment":{"type":"boolean","enum":[false]}}},"BazaarVisibilityChangeRequest":{"type":"object","required":["resource","pay_to","queries"],"additionalProperties":false,"properties":{"resource":{"type":"string","format":"uri","description":"Exactly one absolute HTTPS x402 resource URL identifier. Treated as an identifier only; never fetched. Fragments, credentials, non-HTTPS, and non-443 ports are rejected."},"pay_to":{"type":"string","description":"Merchant payTo address. 0x-prefixed 20-byte EVM address."},"queries":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"string","minLength":2,"maxLength":400},"description":"1 to 3 caller-selected buyer-job search strings. Whitespace is collapsed and the set is ordered lexicographically. Duplicate normalized queries are rejected. No hidden default query."},"baseline":{"type":"object","description":"Optional caller-held sealed VM11 baseline. Must bind resource, pay_to, normalized queries, methodology, observation, and baseline_sha256. Tampered or identity-mismatched baselines are rejected before payment advertisement. Not stored server-side."}}},"BazaarVisibilityChangeResponse":{"type":"object","required":["status","decision","machine","methodology_version","comparison_performed","deltas","current_baseline"],"additionalProperties":true,"properties":{"status":{"type":"string","enum":["OK","PARTIAL","HOLD"]},"decision":{"type":"string","enum":["BASELINE_CREATED","CONTINUE","CHANGED","HOLD"]},"machine":{"type":"string","enum":["VM11"]},"methodology_version":{"type":"string","enum":["bazaar-visibility-change-0.1.0"]},"comparison_performed":{"type":"boolean"},"material_change_classes":{"type":"array","items":{"type":"string"}},"deltas":{"type":"array"},"current_baseline":{"type":"object","nullable":true},"limitations":{"type":"array","items":{"type":"string"}}}}}},"x-am-limits":{"maxRedirects":3,"maxOutboundRequests":8,"maxResponseBytes":2097152,"perRequestTimeoutMs":5000,"overallTimeoutMs":20000,"allowedPort":443},"x-am-url-context-limits":{"maxRedirects":3,"maxOutboundRequests":4,"maxResponseBytes":262144,"perRequestTimeoutMs":5000,"overallTimeoutMs":15000,"allowedPort":443,"maxTextChars":8000,"maxHeadings":32,"maxHeadingChars":200,"maxTitleChars":300,"maxDescriptionChars":500,"maxJsonLdScripts":8,"maxJsonLdBytes":32768,"maxDates":8,"minUsefulTextChars":80},"x-am-facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","x-am-network":"eip155:8453","x-am-url-context-price":"$0.01","x-am-portfolio-preflight-price":"$0.01","x-am-productive-venue-price":"$0.01","x-am-bazaar-visibility-price":"$0.01","x-am-transaction-gas-price":"$0.005","x-am-web-change-snapshot-price":"$0.005","x-am-x402-service-change-price":"$0.01","x-am-x402-presign-handoff-price":"$0.01","x-am-payment-authority-snapshot-price":"$0.005","x-am-bazaar-visibility-change-price":"$0.005","x-am-mainnet-activated":true,"x-am-pilot-enabled":true,"x-am-bazaar-notes":{"indexes_after":"successful CDP facilitator settlement, not verify alone","registration":"no separate normal registration step","http_catalog":"https://docs.cdp.coinbase.com/x402/bazaar","external_mcp":"CDP-operated Bazaar MCP; Agent Mercantile does not run an MCP server","docs_checked_at":"2026-08-21"},"x-am-public-origin":"https://api.agentmercantile.com","x-am-human-docs":"https://agentmercantile.com/developers/","x-am-machines":["VM01","VM02","VM03","VM04","VM05","VM06","VM07","VM08","VM09","VM10","VM11"],"x-am-families":[{"family":"WEB_INTELLIGENCE","label":"Web Intelligence","machines":["VM01","VM07"]},{"family":"ONCHAIN_PREFLIGHT","label":"Onchain Preflight","machines":["VM02","VM03","VM04","VM06"]},{"family":"AGENT_COMMERCE","label":"Agent Commerce","machines":["VM05","VM08","VM09","VM10","VM11"]}],"x-am-catalog":"https://api.agentmercantile.com/v1/catalog"}