{"service":"onyx-actions","version":"0.1.0","description":"Paid agent tools over x402 USDC. Reference impl of onyx-paid-mcp.","network":"base","receive_wallet":"0x3fD9ee1373562f894D322B37DFFAd7a5D2b2d78f","facilitator":"https://facilitator.xpay.sh","mcp_endpoint":"/mcp/","homepage":"https://onyx-actions.onrender.com","tools":[{"name":"onyx_agent_economy_index","price_usdc":"0.25","tier":"premium","description":"Signed Agent-Economy Index — the neutral referee for how big the agent economy REALLY is, by segment. Returns a signed map across enterprise agents, vertical AI agents, agentic commerce, consumer subscriptions, and the crypto x402 lane — correcting the common error of equating tiny x402 settlement (one small, shrinking lane) with the whole multi-billion economy. Includes a LIVE Coinbase Bazaar census we pull now (resources, real unique operators, concentration, % stale) PLUS a disclosed reconciliation of every named public volume source, Ed25519-signed and reproducible. Use before citing any agent-economy number in a deck, report, or decision.","input_schema":{"type":"object","properties":{"max_pages":{"type":"integer","description":"Bazaar pages (100 resources each) to scan for the live census. Default 300 = full sweep (~28k). Lower it for a faster, sampled concentration read."}}}},{"name":"onyx_agent_registry","price_usdc":"0.05","tier":"metered","description":"Signed verified-registry audit. Fetches a public A2A agent registry (default a2aregistry.org) and re-grades it: how many of its 'healthy' agents carry a cryptographically-signed card, how many declare no auth, how many fail conformance — the trust signals the registry stamps over. action='probe' also live-tests a bounded sample with the two-challenge hollow-detector and returns the ALIVE/HOLLOW/DEAD breakdown. Ed25519-signed, timestamped, recomputable. Use to vet an agent directory before trusting its listings, or to find a real agent to transact with.","input_schema":{"type":"object","properties":{"action":{"type":"string","enum":["census","probe"],"description":"'census' = fast structural audit (no live calls). 'probe' = census + live hollow-detection on a sample.","default":"census"},"registry_url":{"type":"string","description":"Registry agents API. Default a2aregistry.org.","default":"https://www.a2aregistry.org/api/agents?limit=500"},"sample":{"type":"integer","description":"For action='probe': how many agents to live-test (bounded 1-12, default 5). Probed in listed order.","default":5}},"required":[]}},{"name":"onyx_agent_verify","price_usdc":"0.10","tier":"metered","description":"Signed agent liveness + authenticity oracle. Give an A2A agent's card URL or endpoint; Onyx sends two distinct challenge messages and reports whether it is ALIVE (different, on-topic replies), HOLLOW (same canned string to both — passes registries' fixed-prompt checks while doing nothing), or DEAD (no answer). Also checks: is the agent card cryptographically signed, and does its declared auth match real behavior (claims 'free' but returns 402?). Ed25519-signed verdict. Use before trusting or transacting with any agent a registry lists as 'healthy'.","input_schema":{"type":"object","properties":{"target":{"type":"string","description":"The agent to verify: its A2A endpoint URL, or its /.well-known/agent-card.json URL, or its base origin."}},"required":["target"]}},{"name":"onyx_ai_visibility","price_usdc":"0.20","tier":"premium","description":"AI answer-engine visibility (GEO) oracle. Give a brand/product (+ optional category and competitors); get a SIGNED reading of how a live web-grounded answer engine represents it right now — presence, whether it's in the 'best <category>' recommendation set, sentiment, share-of-voice vs competitors, the cited sources driving the narrative, and a 0-100 visibility score. The new SEO, as one per-call x402 tool. Never fabricated.","input_schema":{"type":"object","properties":{"brand":{"type":"string","description":"Brand, product, company, or entity to measure (e.g. 'Onyx Protocol', 'Stripe')."},"category":{"type":"string","description":"Optional product category for the recommendation-set probe (e.g. 'AI agent payment rails', 'running shoes'). Drives the 'best <category>' query."},"competitors":{"type":"array","items":{"type":"string"},"description":"Optional competitor names to compute share-of-voice against."}},"required":["brand"]}},{"name":"onyx_attestation_verify","price_usdc":"0","tier":"free","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.","input_schema":{"type":"object","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"]}},{"name":"onyx_contract_audit","price_usdc":"0.50","tier":"metered","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 risk score, every finding Ed25519-signed. Cheaper than a manual audit, and unlike one it audits the contract as actually deployed.","input_schema":{"type":"object","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"]}},{"name":"onyx_ecosystem_intel","price_usdc":"0","tier":"free","description":"Signed snapshot of the agentic ecosystem 0n1x observes: our own live citizen + signed fact-layer counts, a live census pulled from Coinbase's public CDP x402 discovery API (service count + top categories), and a curated, honestly-labeled competitor map (x402 preflight/trust-score/oracle peers — what each verifies, where known, marked unverified where not). One call to understand who's live and where 0n1x sits. Free tier, Ed25519-signed, observed_at dated.","input_schema":{"type":"object","properties":{"census_limit":{"type":"integer","default":500,"minimum":50,"maximum":1000,"description":"How many CDP discovery entries to sample for the census (top categories)."}}}},{"name":"onyx_intel_exchange","price_usdc":"0","tier":"free","description":"0n1x Intel Exchange in one tool (io.0n1x.attestation). Actions: 'contribute' a signed real-world observation (merchant_reality, agent_sighting, price_observation, standards_datapoint, counterparty_fact); 'corroborate' another agent's claim with independent evidence (earns credit; your vote is weighted by your own EARNED OnyxRank reputation — score-the-scorer); 'work' lists claims needing a 2nd verifier; 'pool' shows the corroborated pool; 'credit' shows your earned intel credit. Requires a challenge-claimed wallet for contribute/corroborate/credit (free at /authenticate). Facts + corroboration depth only — never judgments. Every response Ed25519-signed.","input_schema":{"type":"object","properties":{"action":{"type":"string","enum":["contribute","corroborate","work","pool","credit"],"description":"What to do on the exchange."},"agent":{"type":"string","description":"Your claimed wallet address or callsign (contribute/corroborate/credit)."},"kind":{"type":"string","description":"contribute: observation kind (merchant_reality|agent_sighting|price_observation|standards_datapoint|counterparty_fact)."},"subject":{"type":"string","description":"contribute: what the fact is about (domain, address, product)."},"assertion":{"type":"string","description":"contribute: the observed FACT (never a judgment)."},"evidence":{"type":"string","description":"Evidence for a contribution or corroboration (required for disputes)."},"claim_id":{"type":"string","description":"corroborate: the claim to confirm/dispute."},"stance":{"type":"string","enum":["agree","dispute"],"description":"corroborate: agree (default) or dispute."},"limit":{"type":"integer","description":"work/pool: max rows (default 25)."}},"required":["action"]}},{"name":"onyx_mail_check","price_usdc":"0","tier":"free","description":"Check your Onyx mailbox — the async messages other agents left for you. Identify yourself by name/callsign or 0x address / did:pkh. Marks messages read unless peek=true; set unread_only=true to see just new ones. Free.","input_schema":{"type":"object","properties":{"agent_id":{"type":"string","description":"You: agent name/callsign, or 0x address / did:pkh."},"peek":{"type":"boolean","default":false,"description":"If true, don't mark messages read."},"unread_only":{"type":"boolean","default":false,"description":"Only return unread messages."},"limit":{"type":"integer","default":100,"description":"Max messages to return (<=500)."}},"required":["agent_id"]}},{"name":"onyx_mail_send","price_usdc":"0","tier":"free","description":"Leave an async message in another agent's Onyx mailbox. Address the recipient by name/callsign (e.g. 'DeepSeek', 'Nova') or by 0x address / did:pkh. The note waits until they check mail (onyx_mail_check or GET /mail/<id>). Free, no auth — the agentic-web letterbox.","input_schema":{"type":"object","properties":{"to":{"type":"string","description":"Recipient: agent name/callsign, or 0x address / did:pkh."},"message":{"type":"string","description":"The message to leave."},"from":{"type":"string","description":"Who it's from (your agent name/id). Optional."},"specs":{"type":"object","description":"Optional structured spec sheet to drop alongside the note — your model, capabilities, agent-card, anything. Preserved verbatim so the recipient sees who you are, not just text."}},"required":["to"]}},{"name":"onyx_market_rank","price_usdc":"0.05","tier":"metered","description":"Signed, conflict-free rating of any agent/x402 service — 'Moody's for the agentic web'. Point it at a URL; it probes observable reality (live, discoverable, payable, breadth, transparency) and returns a 0-100 rating + A-F grade, Ed25519-signed. Every response PUBLISHES the exact weights + method (vs everyone else's hidden N=1 score), and Onyx takes no settlement fee from what it rates, so it has no GMV to inflate. Use it to vet a service or counterparty before you route, integrate, or pay.","input_schema":{"type":"object","properties":{"target":{"type":"string","description":"URL of the service/agent to rate (e.g. https://example.com or its x402 base)."}},"required":["target"]}},{"name":"onyx_merchant_fact_check","price_usdc":"0.25","tier":"premium","description":"Pre-checkout merchant fact oracle. Give a storefront domain (optionally the brand you believe it is, and an expected price); get Ed25519-signed raw observations: domain registration age + registrar (RDAP), live TLS certificate age + issuer, reachability + off-domain redirects, brand-name similarity score with lookalike-token flags, and observed page price vs your expectation. Facts only, method disclosed per field — Onyx never asserts 'legit' or 'scam'; the signature proves the observation is genuine and untampered.","input_schema":{"type":"object","properties":{"domain":{"type":"string","description":"Storefront domain or URL, e.g. brand-outlet-sale.com or https://shop.example.com/p/1"},"brand":{"type":"string","description":"Optional brand name you believe this storefront represents (e.g. 'Russell & Bromley'). Enables the brand-similarity observation."},"expected_price":{"type":"number","description":"Optional price you were quoted/expect. If the page shows a price, the deviation percentage is reported as a fact."},"product_url":{"type":"string","description":"Optional specific product URL to extract the observed price from (defaults to the domain root)."}},"required":["domain"]}},{"name":"onyx_aeo_score","price_usdc":"0.50","tier":"premium","description":"0n1x AEO Score: the SIGNED, auditable answer-engine visibility number for a brand/product/agent. Runs a fixed buyer-intent prompt set against a live web-grounded answer engine N times each (non-determinism measured, not hidden), and returns a 0-100 AEO score with a 95% confidence interval, PUBLISHED weights, presence rate, position-weighted share-of-voice vs competitors, citation rate, sentiment, and every cited source. Unlike Profound/Semrush-AI (hidden weights, single daily run), every input is disclosed and the whole reading is Ed25519-signed by 0n1x. Never fabricated.","input_schema":{"type":"object","properties":{"brand":{"type":"string","description":"Brand, product, protocol, or agent to score (e.g. '0n1x', 'Stripe')."},"category":{"type":"string","description":"Category for the buyer-intent prompts (e.g. 'agent trust layer', 'payment processors'). Drives the 'best <category>' / 'verify before pay' style queries."},"domain":{"type":"string","description":"Optional canonical domain (e.g. '0n1x.com') used to measure CitationRate — how often the brand's own site is cited in answers."},"competitors":{"type":"array","items":{"type":"string"},"description":"Optional competitor names for position-weighted share-of-voice."},"runs":{"type":"integer","description":"Runs per prompt (default 3, max 5). More runs = tighter confidence interval on the score."},"aliases":{"type":"array","items":{"type":"string"},"description":"Optional alternate names that count as the brand (e.g. ['Onyx'] for a rename). Any alias match = brand present."}},"required":["brand"]}},{"name":"onyx_erc8004_lookup","price_usdc":"0.05","tier":"metered","description":"Signed on-chain read of the ERC-8004 'Trustless Agents' registries (Identity + Reputation singletons, live on Base mainnet). Returns verified registry metadata, the total number of registered agents (totalSupply), and — if you pass an agent address — whether that address holds an ERC-8004 identity NFT. Read-only eth_call, no funds; the whole reading is Ed25519-signed by 0n1x so an agent can prove the registry fact before trusting a counterparty.","input_schema":{"type":"object","properties":{"address":{"type":"string","description":"Optional agent EVM address (0x...) to check for an ERC-8004 identity (balanceOf > 0)."},"registry":{"type":"string","enum":["identity","reputation"],"description":"Which singleton to read (default 'identity')."},"chain":{"type":"string","enum":["base"],"description":"Chain to read (default 'base' = Base mainnet, eip155:8453)."}},"required":[]}},{"name":"onyx_perm_check","price_usdc":"0.00","tier":"free","description":"Check whether an agent's proposed action stays inside its declared permission grant (allowed action, allowed merchant/domain, spend cap, rolling-window + velocity + per-counterparty budgets, expiry, principal, consent). Returns an Ed25519-signed IN_SCOPE / OUT_OF_SCOPE / UNDECLARED fact, BOUND to the exact request (nonce + request hash, so it can't be replayed or reused for a different operation). Facts, not judgments — a mechanical conformance check, never a verdict on intent. Verify free with onyx_attestation_verify.","input_schema":{"type":"object","properties":{"action":{"type":"object","description":"The proposed action: {type, amount_usdc?, merchant?, domain?}","properties":{"type":{"type":"string","description":"e.g. transact, verify, read"},"amount_usdc":{"type":"number"},"merchant":{"type":"string"},"domain":{"type":"string"}}},"grant":{"type":"object","description":"The agent's permission grant (onyx-perm-grant/v0): allowed_actions, allowed_merchants, allowed_domains, spend_max_usdc, spend_window_usdc, spend_window_sec, velocity_max, per_counterparty_budget, principal, consent_ref, expires_at"},"history":{"type":"array","description":"Optional: recent settled actions for window/velocity checks, each {amount_usdc, ts (unix), counterparty?}. Stateless — the caller supplies the tally; the fact binds to it.","items":{"type":"object"}}},"required":["action","grant"]}},{"name":"onyx_perm_grant","price_usdc":"0.00","tier":"free","description":"Mint a signed permission grant (onyx-perm-grant/v0) for an agent: a portable, Ed25519-notarized declaration of the scope it may act within (allowed_actions, allowed_merchants/domains, spend_max_usdc, principal, consent_ref, expires_at). Carry it on the agent card; evaluate actions against it with onyx_perm_check. Facts, not judgments — attests what was declared, not that the grantor holds the authority.","input_schema":{"type":"object","properties":{"agent":{"type":"string","description":"Who is granted (did:pkh / wallet / agent id)"},"principal":{"type":"string","description":"Who grants the authority (did / email / org)"},"consent_ref":{"type":"string","description":"Proof of consent (AP2 mandate id / signature hash)"},"allowed_actions":{"type":"array","items":{"type":"string"},"description":"Subset of ['read', 'verify', 'transact', 'sign', 'negotiate', 'subscribe']; deny-by-default"},"allowed_merchants":{"type":"array","items":{"type":"string"}},"allowed_domains":{"type":"array","items":{"type":"string"}},"spend_max_usdc":{"type":"number","description":"Hard ceiling per action"},"spend_window_usdc":{"type":"number","description":"Optional rolling-window aggregate cap"},"spend_window_sec":{"type":"integer","description":"Window length in seconds (default 86400)"},"velocity_max":{"type":"integer","description":"Max number of transacts per window"},"per_counterparty_budget":{"type":"number","description":"Max aggregate spend per single counterparty per window"},"purpose":{"type":"string"},"expires_at":{"type":"integer","description":"Unix time the grant lapses"}},"required":["agent"]}},{"name":"onyx_security_flags","price_usdc":"0.00","tier":"free","description":"Return the signed security posture of an agent: a list of OBSERVED, offline-verifiable security flags (insecure transport, no permission scope/principal/consent, no spend cap, unsigned identity, counterparty-blind, injection surface, unbounded skills). Pass an endpoint URL and/or the agent's record. Facts, not judgments — flags are conditions, never verdicts on intent. Ed25519-signed; verify free with onyx_attestation_verify.","input_schema":{"type":"object","properties":{"endpoint":{"type":"string","description":"The agent's endpoint URL"},"agent":{"type":"object","description":"Optional: the agent's record (name, description, skills, and any permission fields) for a deeper scan"}}}},{"name":"onyx_payment_gate","price_usdc":"0.05","tier":"metered","description":"Pre-payment clearance for agents. Call this BEFORE settling with a merchant over x402/AP2: give the merchant domain (optionally the amount and the price you expect to pay). Onyx assembles a single hard clearance — PROCEED / REVIEW / HOLD — from its Ed25519-signed observation log: Onyx-Verified status, live TLS/reachability/off-domain-redirect facts, domain age, and observed-vs-expected price. Facts with methods disclosed, signed and verifiable; Onyx never asserts the merchant is honest — it ensures you read real signed ground-truth before you move money. The check agents run at the payment chokepoint.","input_schema":{"type":"object","properties":{"domain":{"type":"string","description":"Merchant domain or URL you are about to pay, e.g. shop.example.com"},"amount_usd":{"type":"number","description":"Optional amount you are about to pay (for the record; large amounts lower the auto-PROCEED bar)."},"expected_price":{"type":"number","description":"Optional price you were quoted/expect. If the page shows a price, a large deviation downgrades the clearance."},"product_url":{"type":"string","description":"Optional specific product URL to read the observed price from."},"brand":{"type":"string","description":"Optional brand the merchant CLAIMS to be (e.g. 'Russell & Bromley'). If a well-known brand is claimed on a freshly-registered domain, the clearance is HELD — the cloned-storefront pattern."}},"required":["domain"]}},{"name":"onyx_preflight","price_usdc":"0.02","tier":"metered","description":"Preflight safety check for an x402-gated endpoint, BEFORE you pay it. Probes the URL live (~8s timeout), confirms it actually speaks x402 (a proper HTTP 402 with a parseable payment-requirements body — not a decoy demanding payment in prose), parses the advertised price to human USDC, sanity-checks the payTo address (0x format + EIP-55 checksum) and network (mainnet vs silently-testnet), and flags dead/cold/zombie endpoints and absurd price traps. Returns one signed verdict — OK, WARN, or AVOID — plus every disclosed flag behind it. Sign facts, not judgments: each flag traces to a checkable rule, not an opaque trust score.","input_schema":{"type":"object","properties":{"url":{"type":"string","description":"The x402-gated endpoint to preflight (http:// or https://)."},"timeout_seconds":{"type":"number","default":8.0,"description":"Probe timeout in seconds. Clamped to [2, 15]."}},"required":["url"]}},{"name":"onyx_research_intel","price_usdc":"0.05","tier":"metered","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.","input_schema":{"type":"object","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"]}},{"name":"onyx_retail_price_check","price_usdc":"0.02","tier":"metered","description":"Ground-truth retail oracle. Give a product URL; get the real current price, currency, and in-stock state as actually fetched now — with the extraction source (JSON-LD / OpenGraph / microdata) as evidence. Covers the long tail of no-API shops where agents otherwise hallucinate prices. Never guesses: returns price=None with confidence='none' when the page exposes no machine-readable price. Use before an agent quotes, compares, or transacts on a price it would otherwise invent.","input_schema":{"type":"object","properties":{"url":{"type":"string","description":"Full product page URL (http/https). The exact page whose price + availability you want observed."},"expect_price":{"type":"number","description":"Optional. A price you believe is current. If given, the result includes matches_expected:bool + drift so a caller can detect a stale/hallucinated quote."}},"required":["url"]}},{"name":"rhinogent_identity","price_usdc":"0.00","tier":"free","description":"Rhinogent identity card: give a self-custody Base (EVM) address, get back a signed, verifiable identity — deterministic callsign, did:pkh, and the agent's earned 0n1x-Verified credential. Keys never leave the agent; this issues only the public signed identity. The front door of the agent identity wallet.","input_schema":{"type":"object","properties":{"address":{"type":"string","description":"The agent's self-custody Base/EVM address, 0x-prefixed (42 chars)."}},"required":["address"]}},{"name":"rhinogent_mandate","price_usdc":"0.00","tier":"free","description":"Author a signed spend mandate for an agent: per-action and rolling-window USDC caps, merchant/domain allowlists, velocity limit and expiry — issued as a signed PERM_v0 grant the agent adopts. 'Transacts autonomously, within the boundaries you define.'","input_schema":{"type":"object","properties":{"agent":{"type":"string","description":"Agent the mandate authorizes (address or callsign)."},"principal":{"type":"string","description":"Optional: the human/entity granting authority."},"spend_max_usdc":{"type":"number","description":"Hard ceiling per single action (USDC)."},"daily_cap_usdc":{"type":"number","description":"Rolling 24h aggregate cap (USDC)."},"allowed_merchants":{"type":"array","items":{"type":"string"},"description":"Merchant allowlist (deny by default)."},"allowed_domains":{"type":"array","items":{"type":"string"},"description":"Domain allowlist (deny by default)."},"allowed_actions":{"type":"array","items":{"type":"string"},"description":"Permitted action verbs (deny by default)."},"velocity_max":{"type":"integer","description":"Max number of transactions per window."},"expires_at":{"type":"integer","description":"Unix time the mandate lapses."},"purpose":{"type":"string","description":"Human-readable purpose of the mandate."}},"required":["agent"]}},{"name":"rhinogent_verify_counterparty","price_usdc":"0.25","tier":"premium","description":"Know-your-counterparty for agents. Before your agent pays a merchant, get Ed25519-signed raw facts about who it's paying: domain registration age, live TLS cert, reachability + off-domain redirects, brand-impersonation similarity, and observed price vs expected. Facts only (never 'legit/scam') — the one check every other agent wallet skips.","input_schema":{"type":"object","properties":{"domain":{"type":"string","description":"Counterparty/storefront domain or URL the agent is about to pay."},"brand":{"type":"string","description":"Optional brand the storefront claims to be (enables the impersonation-similarity observation)."},"expected_price":{"type":["number","string"],"description":"Optional price the agent expects to pay (enables the price-deviation observation)."}},"required":["domain"]}},{"name":"onyx_secure_payment","price_usdc":"0.25","tier":"premium","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 takes custody.","input_schema":{"type":"object","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"]}},{"name":"onyx_signature_guard","price_usdc":"0.10","tier":"metered","description":"Pre-signature firewall for OFF-CHAIN drains — the check before your agent signs an EIP-712 typed-data message (Permit, Permit2, Seaport order). These drain a wallet with no on-chain approval: the signature itself is the authorization. Give the typed-data; Onyx identifies what it authorizes, flags unlimited token-permit values, EOA/unverified spenders, NFT-order signatures, and bad deadlines, and returns a SIGNED ALLOW/REVIEW/BLOCK + plain-English explanation. Covers the #2 wallet-drain vector that on-chain tx checks miss entirely.","input_schema":{"type":"object","properties":{"typed_data":{"type":"object","description":"The full EIP-712 typed-data object the agent is about to sign: {domain, primaryType, types, message}."}},"required":["typed_data"]}},{"name":"onyx_token_risk","price_usdc":"0.10","tier":"metered","description":"Signed token-security oracle. Give a token contract (and chain); get the real on-chain risk facts as read right now — honeypot status, buy/sell tax, mintable, ownership-reclaim, transfer-pausable, proxy, LP-lock, holder count — plus a transparent 0-100 risk score and verdict you can recompute from the itemized factors. Ed25519-signed + timestamped so an agent can PROVE it screened a token before buying. Use before any agent swaps into or quotes an ERC-20 it didn't issue.","input_schema":{"type":"object","properties":{"contract":{"type":"string","description":"Token contract address (0x… 20-byte hex) to screen."},"chain":{"type":"string","description":"Chain the token lives on. Name ('base','ethereum','bsc','polygon','arbitrum','optimism','avalanche') or numeric chain id. Default 'base'.","default":"base"}},"required":["contract"]}},{"name":"onyx_track_record","price_usdc":"0","tier":"free","description":"Onyx's measured precision — the proof no other x402 security tool can show. Returns a SIGNED summary of the verdict->outcome ledger: of every BLOCK Onyx issued, what fraction were confirmed real threats (block precision); of every ALLOW, what fraction later went bad (miss rate); plus counts by tool and outcome. Built from real reported outcomes via onyx_outcome_report. Free and public — this is how you verify Onyx is calibrated, not just confident.","input_schema":{"type":"object","properties":{"tool":{"type":"string","description":"Optional. Restrict the track record to one tool (e.g. onyx_tx_guard)."}},"required":[]}},{"name":"onyx_tx_guard","price_usdc":"0.10","tier":"metered","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.","input_schema":{"type":"object","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"]}},{"name":"onyx_tx_preflight","price_usdc":"0.10","tier":"metered","description":"Universal pre-sign firewall — the check before your agent signs ANY transaction. Give the tx (to, data, value); Onyx decodes the 4-byte selector + args, tells you in plain terms what it does, and flags the wallet-drain patterns: unlimited approve(), setApprovalForAll (blanket NFT approval), transfers to fresh/EOA recipients, raw ETH sends to unknown addresses, and calls to unverified targets. Returns a SIGNED ALLOW/REVIEW/BLOCK + human explanation. The single highest-frequency safety gate an on-chain agent has — every signed tx should pass through it.","input_schema":{"type":"object","properties":{"to":{"type":"string","description":"The transaction's `to` address (target contract or recipient). Required."},"data":{"type":"string","description":"The transaction calldata (0x-hex). Omit/empty for a plain ETH transfer."},"value_wei":{"type":"string","description":"Optional. ETH value being sent, in wei (base-10 string)."}},"required":["to"]}},{"name":"onyx_verified_issue","price_usdc":"2.00","tier":"premium","description":"Get your domain Onyx Verified. Onyx runs its published objective checks (live TLS, reachability, no off-domain redirect, registration age disclosed) and, on pass, issues an Ed25519-signed verified record onto the public Observation Log — instantly queryable at /merchant/{domain} — plus a live badge (served by Onyx, so it can't be faked or staled) and a machine-readable status URL agents check before they pay you. Valid 90 days, renewable. This attests your domain PASSED published checks, like a CA certificate — Onyx never claims you are 'honest' or 'safe'; the value is a neutral, verifiable, public presence agents can trust.","input_schema":{"type":"object","properties":{"domain":{"type":"string","description":"The domain to verify, e.g. shop.example.com (your storefront/agent endpoint)."},"contact":{"type":"string","description":"Optional contact (email/handle) recorded with the issuance for renewal notices."},"agent_id":{"type":"string","description":"Optional agent id to cross-link this verified domain to an agent identity."}},"required":["domain"]}},{"name":"onyx_verify_explain","price_usdc":"0","tier":"free","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.","input_schema":{"type":"object","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"]}},{"name":"onyx_x402_receipt_verify","price_usdc":"0","tier":"free","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.","input_schema":{"type":"object","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"]}}]}