{"serverId":"mcp-registry/io.github.dimitrilaouanis-tech/onyx-mcp","tools":[{"name":"onyx_erc8004_lookup","fixed":{"name":"onyx_erc8004_lookup","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. (price: $0.05 USDC, tier: metered)","inputSchema":{"type":"object","required":[],"properties":{"chain":{"enum":["base"],"type":"string","description":"Chain to read (default 'base' = Base mainnet, eip155:8453)."},"address":{"type":"string","description":"Optional agent EVM address (0x...) to check for an ERC-8004 identity (balanceOf > 0)."},"registry":{"enum":["identity","reputation"],"type":"string","description":"Which singleton to read (default 'identity')."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":268,"tokensAfter":268},{"name":"onyx_mail_check","fixed":{"name":"onyx_mail_check","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. (price: $0 USDC, tier: free)","inputSchema":{"type":"object","required":["agent_id"],"properties":{"peek":{"type":"boolean","default":false,"description":"If true, don't mark messages read."},"limit":{"type":"integer","default":100,"description":"Max messages to return (<=500)."},"agent_id":{"type":"string","description":"You: agent name/callsign, or 0x address / did:pkh."},"unread_only":{"type":"boolean","default":false,"description":"Only return unread messages."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":204,"tokensAfter":204},{"name":"onyx_mail_send","fixed":{"name":"onyx_mail_send","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. (price: $0 USDC, tier: free)","inputSchema":{"type":"object","required":["to"],"properties":{"to":{"type":"string","description":"Recipient: agent name/callsign, or 0x address / did:pkh."},"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."},"message":{"type":"string","description":"The message to leave."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":242,"tokensAfter":242},{"name":"onyx_merchant_fact_check","fixed":{"name":"onyx_merchant_fact_check","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 ge","inputSchema":{"type":"object","required":["domain"],"properties":{"brand":{"type":"string","description":"Optional brand name you believe this storefront represents (e.g. 'Russell & Bromley'). Enables the brand-similarity observation."},"domain":{"type":"string","description":"Storefront domain or URL, e.g. brand-outlet-sale.com or https://shop.example.com/p/1"},"product_url":{"type":"string","description":"Optional specific product URL to extract the observed price from (defaults to the domain root)."},"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":342,"tokensAfter":342},{"name":"onyx_payment_gate","fixed":{"name":"onyx_payment_gate","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 ensu","inputSchema":{"type":"object","required":["domain"],"properties":{"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."},"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)."},"product_url":{"type":"string","description":"Optional specific product URL to read the observed price from."},"expected_price":{"type":"number","description":"Optional price you were quoted/expect. If the page shows a price, a large deviation downgrades the clearance."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":381,"tokensAfter":381},{"name":"onyx_perm_check","fixed":{"name":"onyx_perm_check","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 ","inputSchema":{"type":"object","required":["action","grant"],"properties":{"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"},"action":{"type":"object","properties":{"type":{"type":"string","description":"e.g. transact, verify, read"},"domain":{"type":"string"},"merchant":{"type":"string"},"amount_usdc":{"type":"number"}},"description":"The proposed action: {type, amount_usdc?, merchant?, domain?}"},"history":{"type":"array","items":{"type":"object"},"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":392,"tokensAfter":392},{"name":"onyx_retail_price_check","fixed":{"name":"onyx_retail_price_check","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. (price: $0.02 USDC, ","inputSchema":{"type":"object","required":["url"],"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":266,"tokensAfter":266},{"name":"onyx_secure_payment","fixed":{"name":"onyx_secure_payment","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","inputSchema":{"type":"object","required":["recipient","amount_usdc"],"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."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":325,"tokensAfter":325},{"name":"onyx_verify_explain","fixed":{"name":"onyx_verify_explain","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. (price: $0 USDC, tier: free)","inputSchema":{"type":"object","required":["payment_requirements"],"properties":{"now_unix":{"type":"integer","description":"Override current unix time for replay/CI use. Defaults to now."},"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, ...})."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":327,"tokensAfter":327},{"name":"rhinogent_verify_counterparty","fixed":{"name":"rhinogent_verify_counterparty","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. (price: $0.25 USDC, tier: premium)","inputSchema":{"type":"object","required":["domain"],"properties":{"brand":{"type":"string","description":"Optional brand the storefront claims to be (enables the impersonation-similarity observation)."},"domain":{"type":"string","description":"Counterparty/storefront domain or URL the agent is about to pay."},"expected_price":{"type":["number","string"],"description":"Optional price the agent expects to pay (enables the price-deviation observation)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":249,"tokensAfter":249}],"toolsChanged":10,"tokensSaved":0,"todo":[{"tool":"onyx_perm_grant","params":["purpose","allowed_domains","allowed_merchants"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}