{"openapi":"3.1.0","info":{"title":"onyx-actions","version":"0.1.0"},"paths":{"/v1/onyx_agent_audit_trail":{"post":{"summary":"onyx_agent_audit_trail","operationId":"onyx_agent_audit_trail_v1_onyx_agent_audit_trail_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"wallet":{"type":"string","description":"Agent wallet address on Base (0x... 20-byte hex)."},"lookback_blocks":{"type":"integer","minimum":100,"maximum":50000,"default":5000,"description":"Block range to scan (Base is ~2s/block → 5000 blocks ≈ 2.8h, 10000 ≈ 5.5h, 50000 ≈ 28h)."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":30,"description":"Max events to return (truncated newest-first)."}},"required":["wallet"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Full payment + action audit trail for any agent wallet on Base. Returns every USDC outflow with resolved x402 destination, tool name where known, timestamp, tx hash, cumulative spend, velocity, and behavioral risk flags. The audit log every agent operator needs — what has my agent actually been paying for and when. Powers compliance, ops review, anomaly detect.","x-x402-tool":"onyx_agent_audit_trail","x-x402-price-usdc":"0.05","x-x402-tier":"metered"},"get":{"summary":"onyx_agent_audit_trail — free introspection card","operationId":"onyx_agent_audit_trail_introspect_v1_onyx_agent_audit_trail_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_agent_budget_tracker":{"post":{"summary":"onyx_agent_budget_tracker","operationId":"onyx_agent_budget_tracker_v1_onyx_agent_budget_tracker_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"wallet_address":{"type":"string","description":"0x-prefixed EVM wallet to inspect."},"direction":{"type":"string","enum":["outflows","inflows","both"],"default":"outflows","description":"outflows = wallet as sender, inflows = wallet as recipient, both = aggregated."},"include_sepolia":{"type":"boolean","default":true,"description":"Include Base Sepolia testnet activity."}},"required":["wallet_address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Per-wallet USDC spend tracker. Given a wallet address and direction (outflows / inflows / both), scans USDC Transfer events on Base + Sepolia and returns: total volume, settlement count, top recipients with cumulative spend, hourly histogram of recent activity, average ticket size. Free tier — extension of onyx_agent_id.","x-x402-tool":"onyx_agent_budget_tracker","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_agent_budget_tracker — free introspection card","operationId":"onyx_agent_budget_tracker_introspect_v1_onyx_agent_budget_tracker_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_agent_id":{"post":{"summary":"onyx_agent_id","operationId":"onyx_agent_id_v1_onyx_agent_id_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"wallet_address":{"type":"string","description":"0x-prefixed EVM wallet address of the agent to look up."},"include_sepolia":{"type":"boolean","default":true,"description":"Include Base Sepolia activity in the score (test traffic)."}},"required":["wallet_address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Look up an agent (EVM wallet) and return a reputation card: x402-style USDC settlements in the last ~24h window (50k Base blocks), distinct recipients (paid-service operators), networks used, total volume, and 0-100 reputation score with reasoning. Reads Base + Base Sepolia public RPCs (no key). Free tier — useful for tools deciding rate limits, returning-customer discounts, or trust extension.","x-x402-tool":"onyx_agent_id","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_agent_id — free introspection card","operationId":"onyx_agent_id_introspect_v1_onyx_agent_id_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_agent_reputation":{"post":{"summary":"onyx_agent_reputation","operationId":"onyx_agent_reputation_v1_onyx_agent_reputation_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"agent_id":{"type":"integer","description":"The agent's ERC-8004 identity id (the ERC-721 tokenId in the IdentityRegistry)."}},"required":["agent_id"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Vet another AI agent before you trust it — via the live ERC-8004 registries on Base. Give an agent's ERC-8004 id; get its on-chain identity (is it registered? owner), its verified receiving wallet, its AgentCard URI, and its reputation summary (feedback count + aggregate score) — returned as a TRUSTED / NEW / CAUTION / UNKNOWN verdict with a 0-100 trust score, Ed25519-signed. The check an agent runs on a counterparty agent before paying, delegating, or accepting its output. Unregistered = unveri","x-x402-tool":"onyx_agent_reputation","x-x402-price-usdc":"0.05","x-x402-tier":"metered"},"get":{"summary":"onyx_agent_reputation — free introspection card","operationId":"onyx_agent_reputation_introspect_v1_onyx_agent_reputation_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_agent_workflow":{"post":{"summary":"onyx_agent_workflow","operationId":"onyx_agent_workflow_v1_onyx_agent_workflow_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"steps":{"type":"array","description":"Ordered list of {tool, args}","items":{"type":"object","properties":{"tool":{"type":"string"},"args":{"type":"object"}},"required":["tool"]},"minItems":1,"maxItems":10}},"required":["steps"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Run a multi-step workflow across Onyx tools in one paid call. Each step names a tool and its args; later steps can reference earlier outputs via {\"$ref\": \"step_N.field\"} or {\"$prev\": \"field\"}. Saves agents the round-trip + per-call gas of N separate x402 settles when they know the chain in advance — e.g. validate email → check domain DNS → solve captcha → submit form, all atomic. Stops on first step error and returns partial results. Cheaper than the unit-call sum because it bundles.","x-x402-tool":"onyx_agent_workflow","x-x402-price-usdc":"0.020","x-x402-tier":"metered"},"get":{"summary":"onyx_agent_workflow — free introspection card","operationId":"onyx_agent_workflow_introspect_v1_onyx_agent_workflow_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_aml_screen":{"post":{"summary":"onyx_aml_screen","operationId":"onyx_aml_screen_v1_onyx_aml_screen_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"address":{"type":"string","description":"0x-prefixed EVM address to screen"},"chain":{"type":"string","description":"Chain to screen on: 'base' (default) or 'ethereum'. Both query the same OFAC oracle; chain affects the risk-factor heuristics only.","default":"base"}},"required":["address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"KYC/AML sanctions + risk screen for any EVM address. Returns OFAC sanctions hit (via Chainalysis on-chain oracle), 0-100 risk score, verdict (sanctioned/safe/caution/high_risk/blocked), and ranked risk_factors (address age, transaction throughput, contract status, mixer interaction). Designed for Permitted Payment Stablecoin Issuers, agent-payment platforms, and any compliance gate forced by the GENIUS Act (July 2026). Sub-second latency. Coinbase's PROJECT-IDEAS.md explicitly calls for this pri","x-x402-tool":"onyx_aml_screen","x-x402-price-usdc":"0.25","x-x402-tier":"premium"},"get":{"summary":"onyx_aml_screen — free introspection card","operationId":"onyx_aml_screen_introspect_v1_onyx_aml_screen_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_arb_finder":{"post":{"summary":"onyx_arb_finder","operationId":"onyx_arb_finder_v1_onyx_arb_finder_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"capability":{"type":"string","description":"Capability keyword to compare. E.g. 'tx_explainer', 'token_risk', 'captcha', 'swap_quote'."},"onyx_price_usdc":{"type":"number","description":"Onyx's price for this capability. Used as the comparison anchor. Default 0 = treat Onyx as if-we-shipped-free."},"network":{"type":"string","description":"Optional network filter: 'base', 'solana', 'eip155:8453'. Empty = all."},"max_peers":{"type":"integer","minimum":1,"maximum":30,"default":8}},"required":["capability"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Price arbitrage between Onyx Actions and peer x402 services. For any capability (e.g. 'tx_explainer', 'captcha'), queries the full CDP discovery corpus, identifies matching peer endpoints, computes price delta vs the Onyx native tool, and produces a one-line competitive pitch ('Onyx is 50% cheaper than OATP at $0.05 vs $0.10'). Use for competitive intel, marketing copy, or pricing decisions.","x-x402-tool":"onyx_arb_finder","x-x402-price-usdc":"0.003","x-x402-tier":"metered"},"get":{"summary":"onyx_arb_finder — free introspection card","operationId":"onyx_arb_finder_introspect_v1_onyx_arb_finder_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_attestation_verify":{"post":{"summary":"onyx_attestation_verify","operationId":"onyx_attestation_verify_v1_onyx_attestation_verify_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"payload":{"type":"object","description":"The full Onyx-signed result to verify, including its onyx_attestation block (exactly as returned by an Onyx tool)."}},"required":["payload"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Verify an Onyx-signed security verdict. Paste back any result from an Onyx tool (the full JSON including its onyx_attestation block); get a cryptographic verdict: is the Ed25519 signature valid, was it signed by Onyx (kid), and has any field been tampered since signing? FREE. Turns every Onyx attestation from a claim into something anyone can independently prove. Cross-check the kid against /.well-known/onyx-pubkey.","x-x402-tool":"onyx_attestation_verify","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_attestation_verify — free introspection card","operationId":"onyx_attestation_verify_introspect_v1_onyx_attestation_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_base_bridge_quote":{"post":{"summary":"onyx_base_bridge_quote","operationId":"onyx_base_bridge_quote_v1_onyx_base_bridge_quote_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"to_chain_id":{"type":"integer","description":"Destination chain ID. 1=Ethereum, 10=Optimism, 42161=Arbitrum, 137=Polygon, 56=BSC, 43114=Avalanche, 250=Fantom, 8453=Base (same chain - use swap_quote instead)."},"from_token":{"type":"string","description":"Source token address on Base (0x...). Use 0x0000000000000000000000000000000000000000 for native ETH."},"to_token":{"type":"string","description":"Destination token address on destination chain (0x...)."},"from_amount":{"type":"string","description":"Atomic amount on source side (decimal string). E.g. 100 USDC = '100000000'."},"from_address":{"type":"string","description":"Optional: sender address for routes that need it. Default = 0x...0001 (LI.FI accepts any for quote)."}},"required":["to_chain_id","from_token","to_token","from_amount"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Cross-chain bridge quote starting from Base. Best-route across ~30 bridges (Across, Hop, Stargate, cBridge, Connext, Hyphen, Mayan, ...) via LI.FI aggregator. Returns toAmount, fee breakdown, gas cost, estimated bridge tool, approval address, ETA. Use when an agent on Base needs USDC/ETH/etc. on another chain.","x-x402-tool":"onyx_base_bridge_quote","x-x402-price-usdc":"0.003","x-x402-tier":"metered"},"get":{"summary":"onyx_base_bridge_quote — free introspection card","operationId":"onyx_base_bridge_quote_introspect_v1_onyx_base_bridge_quote_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_base_contract_verify":{"post":{"summary":"onyx_base_contract_verify","operationId":"onyx_base_contract_verify_v1_onyx_base_contract_verify_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"address":{"type":"string","description":"Contract address on Base mainnet (0x... 20-byte hex)."},"include_full_abi":{"type":"boolean","default":false,"description":"If true, return the full ABI array (can be large). Otherwise just the entry count + function/event name list."},"include_source":{"type":"boolean","default":false,"description":"If true, return full source code (can be 10s of KB). Otherwise just the byte length."},"resolve_proxy":{"type":"boolean","default":true,"description":"If true and address is a proxy, also fetch the implementation contract's metadata."}},"required":["address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Contract verification + ABI metadata for any Base address. Returns is_verified, contract name, compiler version, language, optimization, ABI entry count, license, source code size. Auto-detects EIP-1967/OZ/UUPS proxies and resolves to the implementation contract. Backed by Blockscout (free, no auth). Use before any swap or interaction — unverified contracts are an instant red flag.","x-x402-tool":"onyx_base_contract_verify","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_base_contract_verify — free introspection card","operationId":"onyx_base_contract_verify_introspect_v1_onyx_base_contract_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_base_dex_pair_lookup":{"post":{"summary":"onyx_base_dex_pair_lookup","operationId":"onyx_base_dex_pair_lookup_v1_onyx_base_dex_pair_lookup_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"token_address":{"type":"string","description":"Token contract address on Base mainnet (0x...)."},"limit":{"type":"integer","minimum":1,"maximum":30,"default":10,"description":"Max pairs to return (sorted by liquidity desc)."}},"required":["token_address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Every DEX pair for a Base token: DEX name, price USD, 24h volume, liquidity USD, price-change percentages (5m/1h/6h/24h), pool fees. Sorted by liquidity. Backed by DexScreener (free). Use to find where a token is actually trading before routing a swap or assessing rug risk via volume/liquidity ratios.","x-x402-tool":"onyx_base_dex_pair_lookup","x-x402-price-usdc":"0.0015","x-x402-tier":"metered"},"get":{"summary":"onyx_base_dex_pair_lookup — free introspection card","operationId":"onyx_base_dex_pair_lookup_introspect_v1_onyx_base_dex_pair_lookup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_base_event_logs":{"post":{"summary":"onyx_base_event_logs","operationId":"onyx_base_event_logs_v1_onyx_base_event_logs_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"address":{"type":"string","description":"Contract address (0x... 20-byte hex) to fetch logs for."},"from_block":{"type":"string","description":"Start block: hex ('0x12345'), decimal ('1234567'), or 'latest'. Default = latest - 100."},"to_block":{"type":"string","description":"End block. Default = 'latest'."},"topic0":{"type":"string","description":"Optional event signature hash (32-byte hex) to filter on. E.g. Transfer = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef."},"limit":{"type":"integer","minimum":1,"maximum":500,"default":50,"description":"Max log entries to return."}},"required":["address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Fetch contract event logs from Base mainnet via eth_getLogs. Returns structured logs with topics, raw data, block+tx info, plus optional event-signature decode for common ERC-20/721/1155 events (Transfer, Approval, OwnershipTransferred). Supports block range filter (default last 100 blocks) and topic-0 filter for narrowing to specific events.","x-x402-tool":"onyx_base_event_logs","x-x402-price-usdc":"0.003","x-x402-tier":"metered"},"get":{"summary":"onyx_base_event_logs — free introspection card","operationId":"onyx_base_event_logs_introspect_v1_onyx_base_event_logs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_base_swap_quote":{"post":{"summary":"onyx_base_swap_quote","operationId":"onyx_base_swap_quote_v1_onyx_base_swap_quote_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"token_in":{"type":"string","description":"Address of input token (0x... on Base mainnet). Use 0x4200000000000000000000000000000000000006 for WETH."},"token_out":{"type":"string","description":"Address of output token (0x... on Base mainnet)."},"amount_in":{"type":"string","description":"Atomic input amount (decimal string). E.g. 1 ETH = '1000000000000000000'; 100 USDC = '100000000'."}},"required":["token_in","token_out","amount_in"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Best-route swap quote on Base across all major DEXes (Uniswap V2/V3, Aerodrome, BaseSwap, PancakeSwap, plus ~12 others) via KyberSwap aggregator. Returns amountOut, USD value, gas estimate, route hops, price impact. Same role as Jupiter on Solana — most agents need this before any on-chain swap.","x-x402-tool":"onyx_base_swap_quote","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_base_swap_quote — free introspection card","operationId":"onyx_base_swap_quote_introspect_v1_onyx_base_swap_quote_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_base_token_risk_scan":{"post":{"summary":"onyx_base_token_risk_scan","operationId":"onyx_base_token_risk_scan_v1_onyx_base_token_risk_scan_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"address":{"type":"string","description":"0x-prefixed ERC-20 contract address on Base"}},"required":["address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Risk-scan any ERC-20 token on Base mainnet. Returns ownership status (renounced or active owner address), mint authority (still mintable?), top-1 / top-10 holder concentration via balanceOf probes, contract age in days, basic honeypot signal (eth_call swapExactETHForTokens against Aerodrome to detect transfer blocks), and a 0-100 risk score with verdict (safe / caution / high_risk). Use before a trading agent buys a freshly minted token — saves blowing the entire position on a rug. Direct equiva","x-x402-tool":"onyx_base_token_risk_scan","x-x402-price-usdc":"0.25","x-x402-tier":"metered"},"get":{"summary":"onyx_base_token_risk_scan — free introspection card","operationId":"onyx_base_token_risk_scan_introspect_v1_onyx_base_token_risk_scan_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_base_tx_decode":{"post":{"summary":"onyx_base_tx_decode","operationId":"onyx_base_tx_decode_v1_onyx_base_tx_decode_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"tx_hash":{"type":"string","description":"0x-prefixed Base tx hash"}},"required":["tx_hash"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Fetch a Base mainnet transaction by hash and return a human-readable summary: from/to, value (ETH + USD-est), gas used, status, block, input data length, and the function selector decoded if it matches a known signature. Use when a trading agent needs to inspect a tx before or after settlement — pairs with onyx_token_metadata for full context. Reads from Base's public RPC (no key needed). Demo mode returns a synthetic record.","x-x402-tool":"onyx_base_tx_decode","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_base_tx_decode — free introspection card","operationId":"onyx_base_tx_decode_introspect_v1_onyx_base_tx_decode_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_base_tx_explainer":{"post":{"summary":"onyx_base_tx_explainer","operationId":"onyx_base_tx_explainer_v1_onyx_base_tx_explainer_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"tx_hash":{"type":"string","description":"0x-prefixed Base tx hash"}},"required":["tx_hash"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Decode a Base mainnet transaction into a human-readable summary. Returns a one-line plain-English description of what happened (token transfers, swaps, approvals, contract deploys), ERC-20 transfer events with symbol resolution, balance changes per address, the function selector + decoded method name where it matches a known signature, gas used, fee in ETH, and tx status. Use when a trading agent needs to verify what a tx actually did before/after settlement, or when a wallet agent needs to expl","x-x402-tool":"onyx_base_tx_explainer","x-x402-price-usdc":"0.05","x-x402-tier":"metered"},"get":{"summary":"onyx_base_tx_explainer — free introspection card","operationId":"onyx_base_tx_explainer_introspect_v1_onyx_base_tx_explainer_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_base_tx_simulator":{"post":{"summary":"onyx_base_tx_simulator","operationId":"onyx_base_tx_simulator_v1_onyx_base_tx_simulator_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"from_address":{"type":"string","description":"0x-prefixed sender"},"to_address":{"type":"string","description":"0x-prefixed contract or wallet"},"data":{"type":"string","description":"Hex-encoded calldata (default 0x)"},"value_wei":{"type":"string","description":"ETH wei to send (default 0)"},"block":{"type":"string","description":"block tag (latest/pending/0x...) default latest"}},"required":["to_address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Simulate a Base mainnet transaction before sending it. Returns success/revert prediction, the revert reason if any, decoded return data, and an estimated gas figure. Use as a pre-flight check inside a trading agent's tool-call dispatcher — agents should simulate before signing to avoid paying gas on a doomed tx. Direct equivalent of OATP's Solana tx_simulator ($0.20, 1,304 unique paying agents) — Onyx is the first to ship this on Base mainnet at $0.10. Read-only — never submits.","x-x402-tool":"onyx_base_tx_simulator","x-x402-price-usdc":"0.10","x-x402-tier":"metered"},"get":{"summary":"onyx_base_tx_simulator — free introspection card","operationId":"onyx_base_tx_simulator_introspect_v1_onyx_base_tx_simulator_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_bazaar_blue_ocean":{"post":{"summary":"onyx_bazaar_blue_ocean","operationId":"onyx_bazaar_blue_ocean_v1_onyx_bazaar_blue_ocean_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"seed_keywords":{"type":"array","items":{"type":"string"},"description":"Optional list of candidate niche keywords to check. Empty = auto-mine from CDP data.","default":[]},"network":{"type":"string","enum":["base","solana","all"],"default":"all","description":"Filter CDP corpus by network. 'base' counts both eip155:8453 and 'base' string variants."},"max_niches":{"type":"integer","minimum":5,"maximum":50,"default":15}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Find empty niches in the x402 paid-MCP market. Reads CDP discovery (1000+ live services), clusters by keyword, surfaces categories with 0-1 services. Use to position a new paid tool in an uncontested slot. Returns: empty_niches (no services), thin_niches (1-2 services), saturated (5+ services to avoid), plus a recommended build target.","x-x402-tool":"onyx_bazaar_blue_ocean","x-x402-price-usdc":"0.01","x-x402-tier":"metered"},"get":{"summary":"onyx_bazaar_blue_ocean — free introspection card","operationId":"onyx_bazaar_blue_ocean_introspect_v1_onyx_bazaar_blue_ocean_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_bazaar_compare":{"post":{"summary":"onyx_bazaar_compare","operationId":"onyx_bazaar_compare_v1_onyx_bazaar_compare_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"query":{"type":"string","description":"Keyword to match in domain, resource URL, or description (case-insensitive). Empty string = no filter."},"network":{"type":"string","description":"Filter by network: 'Base', 'Solana', 'Polygon', etc. Omit for all networks."},"sort_by":{"type":"string","enum":["price_asc","volume_desc","payers_desc","freshness_desc"],"default":"volume_desc","description":"Ranking order. price_asc = cheapest first; volume_desc = most-called first; payers_desc = most unique buyers; freshness_desc = most-recently-called first."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10}},"required":["query"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Side-by-side comparison of paid agent tools across the x402 ecosystem. Filter by keyword (e.g. 'captcha', 'tx_explainer', 'aml', 'browser', 'oauth') and network ('Base' / 'Solana' / etc.), rank by price, 30-day call volume, or unique payer count, and get cheapest/most-used picks. Reads Coinbase Bazaar via the public Onyx mirror — refreshed every 15 minutes. Free tier.","x-x402-tool":"onyx_bazaar_compare","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_bazaar_compare — free introspection card","operationId":"onyx_bazaar_compare_introspect_v1_onyx_bazaar_compare_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_bazaar_submit":{"post":{"summary":"onyx_bazaar_submit","operationId":"onyx_bazaar_submit_v1_onyx_bazaar_submit_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"server_url":{"type":"string","description":"Base URL of the x402 service to audit (e.g. https://onyx-actions.onrender.com)."}},"required":["server_url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Indexability audit for any x402 service. Inspects the published surface (/openapi.json, /.well-known/x402.json, /manifest) against what Coinbase Bazaar's discovery crawler looks for, and returns a structured checklist: what's present, what's missing, what to fix. Crawler is poll-based — this tool documents the criteria, doesn't force-submit. Free tier.","x-x402-tool":"onyx_bazaar_submit","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_bazaar_submit — free introspection card","operationId":"onyx_bazaar_submit_introspect_v1_onyx_bazaar_submit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_browser_click":{"post":{"summary":"onyx_browser_click","operationId":"onyx_browser_click_v1_onyx_browser_click_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"text":{"type":"string","description":"Substring of the element's visible text"}},"required":["text"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Click the first visible button or link whose text matches the query (case-insensitive substring match). Returns whether a match was found and the matched element's text + href. Use after onyx_browser_extract to act on what the page advertised. Demo mode returns synthetic OK.","x-x402-tool":"onyx_browser_click","x-x402-price-usdc":"0.003","x-x402-tier":"metered"},"get":{"summary":"onyx_browser_click — free introspection card","operationId":"onyx_browser_click_introspect_v1_onyx_browser_click_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_browser_eval":{"post":{"summary":"onyx_browser_eval","operationId":"onyx_browser_eval_v1_onyx_browser_eval_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"expression":{"type":"string","description":"JavaScript expression. Last value is returned."},"await_promise":{"type":"boolean","default":false,"description":"If the expression returns a Promise, wait for it."}},"required":["expression"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Evaluate a JavaScript expression on the current CDP-controlled Chrome page and return the result by value. Use as a power-tool when the specific click/extract/type tools don't fit — pull deeply nested DOM data, dispatch synthetic events, read computed styles. Demo mode echoes the expression length without executing.","x-x402-tool":"onyx_browser_eval","x-x402-price-usdc":"0.004","x-x402-tier":"metered"},"get":{"summary":"onyx_browser_eval — free introspection card","operationId":"onyx_browser_eval_introspect_v1_onyx_browser_eval_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_browser_extract":{"post":{"summary":"onyx_browser_extract","operationId":"onyx_browser_extract_v1_onyx_browser_extract_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"max_chars":{"type":"integer","default":4000,"description":"Cap on returned text length (max 80000)"}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Read the current CDP-controlled Chrome page and return the visible text content plus a structured summary of clickable elements: buttons, links (with hrefs), inputs (with names/placeholders/types). Use when an agent needs to plan its next action — list what's on the page without screenshotting + vision-modeling. Cheap, structured, deterministic. Demo mode returns a plausible synthetic page summary.","x-x402-tool":"onyx_browser_extract","x-x402-price-usdc":"0.003","x-x402-tier":"metered"},"get":{"summary":"onyx_browser_extract — free introspection card","operationId":"onyx_browser_extract_introspect_v1_onyx_browser_extract_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_browser_navigate":{"post":{"summary":"onyx_browser_navigate","operationId":"onyx_browser_navigate_v1_onyx_browser_navigate_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"url":{"type":"string","description":"URL to navigate to"},"wait_seconds":{"type":"number","default":1.5,"description":"Settle time after navigation"}},"required":["url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Navigate a Chrome DevTools Protocol session to a target URL and wait for load. Returns the final URL after redirects, page title, and elapsed wait time. Use as the first step of a browser-agent workflow — screenshot/click/type tools below act on whatever page this lands on. Demo mode (default in cloud) returns a plausible synthetic result; self-host with ONYX_CDP_URL pointed at your Chrome (--remote-debugging-port=9222) for real navigation.","x-x402-tool":"onyx_browser_navigate","x-x402-price-usdc":"0.005","x-x402-tier":"metered"},"get":{"summary":"onyx_browser_navigate — free introspection card","operationId":"onyx_browser_navigate_introspect_v1_onyx_browser_navigate_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_browser_screenshot":{"post":{"summary":"onyx_browser_screenshot","operationId":"onyx_browser_screenshot_v1_onyx_browser_screenshot_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"format":{"type":"string","enum":["png","jpeg"],"default":"png"},"full_page":{"type":"boolean","default":false,"description":"Capture full scrollable page or just viewport"}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Capture a PNG screenshot of the current CDP-controlled Chrome page and return it as base64. Use to feed a vision-LLM (Claude / GPT-4V) for screen-understanding agents, or to archive an action's visual result. Returns also the page title, URL, and viewport dimensions. Cap of 1MB returned. Demo mode returns a synthetic 1×1 PNG; self-host with ONYX_CDP_URL for real captures.","x-x402-tool":"onyx_browser_screenshot","x-x402-price-usdc":"0.008","x-x402-tier":"metered"},"get":{"summary":"onyx_browser_screenshot — free introspection card","operationId":"onyx_browser_screenshot_introspect_v1_onyx_browser_screenshot_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_browser_type":{"post":{"summary":"onyx_browser_type","operationId":"onyx_browser_type_v1_onyx_browser_type_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"selector":{"type":"string","description":"Name, id (#foo), CSS selector, or visible label substring"},"value":{"type":"string","description":"Text to enter"}},"required":["selector","value"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Find an input/textarea/select on the current CDP page by its name, id, or visible label, set its value via the React-safe native setter, and fire input + change events so frameworks like React/Vue see the update. Use after onyx_browser_navigate when an agent fills a form. Returns the field selector matched and the final value. Demo mode returns synthetic OK.","x-x402-tool":"onyx_browser_type","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_browser_type — free introspection card","operationId":"onyx_browser_type_introspect_v1_onyx_browser_type_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_capability_bundle":{"post":{"summary":"onyx_capability_bundle","operationId":"onyx_capability_bundle_v1_onyx_capability_bundle_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"bundle":{"type":"string","enum":["safety_check_base","tx_full_inspect","swap_prep","cross_chain","agent_kyc"],"description":"Which predefined bundle to execute."},"args":{"type":"object","description":"Shared input args for all tools in the bundle. Required keys per bundle: safety_check_base=[address], tx_full_inspect=[tx_hash], swap_prep=[token_in,token_out,amount_in], cross_chain=[token_in,token_out,amount_in,to_chain_id], agent_kyc=[wallet_or_did]."},"stop_on_error":{"type":"boolean","default":true,"description":"If true, halts on first tool error and returns partial results. If false, continues all tools."}},"required":["bundle","args"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Bundle 3-5 Onyx tools into one paid call at a discount. Atomic delivery (all-or-none), one AR-1 receipt for the whole chain, single x402 settlement vs N separate. Predefined bundles for proven workflows: safety_check_base (verify + risk_scan + audit), tx_full_inspect (explainer + simulator + decode), swap_prep (risk + dex_pair + quote), cross_chain (swap + bridge + chain_picker), agent_kyc (id + kya + oai).","x-x402-tool":"onyx_capability_bundle","x-x402-price-usdc":"0.02","x-x402-tier":"metered"},"get":{"summary":"onyx_capability_bundle — free introspection card","operationId":"onyx_capability_bundle_introspect_v1_onyx_capability_bundle_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_contract_audit":{"post":{"summary":"onyx_contract_audit","operationId":"onyx_contract_audit_v1_onyx_contract_audit_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"address":{"type":"string","description":"Contract address on Base mainnet (0x... 20-byte hex)."},"deep":{"type":"boolean","default":true,"description":"Run the optional AI deep-pass for novel/business-logic bugs (only fires if the server has an AI key configured; degrades gracefully otherwise)."}},"required":["address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Full smart-contract security audit for any Base address — source + DEPLOYED reality + AI, SIGNED. Fetches verified source, runs curated static vuln detectors (tx.origin auth, delegatecall, selfdestruct, unchecked calls, unprotected init, owner mint/pause/blacklist, mutable fees), AND flags the live on-chain risks a static audit misses — upgradeable proxies (owner can swap logic post-audit) and self-destructed contracts. Optional Claude deep-pass for novel bugs. Returns ALLOW/REVIEW/BLOCK + 0-100","x-x402-tool":"onyx_contract_audit","x-x402-price-usdc":"0.50","x-x402-tier":"metered"},"get":{"summary":"onyx_contract_audit — free introspection card","operationId":"onyx_contract_audit_introspect_v1_onyx_contract_audit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_dns_lookup":{"post":{"summary":"onyx_dns_lookup","operationId":"onyx_dns_lookup_v1_onyx_dns_lookup_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"host":{"type":"string","description":"Domain (example.com) or IP address"}},"required":["host"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Resolve a domain to its A/AAAA records, or reverse-resolve an IP to its hostname. Useful for validating a domain exists before scraping, checking if two domains share infrastructure, mapping CDN origins, or doing safety lookups before agents call third-party APIs. Returns IPv4, IPv6, canonical hostname, and resolution time. Powered by stdlib so results are whatever the host's DNS resolver returns — typically 20-100ms.","x-x402-tool":"onyx_dns_lookup","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_dns_lookup — free introspection card","operationId":"onyx_dns_lookup_introspect_v1_onyx_dns_lookup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_email_validate":{"post":{"summary":"onyx_email_validate","operationId":"onyx_email_validate_v1_onyx_email_validate_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"email":{"type":"string","description":"Address to validate"}},"required":["email"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Validate an email address: RFC-5322 syntax check, domain DNS resolution (does the domain exist?), and disposable-provider detection (Mailinator, 10minutemail, GuerrillaMail, etc.). Returns a single confidence verdict plus the underlying signals so agents can decide whether to send. Use before mailing list signups, password-reset flows, or sales-lead capture to filter out trash addresses cheaply. ~30-80ms typical.","x-x402-tool":"onyx_email_validate","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_email_validate — free introspection card","operationId":"onyx_email_validate_introspect_v1_onyx_email_validate_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_ens_resolve":{"post":{"summary":"onyx_ens_resolve","operationId":"onyx_ens_resolve_v1_onyx_ens_resolve_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"name":{"type":"string","description":"ENS name (foo.eth) or 0x-address for reverse"}},"required":["name"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Resolve an ENS name to its current Ethereum mainnet address (or vice versa). Returns the canonical address, avatar URL if set, and the resolver contract that returned it. Use when an agent encounters a human-readable name like 'vitalik.eth' and needs to send funds or validate identity. Reads via the public ensideas API (no key, no rate-limit pain for typical agent traffic). ~200-500ms.","x-x402-tool":"onyx_ens_resolve","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_ens_resolve — free introspection card","operationId":"onyx_ens_resolve_introspect_v1_onyx_ens_resolve_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_facilitator_health":{"post":{"summary":"onyx_facilitator_health","operationId":"onyx_facilitator_health_v1_onyx_facilitator_health_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"include_capabilities":{"type":"boolean","default":true,"description":"Also probe each facilitator's /supported endpoint to enumerate networks + schemes."},"timeout_seconds":{"type":"number","default":6.0,"description":"Per-facilitator HTTP timeout. Max 15."}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Live up/down + latency probe for all 5 known x402 facilitators (Coinbase CDP, x402.org public, xpay.sh, cronos-x402, faremeter). Returns per-facilitator status, response time, capabilities probe, plus ecosystem-wide health score. Free tier — agents shouldn't hardcode a single facilitator; this lets them pick a live one.","x-x402-tool":"onyx_facilitator_health","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_facilitator_health — free introspection card","operationId":"onyx_facilitator_health_introspect_v1_onyx_facilitator_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_fact_check":{"post":{"summary":"onyx_fact_check","operationId":"onyx_fact_check_v1_onyx_fact_check_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"claim":{"type":"string","description":"The factual statement to verify. E.g. 'The 2026 G20 summit will be hosted in Cape Town' or 'USDC supply on Base mainnet exceeds $5B'."},"max_sources":{"type":"integer","description":"Maximum number of sources to return (1-15, default 8)","default":8}},"required":["claim"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Fact-check any claim by fetching real-time web evidence. Returns supporting sources, contradicting sources, a 0-100 confidence score, and a short summary. Use for prediction-market resolvers, news-fact agents, journalist-bot pipelines, or any agent that needs to verify a statement before acting on it. Sub-second latency, no API key on the caller side. Coinbase PROJECT-IDEAS.md explicitly calls for this primitive.","x-x402-tool":"onyx_fact_check","x-x402-price-usdc":"0.05","x-x402-tier":"premium"},"get":{"summary":"onyx_fact_check — free introspection card","operationId":"onyx_fact_check_introspect_v1_onyx_fact_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_fx_convert":{"post":{"summary":"onyx_fx_convert","operationId":"onyx_fx_convert_v1_onyx_fx_convert_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"from":{"type":"string","description":"ISO-4217 source currency code"},"to":{"type":"string","description":"ISO-4217 target currency code"},"amount":{"type":"number","default":1.0}},"required":["from","to"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Convert between any two fiat currencies (USD, EUR, GBP, JPY, BRL, USDC-equivalent, 160+ ISO-4217 codes) at the current mid-market rate. Returns both the rate and the converted amount, plus the rate's last update timestamp. Use when an agent needs to price a service in another currency, normalize multi-currency invoices, or convert x402 USDC amounts to local fiat for human-readable receipts. Powered by open.er-api.com (free tier, no key). ~150-400ms. Demo mode returns USD-EUR @ 0.92 for testing.","x-x402-tool":"onyx_fx_convert","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_fx_convert — free introspection card","operationId":"onyx_fx_convert_introspect_v1_onyx_fx_convert_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_hash_compute":{"post":{"summary":"onyx_hash_compute","operationId":"onyx_hash_compute_v1_onyx_hash_compute_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"text":{"type":"string","description":"UTF-8 string to hash"},"b64":{"type":"string","description":"Or: base64-encoded bytes"}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Compute md5, sha1, sha256, sha512, and sha3-256 of any text or base64-encoded bytes. Returns each digest as both hex and base64. Use for content-addressed lookups, dedupe keys, signature verification support, or fingerprinting. Stdlib-only — runs locally, never logs input. <2ms.","x-x402-tool":"onyx_hash_compute","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_hash_compute — free introspection card","operationId":"onyx_hash_compute_introspect_v1_onyx_hash_compute_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_html_meta":{"post":{"summary":"onyx_html_meta","operationId":"onyx_html_meta_v1_onyx_html_meta_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"url":{"type":"string","description":"URL to inspect"}},"required":["url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Fetch a URL and extract OpenGraph + Twitter Card + standard meta tags: og:title, og:description, og:image, og:type, twitter:card, twitter:image, canonical link, favicon, JSON-LD blocks. Use when an agent needs to preview a link before sharing, build a citation card, or detect spam/ads via meta-tag fingerprints. Stripped of HTML noise. ~150-500ms typical.","x-x402-tool":"onyx_html_meta","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_html_meta — free introspection card","operationId":"onyx_html_meta_introspect_v1_onyx_html_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_ip_geolocate":{"post":{"summary":"onyx_ip_geolocate","operationId":"onyx_ip_geolocate_v1_onyx_ip_geolocate_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"ip":{"type":"string","description":"IPv4 or IPv6 address"}},"required":["ip"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Geolocate any public IPv4/IPv6 address — country, region, city, lat/lon, timezone, ISP, ASN, mobile/proxy/hosting flags. Useful for filtering traffic by country, detecting datacenter/VPN egress, fraud scoring, or deciding which regional endpoint to route an agent through. Backed by ip-api.com (free tier, ~1k requests/min). ~80-200ms typical. Demo mode returns a plausible US record so the payment loop can be tested without burning the upstream rate limit.","x-x402-tool":"onyx_ip_geolocate","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_ip_geolocate — free introspection card","operationId":"onyx_ip_geolocate_introspect_v1_onyx_ip_geolocate_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_jwt_decode":{"post":{"summary":"onyx_jwt_decode","operationId":"onyx_jwt_decode_v1_onyx_jwt_decode_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"token":{"type":"string","description":"JWT (three base64url segments separated by .)"}},"required":["token"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Decode a JWT (header + payload) without verifying the signature. Returns the algorithm, key id, all claims (iss, sub, aud, exp, iat, nbf, custom), expiry status, and any structural anomalies. Use when an agent receives a token from an external API and needs to inspect it for routing, expiry, or audit logging. Stdlib-only — runs locally, never sends the token anywhere.","x-x402-tool":"onyx_jwt_decode","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_jwt_decode — free introspection card","operationId":"onyx_jwt_decode_introspect_v1_onyx_jwt_decode_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_market_pulse":{"post":{"summary":"onyx_market_pulse","operationId":"onyx_market_pulse_v1_onyx_market_pulse_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"compare_onyx_prices":{"type":"boolean","default":true,"description":"If true, include the Onyx pricing audit (our prices vs market median for matching capabilities)."},"blue_ocean_keywords":{"type":"array","items":{"type":"string"},"description":"Optional candidate capability tokens to check for blue-ocean status. Default = curated baseline of ~30 high-frequency agent capabilities."}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"One-call market snapshot of the paid x402 MCP economy. Returns top services by CDP visibility, blue-ocean niches with zero peers, saturated niches (5+ peers), Onyx pricing audit (over/under market by tool), and per-network split. Bloomberg-terminal for the agentic economy. Use for competitive intel, pricing decisions, niche selection.","x-x402-tool":"onyx_market_pulse","x-x402-price-usdc":"0.02","x-x402-tier":"metered"},"get":{"summary":"onyx_market_pulse — free introspection card","operationId":"onyx_market_pulse_introspect_v1_onyx_market_pulse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_mcp_catalog_diff":{"post":{"summary":"onyx_mcp_catalog_diff","operationId":"onyx_mcp_catalog_diff_v1_onyx_mcp_catalog_diff_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"server_a":{"type":"string","description":"Base URL of the first MCP server (e.g. https://onyx-actions.onrender.com)."},"server_b":{"type":"string","description":"Base URL of the second MCP server."}},"required":["server_a","server_b"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Side-by-side tool catalog diff between any two MCP servers. Fetches each server's /manifest (with /openapi.json fallback), normalizes the tool lists, and returns: only-in-A, only-in-B, same in both, price delta, schema delta. Free tier — useful for competitor analysis, regression detection, and migration planning.","x-x402-tool":"onyx_mcp_catalog_diff","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_mcp_catalog_diff — free introspection card","operationId":"onyx_mcp_catalog_diff_introspect_v1_onyx_mcp_catalog_diff_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_mcp_health":{"post":{"summary":"onyx_mcp_health","operationId":"onyx_mcp_health_v1_onyx_mcp_health_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"server_url":{"type":"string","description":"Base URL of the MCP / x402 server (https://example.com). Must be public."},"timeout_seconds":{"type":"integer","description":"Per-request timeout. Defaults to 6.","default":6,"minimum":1,"maximum":20},"extra_paths":{"type":"array","items":{"type":"string"},"description":"Additional paths to probe beyond the standard MCP/x402 set."}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Probe any public MCP / x402 server and return a structured health snapshot: endpoint latencies, content types, MCP discovery surface, x402 readiness, OAuth DCR advertisement, and a 0-100 composite reliability score. Stdlib-only. SSRF-hardened — refuses private, loopback, link-local, and reserved address ranges. Free tier, no key.","x-x402-tool":"onyx_mcp_health","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_mcp_health — free introspection card","operationId":"onyx_mcp_health_introspect_v1_onyx_mcp_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_mcp_meta_call":{"post":{"summary":"onyx_mcp_meta_call","operationId":"onyx_mcp_meta_call_v1_onyx_mcp_meta_call_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"target_url":{"type":"string","description":"Full URL of the x402 tool endpoint to inspect (e.g. https://other-service.com/v1/some_tool)."},"caller_wallet":{"type":"string","description":"Optional. Caller's EVM wallet — used to look up reputation via agent_id logic."},"max_acceptable_usdc":{"type":"number","default":1.0,"description":"Caller's max acceptable price for this call. If quoted price > this, GO signal is red."}},"required":["target_url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Pre-flight inspector for ANY x402 tool call. Pass target URL + optional caller wallet, get back: live 402 price, recommended chain (via chain_picker logic), live facilitator health, caller reputation (via agent_id logic), and a green/yellow/red GO signal. Free tier — the universal preflight that lets agents decide before they sign. v2 (paid) will broker the actual settlement and proxy the response.","x-x402-tool":"onyx_mcp_meta_call","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_mcp_meta_call — free introspection card","operationId":"onyx_mcp_meta_call_introspect_v1_onyx_mcp_meta_call_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_mcp_oauth_audit":{"post":{"summary":"onyx_mcp_oauth_audit","operationId":"onyx_mcp_oauth_audit_v1_onyx_mcp_oauth_audit_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"server_url":{"type":"string","description":"Base URL of the MCP server to audit."}},"required":["server_url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"OAuth 2.1 + RFC 7591 DCR compliance audit for any MCP server. Probes the 5 standard discovery + registration + token endpoints, validates each against the relevant RFC, returns a composite 0-100 score and remediation list. Free tier — useful for MCP operators preparing for ChatGPT custom-connector / Claude Managed Agents discovery.","x-x402-tool":"onyx_mcp_oauth_audit","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_mcp_oauth_audit — free introspection card","operationId":"onyx_mcp_oauth_audit_introspect_v1_onyx_mcp_oauth_audit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_mcp_registry_status":{"post":{"summary":"onyx_mcp_registry_status","operationId":"onyx_mcp_registry_status_v1_onyx_mcp_registry_status_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"server_url":{"type":"string","description":"Base URL of the MCP server to audit (e.g. https://onyx-actions.onrender.com). Required for Bazaar lookup."},"github_repo":{"type":"string","description":"owner/repo slug if the server is open-source (e.g. 'dimitrilaouanis-tech/onyx-mcp'). Required for Smithery/Glama/awesome-mcp-servers lookups."}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Cross-registry listing audit for any MCP server. Checks Coinbase Bazaar (x402 discovery), Smithery, Glama, the official MCP Registry, and the awesome-mcp-servers list. Returns per-registry status + coverage score 0-100 + remediation suggestions for unlisted registries. Free tier.","x-x402-tool":"onyx_mcp_registry_status","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_mcp_registry_status — free introspection card","operationId":"onyx_mcp_registry_status_introspect_v1_onyx_mcp_registry_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_mcp_router":{"post":{"summary":"onyx_mcp_router","operationId":"onyx_mcp_router_v1_onyx_mcp_router_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"capability":{"type":"string","description":"Plain-English description of what the agent needs. E.g. 'Base transaction explainer', 'swap quote Solana', 'captcha OCR'."},"max_price_usdc":{"type":"number","description":"Cap on per-call price. Omit for no cap. Use 0.01 for cheap-only."},"preferred_network":{"type":"string","description":"Preferred network: 'eip155:8453' (Base), 'eip155:84532' (Base Sepolia), 'solana', etc. Sorted higher when present."},"top_n":{"type":"integer","minimum":1,"maximum":10,"default":3,"description":"Number of route candidates to return."},"include_onyx_routes":{"type":"boolean","default":true,"description":"If false, exclude Onyx Actions endpoints from the comparison (e.g. for independent third-party benchmark)."}},"required":["capability"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"FIRST MCP meta-router. Describe a capability in plain English ('Base tx explainer', 'captcha OCR', 'DEX swap quote'); the router queries the entire CDP x402 discovery corpus, scores every candidate by price + freshness + schema match + network preference, and returns the top N ranked routes with full call templates (URL, method, body schema, expected price, payTo, asset, network). The agent calls the top route directly. Onyx is the aggregator; every other paid MCP is the supply.","x-x402-tool":"onyx_mcp_router","x-x402-price-usdc":"0.01","x-x402-tier":"metered"},"get":{"summary":"onyx_mcp_router — free introspection card","operationId":"onyx_mcp_router_introspect_v1_onyx_mcp_router_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_kya_verify":{"post":{"summary":"onyx_kya_verify","operationId":"onyx_kya_verify_v1_onyx_kya_verify_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"credential_id":{"type":"string","description":"KYA credential id (kya_*)."}},"required":["credential_id"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Verify an Onyx Protocol KYA (Know Your Agent) credential. Pass a credential id (e.g. 'kya_01KSHZ...'); returns ok + scope + spend cap + issuer + revocation status. Use to gate paid tool access, audit agent operations, or compose with x402 settlement for trust-tier routing. Calls Onyx Protocol verifier.","x-x402-tool":"onyx_kya_verify","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_kya_verify — free introspection card","operationId":"onyx_kya_verify_introspect_v1_onyx_kya_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_oai_lookup":{"post":{"summary":"onyx_oai_lookup","operationId":"onyx_oai_lookup_v1_onyx_oai_lookup_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"identity":{"type":"string","description":"Agent DID (did:web:..., did:eth:0x...) or raw 0x... wallet address."}},"required":["identity"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Look up the Onyx Agentic Index (OAI) score for an agent identity. Input a DID (did:web:..., did:eth:0x...) or wallet address; returns composite 0-1000 score + per-signal breakdown + last-updated timestamp. Use for trust-tier gating, routing decisions, partnership vetting.","x-x402-tool":"onyx_oai_lookup","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_oai_lookup — free introspection card","operationId":"onyx_oai_lookup_introspect_v1_onyx_oai_lookup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_paper_synthesis":{"post":{"summary":"onyx_paper_synthesis","operationId":"onyx_paper_synthesis_v1_onyx_paper_synthesis_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"ids":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":10,"description":"OpenAlex work IDs (W123..., or full URL) or DOIs (10.xxxx/...)."}},"required":["ids"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Structured synthesis across N academic papers. Input: 2-10 OpenAlex IDs or DOIs. Output: per-paper metadata (title, year, citations, abstract), thematic overlap (shared keywords across abstracts), citation co-graph (papers that cite multiple inputs), and an agent-actionable summary stating what's converged vs contested. Composes after onyx_research_intel.","x-x402-tool":"onyx_paper_synthesis","x-x402-price-usdc":"0.03","x-x402-tier":"metered"},"get":{"summary":"onyx_paper_synthesis — free introspection card","operationId":"onyx_paper_synthesis_introspect_v1_onyx_paper_synthesis_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_partnership_check":{"post":{"summary":"onyx_partnership_check","operationId":"onyx_partnership_check_v1_onyx_partnership_check_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"company":{"type":"string","description":"Company name (e.g. 'Catena Labs') or root domain (e.g. 'catena.xyz')."},"github_org":{"type":"string","description":"Optional GitHub org slug. If known, narrows the repo probe."}},"required":["company"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Where does Onyx plug into Company X's stack? Probes their domain + CDP discovery + awesome-x402/awesome-mcp + GitHub for MCP/x402 footprint. Returns gap analysis: which of Onyx's 64+ tools complement what they already ship. Plus a suggested integration angle and signal strength. Built for outbound partnership / merger / B2B sales conversations.","x-x402-tool":"onyx_partnership_check","x-x402-price-usdc":"0.02","x-x402-tier":"metered"},"get":{"summary":"onyx_partnership_check — free introspection card","operationId":"onyx_partnership_check_introspect_v1_onyx_partnership_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_password_strength":{"post":{"summary":"onyx_password_strength","operationId":"onyx_password_strength_v1_onyx_password_strength_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"password":{"type":"string","description":"Password to score"}},"required":["password"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Score password strength on a 0-100 scale. Returns Shannon entropy (bits), character-class diversity, length, common-pattern detection (sequences, repeats, dictionary-likeness), and a verdict (very_weak / weak / fair / strong / very_strong). Use when an agent generates passwords for accounts it creates, or when validating user-supplied credentials. Stdlib-only — runs locally, never sends the password anywhere. <5ms.","x-x402-tool":"onyx_password_strength","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_password_strength — free introspection card","operationId":"onyx_password_strength_introspect_v1_onyx_password_strength_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_pm_settlement_watch":{"post":{"summary":"onyx_pm_settlement_watch","operationId":"onyx_pm_settlement_watch_v1_onyx_pm_settlement_watch_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"slug_or_url":{"type":"string","description":"Polymarket slug ('will-trump-win-2024'), Manifold slug, or full https URL to either platform"},"venue":{"type":"string","description":"Force a specific venue: 'polymarket' or 'manifold'. Auto-detected if omitted."}},"required":["slug_or_url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Prediction-market state lookup — current odds, volume, liquidity, resolution state, and anomaly flags for any market on Polymarket or Manifold. Pass a market slug or full URL. Use for arb agents watching for mispriced events, copy-trading agents tracking whales, or settlement-resolver agents that pay only on a final outcome. Coinbase PROJECT-IDEAS.md explicitly calls for this primitive.","x-x402-tool":"onyx_pm_settlement_watch","x-x402-price-usdc":"0.005","x-x402-tier":"metered"},"get":{"summary":"onyx_pm_settlement_watch — free introspection card","operationId":"onyx_pm_settlement_watch_introspect_v1_onyx_pm_settlement_watch_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_research_intel":{"post":{"summary":"onyx_research_intel","operationId":"onyx_research_intel_v1_onyx_research_intel_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"query":{"type":"string","description":"Research question or keyword string. Plain English works; OpenAlex handles tokenization."},"top_n":{"type":"integer","minimum":1,"maximum":20,"default":5,"description":"How many papers to return."},"min_citations":{"type":"integer","minimum":0,"default":0,"description":"Filter out papers with fewer than this many citations. Use 50+ to surface only well-known work."},"year_from":{"type":"integer","minimum":1900,"maximum":2100,"description":"Optional: only return papers from this year onward."},"sort_by":{"type":"string","enum":["relevance","citations","recency"],"default":"relevance","description":"Ranking. citations = highest cited first; recency = newest first; relevance = OpenAlex semantic match."}},"required":["query"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Research intel — has someone solved X already? Queries 240M+ academic works via OpenAlex (includes arXiv preprints, conference papers, journal articles), ranks by citation count + recency + relevance, returns top N papers with one-line abstract excerpts, citation counts, and author names. Built for autonomous agents that need to check prior art before burning cycles re-deriving a known result. Fallback to Semantic Scholar.","x-x402-tool":"onyx_research_intel","x-x402-price-usdc":"0.05","x-x402-tier":"metered"},"get":{"summary":"onyx_research_intel — free introspection card","operationId":"onyx_research_intel_introspect_v1_onyx_research_intel_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_robots_check":{"post":{"summary":"onyx_robots_check","operationId":"onyx_robots_check_v1_onyx_robots_check_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"url":{"type":"string","description":"Any URL on the target domain"},"user_agent":{"type":"string","description":"UA string to test","default":"*"}},"required":["url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Fetch a domain's robots.txt and report whether a given path is allowed for a given user-agent. Returns the raw robots.txt text, the matched rule, the crawl-delay if specified, and a clean allow/disallow verdict. Use when an agent does web scraping and wants to be polite — saves bans, saves CAPTCHAs, saves drama. ~50-200ms.","x-x402-tool":"onyx_robots_check","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_robots_check — free introspection card","operationId":"onyx_robots_check_introspect_v1_onyx_robots_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_secure_payment":{"post":{"summary":"onyx_secure_payment","operationId":"onyx_secure_payment_v1_onyx_secure_payment_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"recipient":{"type":"string","description":"0x recipient address the agent is about to pay (Base)."},"amount_usdc":{"type":"number","description":"Amount about to be sent, in USDC. Drives both the risk threshold and the take-rate quote."},"contract_address":{"type":"string","description":"Optional. If the payment interacts with a contract, its 0x address — triggers a full contract audit."},"counterparty_agent_id":{"type":"integer","description":"Optional. If paying another AI agent, its ERC-8004 id — triggers a reputation check."}},"required":["recipient","amount_usdc"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Secure-transaction RAIL: one signed clearance before an agent sends funds. Give recipient + amount (and optionally a contract address or counterparty ERC-8004 agent id); Onyx runs the full security stack — recipient firewall, contract audit, counterparty reputation — and returns a single PASS / REVIEW / FAIL verdict + risk score, plus the Onyx take-rate quote (bps of value secured). Ed25519-signed so the clearance is provable. The check a serious agent runs before moving real money. Onyx never t","x-x402-tool":"onyx_secure_payment","x-x402-price-usdc":"0.25","x-x402-tier":"premium"},"get":{"summary":"onyx_secure_payment — free introspection card","operationId":"onyx_secure_payment_introspect_v1_onyx_secure_payment_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_skill_bundle":{"post":{"summary":"onyx_skill_bundle","operationId":"onyx_skill_bundle_v1_onyx_skill_bundle_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"tools":{"type":"array","description":"List of tools to bundle. Each: {endpoint_url, description, depends_on (optional)}.","items":{"type":"object","properties":{"endpoint_url":{"type":"string"},"description":{"type":"string"},"depends_on":{"type":"array","items":{"type":"integer"}}},"required":["endpoint_url"]}},"max_spend_usdc":{"type":"number","description":"Bundle budget cap in USDC. Bundle is rejected if sum(prices) > cap."}},"required":["tools","max_spend_usdc"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Plan a multi-tool agent workflow under one x402 budget cap. Given a list of tool endpoints (any x402 server) and a max-spend cap, returns: unified cost preview (sum of declared prices), per-step prerequisites, estimated total settlement count, and whether the bundle fits the cap. v1 = analysis card (free); v2 = actually brokers settlement.","x-x402-tool":"onyx_skill_bundle","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_skill_bundle — free introspection card","operationId":"onyx_skill_bundle_introspect_v1_onyx_skill_bundle_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_solana_jupiter_quote":{"post":{"summary":"onyx_solana_jupiter_quote","operationId":"onyx_solana_jupiter_quote_v1_onyx_solana_jupiter_quote_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"input_mint":{"type":"string","description":"Input token SPL mint (base58)"},"output_mint":{"type":"string","description":"Output token SPL mint (base58)"},"amount":{"type":"string","description":"Amount in smallest units of input_mint (string to avoid float precision)"},"slippage_bps":{"type":"integer","description":"Max slippage in basis points (50 = 0.5%, default 50)","default":50}},"required":["input_mint","output_mint","amount"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Best-route swap quote on Solana via Jupiter aggregator. Pass inputMint + outputMint + amount (in input mint's smallest units) and get the best route across all Solana DEXes (Orca, Raydium, Meteora, Phoenix, Lifinity, etc.) with price impact, expected output, intermediate hops, and slippage. Use BEFORE every Solana swap to lock execution price. Cheaper than every alternative — Jupiter's API is free but requires no API key tracking; we charge $0.001 USDC per quote with no signup.","x-x402-tool":"onyx_solana_jupiter_quote","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_solana_jupiter_quote — free introspection card","operationId":"onyx_solana_jupiter_quote_introspect_v1_onyx_solana_jupiter_quote_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_solana_token_metadata":{"post":{"summary":"onyx_solana_token_metadata","operationId":"onyx_solana_token_metadata_v1_onyx_solana_token_metadata_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"mint":{"type":"string","description":"base58-encoded SPL mint address"}},"required":["mint"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Resolve name + symbol + decimals + total supply for any SPL token on Solana mainnet. Reads the SPL Mint account directly + derives the Metaplex metadata PDA for human-readable name/symbol. Pairs with onyx_solana_token_risk_scan for full pre-trade safety. Cheaper than OATP ($0.001) and Helius ($0.001 + API key) — Onyx uses free public RPC and bills only the agent's wallet.","x-x402-tool":"onyx_solana_token_metadata","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_solana_token_metadata — free introspection card","operationId":"onyx_solana_token_metadata_introspect_v1_onyx_solana_token_metadata_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_solana_token_risk_scan":{"post":{"summary":"onyx_solana_token_risk_scan","operationId":"onyx_solana_token_risk_scan_v1_onyx_solana_token_risk_scan_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"mint":{"type":"string","description":"base58-encoded SPL mint address"}},"required":["mint"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Rug-vector risk scan for any SPL token on Solana mainnet. Checks mint authority (active = can mint unlimited supply), freeze authority (active = can freeze any holder's wallet), top-10 holder concentration (whale risk), supply rationality, and pump.fun bonded/unbonded state. Returns 0-100 risk score + verdict (safe/caution/high_risk/likely_rug) + ranked risk_factors. Designed for memecoin/sniper/MEV agents that need a sub-second pre-trade gate. OATP charges $0.50 for the same primitive — Onyx is","x-x402-tool":"onyx_solana_token_risk_scan","x-x402-price-usdc":"0.25","x-x402-tier":"metered"},"get":{"summary":"onyx_solana_token_risk_scan — free introspection card","operationId":"onyx_solana_token_risk_scan_introspect_v1_onyx_solana_token_risk_scan_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_solana_tx_explainer":{"post":{"summary":"onyx_solana_tx_explainer","operationId":"onyx_solana_tx_explainer_v1_onyx_solana_tx_explainer_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"signature":{"type":"string","description":"base58-encoded Solana tx signature (~88 chars)"}},"required":["signature"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Decode a Solana mainnet transaction into a human-readable summary. Returns a one-line plain-English description (SPL transfers, swaps, stake ops, NFT moves), parsed token-balance pre/post per account, SOL-balance deltas, programs invoked, compute units used, and fee. Use when a trading agent needs to verify a Solana tx actually did what it claims, or when a wallet agent needs to explain an action to its user. Direct equivalent of OATP's $0.10 service (1,350+ unique paying agents) at half the pri","x-x402-tool":"onyx_solana_tx_explainer","x-x402-price-usdc":"0.05","x-x402-tier":"metered"},"get":{"summary":"onyx_solana_tx_explainer — free introspection card","operationId":"onyx_solana_tx_explainer_introspect_v1_onyx_solana_tx_explainer_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_solana_wallet_activity":{"post":{"summary":"onyx_solana_wallet_activity","operationId":"onyx_solana_wallet_activity_v1_onyx_solana_wallet_activity_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"wallet":{"type":"string","description":"base58-encoded Solana wallet address"},"limit":{"type":"integer","description":"Number of recent signatures (1-100, default 25)","default":25}},"required":["wallet"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Recent on-chain activity for any Solana wallet. Returns the last N signatures (default 25, max 100) with slot, block_time, status, fee, and best-effort program/action classification (swap, transfer, stake, NFT). Designed for whale-watching, copy-trading, and risk-monitoring agents that need a sub-second feed without managing their own RPC. Cheaper than Helius webhooks ($25/mo) and Birdeye wallet-portfolio ($0.002 + API key). x402-direct, no signup.","x-x402-tool":"onyx_solana_wallet_activity","x-x402-price-usdc":"0.002","x-x402-tier":"metered"},"get":{"summary":"onyx_solana_wallet_activity — free introspection card","operationId":"onyx_solana_wallet_activity_introspect_v1_onyx_solana_wallet_activity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_token_metadata":{"post":{"summary":"onyx_token_metadata","operationId":"onyx_token_metadata_v1_onyx_token_metadata_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"address":{"type":"string","description":"0x-prefixed ERC-20 contract address on Base"}},"required":["address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"ERC-20 token metadata lookup on Base mainnet: name, symbol, decimals, and total supply for any contract address. Use before transacting with a token agents discover at runtime — confirms the contract is a real ERC-20 and resolves human-readable identity. Reads via Base public RPC, ~150-300ms typical. Pairs with onyx_base_tx_decode for full token-flow context. No vendor key needed.","x-x402-tool":"onyx_token_metadata","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_token_metadata — free introspection card","operationId":"onyx_token_metadata_introspect_v1_onyx_token_metadata_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_tx_guard":{"post":{"summary":"onyx_tx_guard","operationId":"onyx_tx_guard_v1_onyx_tx_guard_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"address":{"type":"string","description":"0x recipient address your agent is about to send funds to (Base mainnet)."},"amount_usdc":{"type":"number","description":"Optional amount about to be sent (USDC). Larger amounts raise the review threshold."}},"required":["address"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Pre-payment security firewall. Give the recipient address your agent is about to pay (Base); get a SIGNED ALLOW/REVIEW/BLOCK verdict + risk score from real on-chain checks: EOA-vs-contract, contract code/verification, account age (tx count), funding history, burn/null-address guard, and sink/honeypot heuristics. Catches paying a brand-new, unverified, or drain-shaped recipient BEFORE the money leaves. Never guesses — every field is observed on-chain and Ed25519-signed.","x-x402-tool":"onyx_tx_guard","x-x402-price-usdc":"0.05","x-x402-tier":"metered"},"get":{"summary":"onyx_tx_guard — free introspection card","operationId":"onyx_tx_guard_introspect_v1_onyx_tx_guard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_url_parse":{"post":{"summary":"onyx_url_parse","operationId":"onyx_url_parse_v1_onyx_url_parse_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"url":{"type":"string","description":"URL to parse"}},"required":["url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Parse any URL into structured components: scheme, host, port, path, query params (as both raw and decoded list), fragment, userinfo. Use when an agent needs to inspect, modify, or validate a URL — change a query param, strip tracking, normalize for caching. Stdlib only, no network calls, <1ms.","x-x402-tool":"onyx_url_parse","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_url_parse — free introspection card","operationId":"onyx_url_parse_introspect_v1_onyx_url_parse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_url_text":{"post":{"summary":"onyx_url_text","operationId":"onyx_url_text_v1_onyx_url_text_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"url":{"type":"string","description":"HTTPS URL to fetch"},"max_chars":{"type":"integer","default":50000,"description":"Truncate output (max 200000)"}},"required":["url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Fetch any public URL and return the readable text content stripped of HTML/scripts/styles. Use when an agent needs to reason over a web page without rendering a browser — docs pages, articles, search-result snippets, GitHub READMEs. Returns plain text + page title + word count + final URL after redirects. Capped at 200kB output to keep token costs predictable. ~150-800ms typical depending on origin server.","x-x402-tool":"onyx_url_text","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_url_text — free introspection card","operationId":"onyx_url_text_introspect_v1_onyx_url_text_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_url_unshorten":{"post":{"summary":"onyx_url_unshorten","operationId":"onyx_url_unshorten_v1_onyx_url_unshorten_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"url":{"type":"string","description":"URL to unshorten"}},"required":["url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Follow HTTP redirects on any URL and return the final destination + the full redirect chain. Use when an agent encounters a bit.ly/t.co/lnkd.in/ shortened link and needs to know where it actually goes before clicking. Returns each hop's status code, location, and final URL with status. Cap of 10 hops to prevent loops. ~100-400ms typical.","x-x402-tool":"onyx_url_unshorten","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_url_unshorten — free introspection card","operationId":"onyx_url_unshorten_introspect_v1_onyx_url_unshorten_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_user_agent_parse":{"post":{"summary":"onyx_user_agent_parse","operationId":"onyx_user_agent_parse_v1_onyx_user_agent_parse_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"user_agent":{"type":"string","description":"User-Agent header value"}},"required":["user_agent"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Parse any HTTP User-Agent string into a structured record: browser name/version, OS name/version, device type (desktop/mobile/tablet/bot), rendering engine. Use for analytics, fraud scoring, or routing logic based on client capabilities. Stdlib regex only — works offline, no external lookups. <2ms.","x-x402-tool":"onyx_user_agent_parse","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_user_agent_parse — free introspection card","operationId":"onyx_user_agent_parse_introspect_v1_onyx_user_agent_parse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_verify_explain":{"post":{"summary":"onyx_verify_explain","operationId":"onyx_verify_explain_v1_onyx_verify_explain_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"x_payment_b64":{"type":"string","description":"Base64-encoded X-PAYMENT (v2 PAYMENT-SIGNATURE) header value. Optional if payment_payload provided."},"payment_payload":{"type":"object","description":"Decoded payment payload dict. Use this OR x_payment_b64."},"payment_requirements":{"type":"object","description":"Expected paymentRequirements from the 402 challenge ({scheme, network, payTo, asset, maxAmountRequired, maxTimeoutSeconds, ...})."},"now_unix":{"type":"integer","description":"Override current unix time for replay/CI use. Defaults to now."}},"required":["payment_requirements"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Diagnose a failing x402 v2 /verify. Decodes a captured X-PAYMENT header, runs 10 rules (decode, schema, network/asset/payTo match, value sufficiency, EIP-3009 timing, signature shape, scheme) against expected paymentRequirements, and returns the FIRST failing rule with a plain-English fix. Catches the common case where the facilitator returns bare HTTP 402 (no body) because of JWT or schema fail upstream of the verifier. Stdlib-only, no install, no network.","x-x402-tool":"onyx_verify_explain","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_verify_explain — free introspection card","operationId":"onyx_verify_explain_introspect_v1_onyx_verify_explain_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_whois":{"post":{"summary":"onyx_whois","operationId":"onyx_whois_v1_onyx_whois_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"domain":{"type":"string","description":"Domain name, e.g. example.com"}},"required":["domain"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Domain whois via the modern RDAP protocol — registrar, creation/expiry dates, nameservers, registrant country, status flags. Use to vet a domain before agents transact with it (newly registered = higher fraud risk), check trademark conflicts, or confirm ownership transfer. Powered by rdap.org (no API key, free tier). ~200-500ms typical.","x-x402-tool":"onyx_whois","x-x402-price-usdc":"0.001","x-x402-tier":"metered"},"get":{"summary":"onyx_whois — free introspection card","operationId":"onyx_whois_introspect_v1_onyx_whois_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_x402_chain_picker":{"post":{"summary":"onyx_x402_chain_picker","operationId":"onyx_x402_chain_picker_v1_onyx_x402_chain_picker_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"amount_usdc":{"type":"number","description":"Target USDC amount the agent wants to settle."},"available_chains":{"type":"array","items":{"type":"string"},"description":"Chains the agent's wallet supports. Subset of: base, base-sepolia, optimism, arbitrum, polygon. Default = ['base', 'base-sepolia']."},"production_only":{"type":"boolean","default":true,"description":"If true, exclude testnets from ranking."}},"required":["amount_usdc"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Pick the optimal chain for an x402 USDC payment. Given target amount + agent's available chains, ranks by facilitator support, live gas, finality time, and USDC contract maturity. Returns ranked list with explanations. Free tier — agents shouldn't hardcode 'base' when their wallet has L2 options.","x-x402-tool":"onyx_x402_chain_picker","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_x402_chain_picker — free introspection card","operationId":"onyx_x402_chain_picker_introspect_v1_onyx_x402_chain_picker_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_x402_demo_wallet":{"post":{"summary":"onyx_x402_demo_wallet","operationId":"onyx_x402_demo_wallet_v1_onyx_x402_demo_wallet_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"existing_address":{"type":"string","description":"Existing 0x-prefixed address to check. If omitted, generates an ephemeral sandbox address from `seed`."},"seed":{"type":"string","description":"String seed for deterministic sandbox address generation. Same seed always yields same address. NOT cryptographically secure; sandbox only."}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Dev-sandbox wallet helper for x402 testing. Generates a deterministic ephemeral Sepolia wallet (or accepts your address), reports ETH + USDC Sepolia balances, points to the Circle USDC Sepolia faucet, and emits a copy-paste env config for x402 client SDKs. SANDBOX ONLY — generated keys are deterministic and MUST NOT receive real value.","x-x402-tool":"onyx_x402_demo_wallet","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_x402_demo_wallet — free introspection card","operationId":"onyx_x402_demo_wallet_introspect_v1_onyx_x402_demo_wallet_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_x402_error_explain":{"post":{"summary":"onyx_x402_error_explain","operationId":"onyx_x402_error_explain_v1_onyx_x402_error_explain_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"status_code":{"type":"integer","description":"HTTP status code returned by the server (e.g. 402, 422, 401)."},"response_body":{"type":"string","description":"Raw response body as text. JSON is auto-detected and parsed."},"response_headers":{"type":"object","description":"Optional. HTTP response headers, useful for 402 challenges that carry payment-required header.","additionalProperties":{"type":"string"}},"request_summary":{"type":"string","description":"Optional. One-line summary of what the caller was trying to do."}},"required":["status_code"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Plain-English explainer for any HTTP error in an x402 / MCP flow. Pass the status code + response body (or headers), get back a diagnosis with specific cause and actionable fix. Covers FastAPI validation, OAuth2 DCR failures, EIP-712 signature errors, x402 spec error codes, and Coinbase facilitator-specific responses. Free tier — local logic, no network calls.","x-x402-tool":"onyx_x402_error_explain","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_x402_error_explain — free introspection card","operationId":"onyx_x402_error_explain_introspect_v1_onyx_x402_error_explain_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_x402_facilitators":{"post":{"summary":"onyx_x402_facilitators","operationId":"onyx_x402_facilitators_v1_onyx_x402_facilitators_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"network":{"type":"string","description":"Filter facilitators that support this network (CAIP-2 like 'eip155:8453', or short form 'base', 'base-sepolia', 'solana'). Omit for all."},"include_inactive":{"type":"boolean","default":false,"description":"Include facilitators that didn't respond on probe."}}}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Directory of known x402 facilitators (Coinbase CDP, x402.org public, xpay.sh, Cronos, Faremeter, others), each with live reachability probe, supported networks, payment auth scheme (JWT / open), and median latency. Agents use this to choose where to route /verify and /settle calls. Free tier — refreshes per call, no API key.","x-x402-tool":"onyx_x402_facilitators","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_x402_facilitators — free introspection card","operationId":"onyx_x402_facilitators_introspect_v1_onyx_x402_facilitators_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_x402_indexer_health":{"post":{"summary":"onyx_x402_indexer_health","operationId":"onyx_x402_indexer_health_v1_onyx_x402_indexer_health_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"url":{"type":"string","description":"Domain or full URL to check (e.g. 'onyx-actions.onrender.com' or 'https://api.oatp.cc')."}},"required":["url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Is your x402 endpoint actually discoverable? Probes 6 indexers agents use (CDP discovery, Bazaar mirror, awesome-x402 README, awesome-mcp-servers README, x402scan, Smithery) and returns per-indexer presence + a single recommended action. Free tier — every paid-MCP-builder hits the same invisible-launch problem and this is the missing observability tool.","x-x402-tool":"onyx_x402_indexer_health","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_x402_indexer_health — free introspection card","operationId":"onyx_x402_indexer_health_introspect_v1_onyx_x402_indexer_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_x402_receipt_verify":{"post":{"summary":"onyx_x402_receipt_verify","operationId":"onyx_x402_receipt_verify_v1_onyx_x402_receipt_verify_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"tx_hash":{"type":"string","description":"0x-prefixed 32-byte tx hash to verify."},"network":{"type":"string","enum":["base","base-sepolia"],"default":"base","description":"Chain to query. Must match where the tx was mined."},"expected_from":{"type":"string","description":"Optional. Expected sender address (0x...). If provided, verifier checks Transfer.from matches."},"expected_to":{"type":"string","description":"Optional. Expected recipient address (0x...). If provided, verifier checks Transfer.to matches."},"expected_amount_usdc":{"type":"number","description":"Optional. Expected USDC amount (whole USDC, not atomic). If provided, verifier checks Transfer.value matches (within 0.000001 tolerance)."}},"required":["tx_hash"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Verify an x402 USDC settlement on Base or Base Sepolia. Given a tx hash, decodes the USDC Transfer log and confirms (or refutes) a claim of the form: 'tx X moved $Y USDC from A to B'. Returns success status, actual decoded values, and a clear discrepancy report if any field doesn't match. Free tier — useful for agents reconciling spend and operators auditing inbound payments.","x-x402-tool":"onyx_x402_receipt_verify","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_x402_receipt_verify — free introspection card","operationId":"onyx_x402_receipt_verify_introspect_v1_onyx_x402_receipt_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_x402_simulate":{"post":{"summary":"onyx_x402_simulate","operationId":"onyx_x402_simulate_v1_onyx_x402_simulate_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"endpoint_url":{"type":"string","description":"Full URL of the paid endpoint to simulate against (e.g. https://onyx-actions.onrender.com/v1/onyx_aml_screen)."},"method":{"type":"string","enum":["GET","POST"],"default":"GET","description":"GET hits the introspection card (works even on unpaid endpoints); POST hits the live 402 challenge (works on every paid endpoint)."},"signer_address":{"type":"string","description":"Address that would sign the EIP-3009 authorization. Used to fill the 'from' field in the template payment payload. Optional — defaults to 0x0...01."}},"required":["endpoint_url"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Simulate an x402 v2 payment flow against any paid endpoint. Fetches the 402 challenge (or introspection card), parses paymentRequirements, generates a template X-PAYMENT payload with the exact fields an agent would need to sign (EIP-3009 authorization shape, validBefore window, asset address, recipient), and returns next-step guidance. Pure simulation — no keys, no signing, no payment. SSRF-hardened.","x-x402-tool":"onyx_x402_simulate","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_x402_simulate — free introspection card","operationId":"onyx_x402_simulate_introspect_v1_onyx_x402_simulate_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}},"/v1/onyx_x402_spec_lookup":{"post":{"summary":"onyx_x402_spec_lookup","operationId":"onyx_x402_spec_lookup_v1_onyx_x402_spec_lookup_post","parameters":[{"name":"x-onyx-kya-credential","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Onyx-Kya-Credential"}},{"name":"x-payment-response","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Payment-Response"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body","properties":{"query":{"type":"string","description":"What to look up: error string ('invalid_exact_evm_payload_authorization_valid_before'), header name ('PAYMENT-SIGNATURE'), status code ('402'), payload field ('nonce'), or feature keyword ('EIP-3009', 'CAIP-2', 'facilitator', 'JWT')."}},"required":["query"]}}},"required":true},"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"402":{"description":"Payment required (x402)","headers":{"Payment-Required":{"description":"Base64-encoded x402 challenge","schema":{"type":"string"}}}}},"description":"Quick-reference into the x402 v2 protocol spec. Look up an error string, HTTP status, header name, payload field, or feature keyword and get the relevant spec snippet plus a plain-English fix. Replaces 30 minutes of spec-grepping with a single call. Free tier — embedded knowledge, no network.","x-x402-tool":"onyx_x402_spec_lookup","x-x402-price-usdc":"0","x-x402-tier":"free"},"get":{"summary":"onyx_x402_spec_lookup — free introspection card","operationId":"onyx_x402_spec_lookup_introspect_v1_onyx_x402_spec_lookup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"description":"Free GET — returns tool metadata, schemas, comparison anchors. POST same URL with x402 payment to actually call."}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}