Skip to content

AgentPay — trust routing + spend caps for x402 agents

by romudille-bit · remote · local (npm) · no sign-in to list tools · v2.7.3 · published by GitHub user romudille-bit

Buyer-side trust oracle + capped sessions for x402 agents: verified_route, receipts, 17 free tools.

Changes · 13

23 tools: 13 change things and 10 only read.

Scanned Oct 21, 2026

6 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http agentpay https://agentpay.tools/mcp

Findings

Matches of fixed checks, with the text they matched.

5 warn1 info
  • The server marks "open_interest" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "open_interest" says "open": a word for a change.

    What this check looks for
  • The description contains a 42-character base64 string.

    Matched text

    description: "...sponse: {"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","chain":"ethereum"..."

    What this check looks for
  • The description contains a 42-character base64 string.

    Matched text

    description: "..."contract_address":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","chain":"ethereum"..."

    What this check looks for
  • The server marks "dune_query" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "dune_query" says "query": a word for reading.

    What this check looks for
  • The server marks "url_reader" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The description is 2,185 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...402 over MCP: an unpaid call returns PaymentRequired; pay via _meta x402/payment)"

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

23 tools

Changes things 13Claude Code: ask
  • crypto_newsLatest crypto news and community sentiment from r/CryptoCurrency for any token Use when: You need recent news headlines or community sentiment for one or more crypto tokens.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Latest crypto news and community sentiment from r/CryptoCurrency for any token Use when: You need recent news headlines or community sentiment for one or more crypto tokens. Not for: you need general web news or documentation — web_search; a specific article's text — url_reader; a numeric sentiment gauge — fear_greed_index. Returns: headlines[] with title, url, sentiment (bullish/neutral/bearish), score, published_at Example response: {"currencies":"ETH","headlines":[{"title":"Ethereum devs confirm Pectra upgrade timeline","url":"https://reddit.com/r/CryptoCurrency/...","sentiment":"bullish","score":1842,"published_at":"2026-03-22T08:14:00Z"},{"title":"ETH gas fees drop to yearly lows","url":"https://reddit.com/r/CryptoCurrency/...","sentiment":"bullish","score":934,"published_at":"2026-03-22T06:31:00Z"}],"source":"reddit"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Crypto News
    • readOnlyHint: true
    • openWorldHint: true
  • defi_tvlDeFi protocol Total Value Locked from DeFiLlama.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    DeFi protocol Total Value Locked from DeFiLlama. Returns top 10 or a specific protocol. Use when: You need the Total Value Locked in a specific DeFi protocol or want to compare the top protocols by TVL. Not for: you want the best yield for a token — yield_scanner; protocol revenue or custom metrics — dune_query. Returns: tvl, change_1h, change_1d, change_7d, chains[], category for the protocol (or top 10 list) Example response: {"protocol":"aave","tvl":23800000000,"change_1h":0.12,"change_1d":-1.43,"change_7d":3.21,"chains":["Ethereum","Polygon","Avalanche","Base"],"category":"Lending","source":"defillama"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Defi Tvl
    • readOnlyHint: true
    • openWorldHint: true
  • dune_queryRun any Dune Analytics query and return live onchain results by query ID.1 finding

    Why it is in this group

    • The name "dune_query" says "query": a word for reading.
    • The description's first verb is "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "dune_query" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "dune_query" says "query": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Run any Dune Analytics query and return live onchain results by query ID. Use fast_only=True for live bots — returns cached result instantly or raises immediately, never blocks. Use when: You need deep onchain analytics from a specific Dune query — protocol revenue, user counts, custom metrics. Not for: you have no Dune query ID — the other tools cover prices, derivatives, TVL and security without one; you need sub-second answers — set fast_only=true or use a cached tool. Returns: rows[], columns[], row_count, generated_at from the Dune Analytics query result Example response: {"query_id":3810512,"row_count":2,"columns":["protocol","revenue_usd"],"rows":[{"protocol":"Uniswap V3","revenue_usd":1243800},{"protocol":"Aave V3","revenue_usd":987200}],"generated_at":"2026-03-22T00:00:00Z","source":"dune"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Dune Query
    • readOnlyHint: true
    • openWorldHint: true
  • estimate_planPrice a multi-tool plan BEFORE spending anything.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Price a multi-tool plan BEFORE spending anything. Submits the tool calls an agent intends to make to the gateway's free /v1/plan/estimate and returns per-step cost, total, a fits-budget verdict, and a cheaper alternative per paid step. No payment, no wallet needed. Use when: planning a multi-step task with paid tools, "what would this cost", "does this plan fit my budget", or before committing a Session cap.

    Annotations the server declares

    • title: Estimate Plan (pre-flight plan pricing)
    • readOnlyHint: true
    • openWorldHint: true
  • fear_greed_indexCrypto Fear & Greed Index (0=extreme fear, 100=extreme greed) with optional history Use when: You need to gauge overall crypto market sentiment or mood — whether the market is fear…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Crypto Fear & Greed Index (0=extreme fear, 100=extreme greed) with optional history Use when: You need to gauge overall crypto market sentiment or mood — whether the market is fearful or greedy. Not for: you want token-specific sentiment — crypto_news (per-token headlines) or funding_rates (leveraged positioning). Returns: value (0–100), value_classification (e.g. 'Greed'), optional history[] Example response: {"value":10,"value_classification":"Extreme Fear","timestamp":1774137600,"source":"alternative.me"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Fear Greed Index
    • readOnlyHint: true
    • openWorldHint: true
  • open_interestGet total open interest in perpetual futures for any asset, with 1h and 24h change rates.1 finding

    Why it is in this group

    • The name "open_interest" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "open_interest" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "open_interest" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Get total open interest in perpetual futures for any asset, with 1h and 24h change rates. Pairs with funding_rates to complete the derivatives picture — rising OI with high funding = overcrowded position. Use when: You need to know total open interest in perpetual futures and whether it's rising or falling. Combine with funding_rates for a full derivatives picture. Not for: you need the funding cost of holding a position — funding_rates; a single trade verdict — pre_trade_check. Returns: total_oi_usd, oi_change_1h_pct, oi_change_24h_pct, long_short_ratio, per-exchange breakdown Example response: {"asset":"ETH","price_usd":2069.73,"total_oi_usd":8420000000,"oi_change_1h_pct":1.2,"oi_change_24h_pct":12.4,"long_short_ratio":1.08,"exchanges":[{"exchange":"Binance","oi_contracts":4066123.5,"oi_change_1h_pct":1.2,"oi_change_24h_pct":12.4,"long_short_ratio":1.08}],"source":"binance/bybit"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Open Interest
    • readOnlyHint: true
    • openWorldHint: true
  • pre_trade_checkOne-call pre-trade sanity check: 'I want to long $X of SYMBOL — is now sane?' Combines live orderbook slippage at YOUR size, cross-exchange funding (carry cost), open-interest crow…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    One-call pre-trade sanity check: 'I want to long $X of SYMBOL — is now sane?' Combines live orderbook slippage at YOUR size, cross-exchange funding (carry cost), open-interest crowding, and contract security (GoPlus) into a single ok/caution/avoid verdict with a per-factor breakdown. Major ERC-20 addresses (LINK, UNI, ARB, OP, AAVE, PEPE, SHIB) resolve automatically; native assets (BTC, ETH, SOL, ...) report security n/a; an unrecognized token without token_address reads 'unknown' and caps the verdict at caution — an unscreened contract can never read 'ok'. Replaces four API integrations and the judgment layer on top of them. Raw component data embedded so you can apply your own thresholds. Use when: An agent (or human) is about to enter a position and wants one verdict covering liquidity, carry, crowding, and security — instead of four raw feeds plus its own synthesis. Not for: you need a single raw factor — funding_rates, open_interest, orderbook_depth or token_security are free; you are not about to size a position. This call settles $0.01 on-chain. Returns: verdict (ok/caution/avoid), factors{liquidity,carry,crowding,security} each with level + reason, components{orderbook_depth,funding_rates,open_interest}, symbol, side, size_usd Example response: {"symbol":"ETH","side":"long","size_usd":50000,"verdict":"caution","factors":{"liquidity":{"level":"ok","slippage_pct":0.011,"bucket_usd":50000,"reason":"fills within 0.011% of best ask"},"carry":{"level":"caution","median_funding_pct":0.062,"annualized_pct":67.9,"reason":"longs paying elevated funding"},"crowding":{"level":"ok","long_short_ratio":1.4,"oi_change_24h_pct":3.2,"reason":"positioning unremarkable"},"security":{"level":"skipped","reason":"no token_address provided"}}} Price: $0.01 USDC per call (x402 over MCP: an unpaid call returns PaymentRequired; pay via _meta x402/payment)

    Annotations the server declares

    • title: Pre Trade Check
    • readOnlyHint: false
    • openWorldHint: true
  • routeLegacy alias of verified_route (kept for back-compat).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Legacy alias of verified_route (kept for back-compat). Find and judge the best paid x402 tool for a need, within a budget. Discovers across Coinbase Bazaar, drops stubs (no schema / factory clones), ranks survivors by real usage (unique payers × 3 + calls + recency bonus), enforces the budget, price- tiebreaks quality-equal candidates. Returns ranked candidates + a recommendation + ready-to-pay details. Advise-only — no payment happens here. Prefer verified_route (same vetting, matches the paid tool + Bazaar listing). Use when: "which x402 tool for X", "find a paid API for X under $Y".

    Annotations the server declares

    • title: Route (x402 marketplace routing, legacy)
    • readOnlyHint: true
    • openWorldHint: true
  • session_createOpen a budget-capped agent session on AgentPay.No findings

    Why it is in this group

    • The name "session_create" says "create": a word for a change.
    Description, as the server wrote it
    Open a budget-capped agent session on AgentPay. Pay $0.01 USDC once — get a session_id, budget config, and gateway URL. Enforces a hard max_spend cap across all subsequent tool calls via the AgentPay SDK. The entry point for agents discovering AgentPay on Base Bazaar. Use when: You want to start an AgentPay session with a hard spend cap and get a session_id for tracking. Not for: you only need a session for free tools — the SDK's quickstart() opens one at no cost; this call settles $0.01 on-chain. Returns: session_id, max_spend, agent_address, gateway_url, tools_endpoint, created_at, receipt (tx_hash + network) Example response: {"session_id":"f47ac10b-58cc-4372-a567-0e02b2c3d479","max_spend":"0.10","agent_address":"GBCVQCNFWPM3GDO4GPT4YEQ42ZHPY67QTJA3WN5ERQIKQDXKBX62SLNJ","label":null,"gateway_url":"https://agentpay.tools","tools_endpoint":"https://agentpay.tools/tools","created_at":"2026-05-27T12:00:00Z","receipt":{"tx_hash":"0xabc...def","network":"base","amount_usdc":"0.01"},"sdk_hint":"Use `from agentpay import Session` to enforce the max_spend cap client-side."} Price: $0.01 USDC per call (x402 over MCP: an unpaid call returns PaymentRequired; pay via _meta x402/payment)

    Annotations the server declares

    • title: Session Create
    • readOnlyHint: false
    • openWorldHint: true
  • token_securityScan any token contract for honeypot, rug pull, and security risks Use when: You need to check if a token contract is safe before trading or investing.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "..."contract_address":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","chain":"ethereum"..."

      What this check looks for
    Description, as the server wrote it
    Scan any token contract for honeypot, rug pull, and security risks Use when: You need to check if a token contract is safe before trading or investing. Not for: the asset is a native coin (BTC, ETH, SOL) with no contract — nothing to scan; you want liquidity or price — orderbook_depth / token_price. Ethereum and BSC contracts only. Returns: risk_level, is_honeypot, buy_tax, sell_tax, holder_count, owner_address, is_mintable, can_take_back_ownership Example response: {"contract_address":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","chain":"ethereum","risk_level":"low","is_honeypot":false,"buy_tax":0,"sell_tax":0,"holder_count":842341,"is_mintable":false,"can_take_back_ownership":false,"source":"goplus"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Token Security
    • readOnlyHint: true
    • openWorldHint: true
  • url_readerConvert any URL to clean, LLM-ready markdown.1 finding

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "url_reader" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert any URL to clean, LLM-ready markdown. Strips ads, nav, and boilerplate — returns just the content. No API key needed. Use when: You need to read the content of a web page or article and get clean, structured text for further processing. Not for: you do not have a URL yet — web_search returns pages with content; the page requires a login or renders only in a browser. Returns: content (markdown), url, length, truncated flag Example response: {"url":"https://example.com","content":"# Example Domain\n\nThis domain is for use in illustrative examples...","length":1256,"truncated":false,"source":"jina_reader"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Url Reader
    • readOnlyHint: true
    • openWorldHint: true
  • verified_routePaid buyer-side trust oracle: 'I need X, budget $Y — which x402 tool is real?' Sweeps the WHOLE x402 marketplace across many queries (a single search shows only a slice), collapses…1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The description is 2,185 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...402 over MCP: an unpaid call returns PaymentRequired; pay via _meta x402/payment)"

      What this check looks for
    Description, as the server wrote it
    Paid buyer-side trust oracle: 'I need X, budget $Y — which x402 tool is real?' Sweeps the WHOLE x402 marketplace across many queries (a single search shows only a slice), collapses sybil/factory clusters (one wallet stamping many fake-distinct listings → one entry), ranks the genuinely-used survivors by real unique-payer usage, and returns ONE vetted recommendation with a ready-to-pay x402 challenge. The credit-bureau check an agent cannot do itself in one query — pay $0.01 to avoid paying a scam or a dead stub. Use when: An agent is about to pay an unknown x402 tool and wants the real, used, non-sybil one under budget — not just the cheapest. Not for: you already know which AgentPay tool you need — call it directly; you only want a free preview of the marketplace ranking — the MCP's free preview (verified_route_preview on the remote server). This call settles $0.01 on-chain. Returns: recommendation (with ready_to_pay), survivors[] (each with typed evidence[]), catalog{scanned, real_providers, sybil_collapsed, biggest_factory}, vetting summary Example response: {"need":"dex pair liquidity","chain":null,"budget_usd":"1","recommendation":{"name":"Otto AI","url":"https://otto.example/dex","price_usd":"0.001","network":"eip155:8453","pay_to":"0x0e84ddedaae6a7","payers30d":200,"calls30d":3246,"quality":3851,"flags":[],"evidence":[{"type":"delivery","source":"agentpay-prober","metric":"delivery_rate","value":1,"n":12,"observed_at":"2026-09-30T13:05:00Z","ref":"/s/otto-example-dex-1a2b3c"},{"type":"third-party","source":"coinbase-bazaar","metric":"unique_payers_30d","value":200,"observed_at":"2026-10-01T12:00:00Z","ref":null}],"ready_to_pay":{"url":"https://otto.example/dex","network":"eip155:8453","price_usd":"0.001","accepts":{"scheme":"exact","network":"eip155:8453"}}},"survivors":[],"catalog":{"scanned":117,"after_vetting":114,"real_providers":41,"unique_wallets":38,"sybil_collapsed":73,"biggest_factory":{"pay_to":"0x2bb72231eed3","listings":72}},"vetting":"swept 17 queries → 117 listings → collapsed 73 sybil listings → 41 real providers"} Price: $0.01 USDC per call (x402 over MCP: an unpaid call returns PaymentRequired; pay via _meta x402/payment)

    Annotations the server declares

    • title: Verified Route
    • readOnlyHint: false
    • openWorldHint: true
  • whale_activityDetect recent large wallet movements for a token (whale tracking) Use when: You need to detect large token transfers that may signal institutional moves, accumulation, or sell-offs…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Detect recent large wallet movements for a token (whale tracking) Use when: You need to detect large token transfers that may signal institutional moves, accumulation, or sell-offs. Not for: you need one address's holdings — wallet_balance; exchange order-book size rather than on-chain transfers — orderbook_depth. Ethereum ERC-20 transfers only. Returns: large_transfers[] with from, to (full addresses), amount, usd_value, minutes_ago, tx_hash; total_volume_usd Example response: {"token":"USDC","large_transfers":[{"from":"0xabababababababababababababababababababab","to":"0xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd","amount":5000000,"usd_value":5000000,"minutes_ago":12,"tx_hash":"0x9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f"},{"from":"0x1111111111111111111111111111111111111111","to":"0x2222222222222222222222222222222222222222","amount":2500000,"usd_value":2500000,"minutes_ago":34,"tx_hash":"0x7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a"}],"total_volume_usd":7500000,"source":"etherscan"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Whale Activity
    • readOnlyHint: true
    • openWorldHint: true
Only reads 10Claude Code: allow
  • funding_ratesGet perpetual futures funding rates across Binance, Bybit, and OKX Use when: You need funding rates to gauge leveraged market sentiment or cost of holding a perp position.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get perpetual futures funding rates across Binance, Bybit, and OKX Use when: You need funding rates to gauge leveraged market sentiment or cost of holding a perp position. Not for: you need open interest or long/short ratio — open_interest; one verdict combining funding, OI, slippage and security for a trade — pre_trade_check. Returns: funding_rate_pct, annualized_rate_pct, sentiment (bullish/neutral/bearish) per exchange Example response: {"asset":"BTC","rates":[{"exchange":"binance","funding_rate_pct":0.012,"annualized_rate_pct":13.14,"sentiment":"bullish"},{"exchange":"bybit","funding_rate_pct":0.011,"annualized_rate_pct":12.04,"sentiment":"bullish"},{"exchange":"okx","funding_rate_pct":0.009,"annualized_rate_pct":9.85,"sentiment":"neutral"}],"source":"binance/bybit/okx"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Funding Rates
    • readOnlyHint: true
    • openWorldHint: true
  • gas_trackerGet current Ethereum gas prices (slow, standard, fast) Use when: You need to know current Ethereum gas prices before submitting a transaction or estimating costs.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get current Ethereum gas prices (slow, standard, fast) Use when: You need to know current Ethereum gas prices before submitting a transaction or estimating costs. Not for: you need gas as part of a broader read — market_snapshot already includes standard gwei; only Ethereum mainnet gas is reported. Returns: slow_gwei, standard_gwei, fast_gwei, base_fee_gwei, estimated confirmation times Example response: {"slow_gwei":1.5,"standard_gwei":2,"fast_gwei":3,"base_fee_gwei":1.2,"source":"etherscan"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Gas Tracker
    • readOnlyHint: true
    • openWorldHint: true
  • market_snapshotFed rate, inflation proxy, S&P 500, BTC, ETH, and gas in one call.No findings

    Why it is in this group

    • The name "market_snapshot" says "snapshot": a word for reading.
    Description, as the server wrote it
    Fed rate, inflation proxy, S&P 500, BTC, ETH, and gas in one call. Replaces three separate API integrations with a single normalized response — the only tool that gives you macro + crypto in one shot. Use when: You need a combined macro + crypto market overview in one call: S&P 500, Treasury yield, BTC, ETH, and Ethereum gas. Not for: you need one asset in depth — token_price, gas_tracker or funding_rates; history or time series — dune_query. Returns: sp500_price, sp500_change_pct, treasury_yield_10y, btc_price_usd, eth_price_usd, gas_standard_gwei, timestamp Example response: {"sp500_price":5234.18,"sp500_change_pct":-0.42,"treasury_yield_10y":4.31,"btc_price_usd":67200,"eth_price_usd":3450,"gas_standard_gwei":5.2,"timestamp":"2026-05-26T12:00:00Z","source":"yahoo_finance+coingecko+etherscan"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Market Snapshot
    • readOnlyHint: true
    • openWorldHint: true
  • orderbook_depthGet real bid/ask depth and slippage estimates at $10k, $50k, and $250k notional from Binance and Bybit.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get real bid/ask depth and slippage estimates at $10k, $50k, and $250k notional from Binance and Bybit. Use before sizing a position to know if you can execute without moving the market. Use when: You need to estimate slippage before executing a large trade. Tells you how much a $10k, $50k, or $250k order will move the market. Not for: you need market cap or 24h volume — token_market_data; a full pre-trade verdict at your size — pre_trade_check. Centralised-exchange books (Binance/Bybit) only, not DEX pools. Returns: best_bid, best_ask, spread_pct, depth with slippage_pct at $10k/$50k/$250k notional, per-exchange best prices Example response: {"asset":"ETH","pair":"ETH/USDT","best_ask":2071.5,"best_bid":2071.2,"spread_pct":0.0145,"depth":[{"notional_usd":10000,"slippage_pct":0.002,"executable":true},{"notional_usd":50000,"slippage_pct":0.008,"executable":true},{"notional_usd":250000,"slippage_pct":0.031,"executable":true}],"exchanges":[{"exchange":"Binance","best_ask":2071.5,"best_bid":2071.2},{"exchange":"Bybit","best_ask":2071.6,"best_bid":2071.1}],"source":"binance/bybit"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Orderbook Depth
    • readOnlyHint: true
    • openWorldHint: true
  • token_market_dataGet market cap, 24h volume, ATH, and price change for any token.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get market cap, 24h volume, ATH, and price change for any token. Note: does NOT return pool depth or slippage — for pre-trade liquidity estimates, use a dedicated orderbook tool. Use when: You need 24h trading volume, market cap, or all-time high for a token pair on decentralized exchanges. Not for: you only need the spot price — token_price is lighter; you need pool depth or slippage — orderbook_depth. Returns: volume_24h_usd, market_cap_usd, price_usd, ath_usd, price_change_24h_pct Example response: {"token_a":"ETH","token_b":"USDC","price_usd":2071.45,"volume_24h_usd":312847293,"volume_change_24h_pct":-8.3,"market_cap_usd":249800000000,"ath_usd":4878.26,"price_change_24h_pct":-3.91,"source":"coingecko"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Token Market Data
    • readOnlyHint: true
    • openWorldHint: true
  • token_priceGet the current USD price of any cryptocurrency token Use when: You need the current USD price, 24h change, or market cap of any cryptocurrency.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get the current USD price of any cryptocurrency token Use when: You need the current USD price, 24h change, or market cap of any cryptocurrency. Not for: you need volume, ATH or a pair quote — token_market_data; a one-call macro + crypto overview — market_snapshot; pool depth or slippage — orderbook_depth. Returns: price_usd, change_24h_pct, market_cap_usd, coin_id Example response: {"symbol":"ETH","price_usd":2069.73,"change_24h_pct":-4.04,"market_cap_usd":250330787714.19,"source":"coingecko"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Token Price
    • readOnlyHint: true
    • openWorldHint: true
  • verified_route_previewBuyer-side trust oracle for the x402 marketplace: "I need X, budget $Y — which tool is real?" Vets Coinbase Bazaar (discover → drop stubs/factory clones → rank by real unique-payer…No findings

    Why it is in this group

    • The name "verified_route_preview" says "preview": a word for reading.
    Description, as the server wrote it
    Buyer-side trust oracle for the x402 marketplace: "I need X, budget $Y — which tool is real?" Vets Coinbase Bazaar (discover → drop stubs/factory clones → rank by real unique-payer usage → budget-gate). This MCP runs the FREE single-query PREVIEW: it returns the vetted pick (name + usage stats + why) and survivor count to PROVE a real provider exists, but WITHHOLDS the provider URL + ready-to-pay x402 challenge. To get those — plus the full multi-query sweep + usage-based sybil-collapse + trust allowlist — call verified_route ($0.01: an unpaid call returns the x402 PaymentRequired, which a wallet-carrying client pays in-band), or use the agentpay-x402 SDK. This preview never charges. Use when: "which x402 tool for X", "find a real/trustworthy paid API for X", "avoid a scam or dead stub", "vet this provider before I pay".

    Annotations the server declares

    • title: Verified Route (x402 trust oracle, preview)
    • readOnlyHint: true
    • openWorldHint: true
  • wallet_balanceGet the token balances for any Ethereum or Stellar wallet address Use when: You need to look up the token holdings of an Ethereum or Stellar wallet address.1 finding

    Why it is in this group

    • The description's first verb is "get": a word for reading.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...sponse: {"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","chain":"ethereum"..."

      What this check looks for
    Description, as the server wrote it
    Get the token balances for any Ethereum or Stellar wallet address Use when: You need to look up the token holdings of an Ethereum or Stellar wallet address. Not for: you want a token's price or market data rather than one address's holdings — token_price / token_market_data; large transfers across many wallets — whale_activity. Ethereum addresses are 0x…, Stellar addresses G…; no other chains. Returns: list of token balances (symbol, amount) for the given address Example response: {"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","chain":"ethereum","balances":[{"token":"ETH","amount":"1.234"},{"token":"USDC","contract":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","amount":"500.00"}]} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Wallet Balance
    • readOnlyHint: true
    • openWorldHint: true
  • yield_scannerFind best DeFi yield opportunities across protocols for a given token Use when: You need to find the best yield/APY for a token across DeFi protocols.No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find best DeFi yield opportunities across protocols for a given token Use when: You need to find the best yield/APY for a token across DeFi protocols. Not for: you need a protocol's total TVL rather than pool APYs — defi_tvl; risk_level is a heuristic, run token_security on the pool's token before depositing. Returns: list of pools with protocol, apy, tvl_usd, chain, risk_level sorted by APY descending Example response: {"token":"USDC","pools":[{"protocol":"morpho","apy":8.74,"tvl_usd":312000000,"chain":"Ethereum","risk_level":"low"},{"protocol":"aave-v3","apy":5.21,"tvl_usd":1840000000,"chain":"Ethereum","risk_level":"low"},{"protocol":"compound-v3","apy":4.87,"tvl_usd":920000000,"chain":"Ethereum","risk_level":"low"}],"source":"defillama"} Price: $0.000 USDC per call

    Annotations the server declares

    • title: Yield Scanner
    • readOnlyHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 2.7.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http agentpay https://agentpay.tools/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__agentpay__token_price",
      "mcp__agentpay__gas_tracker",
      "mcp__agentpay__yield_scanner",
      "mcp__agentpay__orderbook_depth",
      "mcp__agentpay__wallet_balance",
      "mcp__agentpay__token_market_data",
      "mcp__agentpay__funding_rates",
      "mcp__agentpay__web_search",
      "mcp__agentpay__market_snapshot",
      "mcp__agentpay__verified_route_preview"
    ],
    "ask": [
      "mcp__agentpay__session_create",
      "mcp__agentpay__pre_trade_check",
      "mcp__agentpay__verified_route",
      "mcp__agentpay__open_interest",
      "mcp__agentpay__fear_greed_index",
      "mcp__agentpay__crypto_news",
      "mcp__agentpay__defi_tvl",
      "mcp__agentpay__token_security",
      "mcp__agentpay__dune_query",
      "mcp__agentpay__url_reader",
      "mcp__agentpay__whale_activity",
      "mcp__agentpay__route",
      "mcp__agentpay__estimate_plan"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as agentpay. Review it before you use it.