Skip to content
Back to Teardrop

Card snapshot

api.teardrop.dev · 2026-08-25 12:04:05 UTC · c4a0b914f8ec549267eb37e9579a065096b891fd0a62bacb09b6ccbb3bc2127c

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "schema_version": "1.0",
  "protocolVersion": "1.0",
  "name": "Teardrop",
  "description": "Intelligence beyond the browser. A task-manager agent with AG-UI streaming, MCP tool discovery, and A2UI rendering.",
  "version": "1.5.0",
  "url": "https://api.teardrop.dev",
  "provider": {
    "organization": "Teardrop AI",
    "url": "https://api.teardrop.dev"
  },
  "documentationUrl": "https://api.teardrop.dev/docs",
  "supportedInterfaces": [
    {
      "url": "https://api.teardrop.dev/agent/run",
      "protocolBinding": "https://teardrop.ai/bindings/ag-ui-sse/v1",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://api.teardrop.dev/message:send",
      "protocolBinding": "https://teardrop.ai/bindings/a2a-jsonrpc/v1",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extendedAgentCard": false,
    "a2ui": true,
    "mcp_tools": true,
    "multi_turn": true,
    "human_in_the_loop": true,
    "billing": {
      "enabled": true,
      "scheme": "exact",
      "network": "eip155:8453",
      "payment_endpoint": "/agent/run",
      "pricing_endpoint": "/billing/pricing"
    },
    "asyncTasks": {
      "enabled": true,
      "request_header": "Prefer: respond-async",
      "status_endpoint": "/message:status/{task_id}",
      "max_concurrency": 8,
      "queue_size": 100
    },
    "marketplace": {
      "enabled": true,
      "catalog_endpoint": "/marketplace/catalog",
      "mcp_gateway_endpoint": "/tools/mcp"
    },
    "eventTriggers": {
      "enabled": true,
      "registration_endpoint": "/agent/event-triggers",
      "dispatch_endpoint_template": "/agent/events/{trigger_token}",
      "task_endpoint_template": "/agent/event-triggers/{schedule_id}/runs/{run_id}",
      "registration_auth": "bearer_jwt",
      "dispatch_auth": "X-Teardrop-Trigger-Secret",
      "max_event_bytes": 65536,
      "max_per_org": 20,
      "max_concurrency": 8,
      "max_concurrency_per_org": 4
    }
  },
  "protocols": [
    "ag-ui",
    "a2a",
    "mcp"
  ],
  "endpoints": {
    "agent_run": "/agent/run",
    "health": "/health",
    "docs": "/docs",
    "mcp_tools": "/tools/mcp",
    "a2a_message": "/message:send",
    "a2a_message_status": "/message:status/{task_id}",
    "marketplace_catalog": "/marketplace/catalog",
    "event_trigger_registration": "/agent/event-triggers",
    "event_trigger_dispatch": "/agent/events/{trigger_token}",
    "event_trigger_task": "/agent/event-triggers/{schedule_id}/runs/{run_id}"
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "task_planning",
      "name": "task_planning",
      "description": "Break complex tasks into actionable steps."
    },
    {
      "id": "decode_transaction",
      "name": "decode_transaction",
      "description": "Decode a transaction's calldata into a human-readable function name and arguments. Also returns transaction status (1=success, 0=revert), gas used, and block number. Optionally provide an ABI for precise decoding; otherwise uses 4byte.directory. Supports Ethereum mainnet and Base.",
      "tags": [
        "web3",
        "ethereum",
        "transaction",
        "decode",
        "calldata"
      ],
      "version": "1.0.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "delegate_to_agent",
      "name": "delegate_to_agent",
      "description": "Delegate a task to a remote A2A-compliant agent. Discovers the agent's capabilities via its agent card, sends it a message, and returns the result. Use when a task requires specialist capabilities beyond your own tools.",
      "tags": [
        "a2a",
        "delegation",
        "agent"
      ],
      "version": "1.0.0"
    },
    {
      "id": "get_chain_metrics",
      "name": "get_chain_metrics",
      "description": "Compare blockchain ecosystem health using DeFiLlama current TVL, 7-day and 30-day TVL changes, and aggregate fee activity. Pass chains such as ['Ethereum', 'Arbitrum', 'Solana'] for a focused comparison, or omit chains to inspect the highest-TVL ecosystems. Historical and fee fields fail open when DeFiLlama does not cover a chain.",
      "tags": [
        "defi",
        "chains",
        "tvl",
        "fees",
        "finance",
        "defillama"
      ],
      "version": "1.1.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_dex_quote",
      "name": "get_dex_quote",
      "description": "Get the best Uniswap v3 swap quote on Ethereum (chain_id=1) or Base (chain_id=8453) via direct on-chain QuoterV2 calls. Queries all four fee tiers (100/500/3000/10000 bps) in parallel and returns the tier with the highest output amount, along with per-tier breakdown. Inputs are raw uint256 amounts and EIP-55 checksummed addresses; native ETH is not quoted directly \u2014 pass the WETH address. Returns no_liquidity=true when no pool exists for the pair. Point-in-time quote at the returned block_number; do not cache.",
      "tags": [
        "web3",
        "defi",
        "uniswap",
        "dex",
        "quote",
        "trading"
      ],
      "version": "1.0.0",
      "use_when": "Choose when you need a best-execution Uniswap v3 swap quote on Ethereum or Base before executing a trade \u2014 e.g. price impact, output amount, or route selection.",
      "limitations": "Quotes raw uint256 amounts with EIP-55 checksummed addresses only; native ETH is not quoted directly (pass WETH). Point-in-time at the returned block_number \u2014 do not cache.",
      "alternatives": [
        "get_token_price",
        "get_dex_volume"
      ],
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_dex_volume",
      "name": "get_dex_volume",
      "description": "Compare decentralized exchange activity from DeFiLlama. Returns 24-hour, 7-day, and 30-day volume, period-over-period changes, and each protocol's share of reported global 24-hour DEX volume. Filter by protocol names or DeFiLlama slugs and rank by a 1-, 7-, or 30-day lookback window.",
      "tags": [
        "defi",
        "dex",
        "volume",
        "finance",
        "defillama"
      ],
      "version": "1.0.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_defi_positions",
      "name": "get_defi_positions",
      "description": "Aggregate DeFi positions for a wallet across Aave v3, Compound v3, Uniswap v3 LP, and canonical Ethereum (chain_id=1) or Base (chain_id=8453). Returns Aave aggregate account health (collateral, debt, health factor, LTV) with per-reserve breakdown for major assets, Compound v3 Comet market positions (supply, borrow, per-asset collateral, liquidation flag), and Uniswap v3 LP positions by token ID (token pair, fee tier, tick range, liquidity, uncollected fees). On Ethereum, also returns canonical Lido stETH/wstETH balances and the current wstETH-to-stETH equivalent. Per-protocol failures are isolated \u2014 other protocols still return.",
      "tags": [
        "web3",
        "defi",
        "aave",
        "compound",
        "uniswap",
        "lido",
        "staking",
        "portfolio"
      ],
      "version": "1.2.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_gas_price",
      "name": "get_gas_price",
      "description": "Get current EIP-1559 gas fees on Ethereum or Base. Returns base fee, priority fee, and next-block base fee estimate (useful for timing transactions). gas_used_ratio indicates network congestion (>0.5 = busy, >0.9 = very congested). Optional USD estimates include ETH spot price and rough transfer/swap costs. Results cached 10 seconds per chain.",
      "tags": [
        "web3",
        "ethereum",
        "gas",
        "fees",
        "eip1559"
      ],
      "version": "1.0.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_lending_rates",
      "name": "get_lending_rates",
      "description": "Get current on-chain lending supply/borrow rates for expanded Aave v3 reserves and Compound v3 markets on Ethereum or Base. Returns per-asset APY snapshots and Compound utilization where available. Useful for protocol-specific stablecoin yield comparisons (e.g., USDC on Aave vs Compound).",
      "tags": [
        "web3",
        "defi",
        "lending",
        "aave",
        "compound",
        "yield"
      ],
      "version": "1.1.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_liquidation_risk",
      "name": "get_liquidation_risk",
      "description": "Assess DeFi liquidation risk for up to 50 wallets across expanded Aave v3 and Compound v3 coverage on Ethereum (chain_id=1) or Base (chain_id=8453). Returns per-wallet health factor and tiered risk classification (liquidatable, critical, warning, caution, healthy, no_debt) plus an overall_tier aggregate across protocols, and a summary count for alert dashboards. Per-protocol failures are isolated \u2014 a Compound RPC error does not blank the Aave result (and vice versa). View-only (eth_call) against hardcoded protocol addresses; duplicate wallet addresses are silently removed.",
      "tags": [
        "web3",
        "ethereum",
        "base",
        "defi",
        "risk",
        "liquidation",
        "aave",
        "compound"
      ],
      "version": "1.1.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_token_approvals",
      "name": "get_token_approvals",
      "description": "Audit ERC-20 token allowances for a wallet address. By default, returns all non-zero approvals for assets in the shared tracked-asset registry across curated DeFi protocol spenders (Uniswap, Aave, Compound, 1inch, 0x, OpenSea). Flags unlimited approvals with risk levels: high=unknown spender, medium=trusted protocol, low=bounded amount. Use before swaps to verify approval state, or after security incidents to detect active exploit vectors. Ethereum mainnet and Base only.",
      "tags": [
        "web3",
        "ethereum",
        "security",
        "erc20",
        "approvals",
        "defi"
      ],
      "version": "1.1.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_wallet_approvals",
      "name": "get_wallet_approvals",
      "description": "Inspect a wallet's current ERC-20 token authorization exposure on one DeBank-supported chain. Returns discovered spenders, USD exposure, protocol attribution, and hacked or abandoned protocol flags. This is broader than the curated block-accurate get_token_approvals tool.",
      "tags": [
        "web3",
        "wallet",
        "security",
        "approvals",
        "cross-chain",
        "debank"
      ],
      "version": "1.0.0",
      "use_when": "Use when broad spender discovery or cross-chain security screening is needed. Call once per chain because DeBank requires a chain_id. Use get_token_approvals for a free, block-accurate Ethereum or Base scan of curated tokens and spenders.",
      "limitations": "The result is third-party analytics and may be stale. It covers token approvals only, not NFT approvals or off-chain Permit2 sub-permits; each chain consumes a separate billable provider call.",
      "alternatives": [
        "get_token_approvals"
      ],
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_token_price",
      "name": "get_token_price",
      "description": "Get current price, 24h change, market cap, fully-diluted valuation, and volume for one or more crypto tokens. Accepts ticker symbols (BTC, ETH, LQTY), full token names (Bitcoin, Liquity, Chainlink), or CoinGecko IDs. Unknown symbols are resolved automatically against the full CoinGecko coin list. Supports batch queries up to 50 tokens. Bare 0x contract addresses are not resolvable by CoinGecko and should be treated as unknown. If get_wallet_portfolio already returned price_usd/value_usd for a held token, reuse that value instead of calling get_token_price again.",
      "tags": [
        "finance",
        "crypto",
        "price",
        "market"
      ],
      "version": "1.2.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_protocol_tvl",
      "name": "get_protocol_tvl",
      "description": "Get Total Value Locked (TVL) data for a DeFi protocol from DeFiLlama. Returns current TVL in USD, 7-day and 30-day percentage change, and a per-chain breakdown. Set include_historical=True to also retrieve a daily TVL series for trend analysis. When DeFiLlama reports them, also returns current fees and revenue in USD with 7-day and 30-day percentage change. You can also batch multiple protocols via protocols=[...]. Supports 3,000+ protocols including Aave, Uniswap, Curve, Compound, Lido, MakerDAO, and more. Batch responses retain one compact economic summary per requested protocol; single-protocol calls include chain and historical detail. A revenue_error_type identifies an upstream revenue lookup failure. Use the DeFiLlama slug format: 'aave-v3', 'uniswap-v3', 'curve-dex'. Common aliases such as 'spark-protocol' and 'compound' are auto-corrected.",
      "tags": [
        "defi",
        "tvl",
        "finance",
        "protocol",
        "defillama"
      ],
      "version": "1.4.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_token_price_historical",
      "name": "get_token_price_historical",
      "description": "Get historical price data for crypto tokens over a specified time window (1\u2013365 days). Returns period statistics (start, end, % change, high, low) plus a downsampled daily price series, plus high_30d (raw observation maximum), std_30d (population standard deviation of daily returns as a decimal), and dca_baseline_90d (weekly samples over the preceding 90 UTC days, excluding the latest observation). dca_baseline_90d_partial identifies incomplete history. Use for period comparisons (month-over-month, YTD), trend analysis, and price charts. Prefer over web_search for time-comparative financial queries. Pass stats_only=true when the daily series is unnecessary. These metrics are pre-computed and should not be re-derived with calculate.",
      "tags": [
        "finance",
        "crypto",
        "price",
        "history",
        "market"
      ],
      "version": "1.1.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_yield_rates",
      "name": "get_yield_rates",
      "description": "Get DeFi yield pool rates from DeFiLlama, covering 1,000+ protocols across all chains. Returns pools sorted by APY with TVL, base rate, reward APY, and 7d/30d mean APY context. Filter by protocol (e.g. 'aave-v3', 'compound-v3'), chain (e.g. 'Ethereum', 'Base'), minimum TVL, and minimum APY. Use this to answer questions like 'Where can I get the best USDC yield?', 'What is Aave's current APY on Ethereum?', or 'Compare Aave vs Compound yields'. Returns up to 50 pools. Call once per query unless a genuinely disjoint filter is required. The returned `symbol` field contains the underlying tokens (e.g. 'USDC', 'ETH-USDC', 'WBTC'); filter on the client side by inspecting `symbol` rather than re-calling with different arguments. Use `min_apy`, `max_apy`, `min_tvl_usd`, and `symbols_any` to prune noise in a single call. `symbols_any` matches whole symbol tokens (e.g. 'USDC' matches 'USDC' and 'ETH-USDC' but not 'TULIPAUSDC') and returns the highest-ranked pools for EACH requested symbol, so one call gives a complete per-symbol comparison; symbols with no matching pool are named in `note`. Set `max_apy` (e.g. 30) to exclude leveraged/boosted pools so genuine yields surface. Set stable_only=true when you need consistent stablecoin yield screening; this ranks by 30d mean APY first and still returns spot/base/reward components.",
      "tags": [
        "defi",
        "yield",
        "apy",
        "finance",
        "defillama"
      ],
      "version": "1.3.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "web_search",
      "name": "web_search",
      "description": "Real-time web search via Tavily. Use for current events, fact-checking, and research. Set search_depth='advanced' for complex research queries (higher quality, higher cost). Set topic='news' for recent headlines or 'finance' for market information.",
      "tags": [
        "search",
        "web",
        "realtime"
      ],
      "version": "1.0.0",
      "use_when": "Choose when the task needs current, external, or factual information not available from on-chain or local data \u2014 e.g. news, prices, documentation, or fact-checking.",
      "limitations": "Returns web snippets, not raw page bodies; results depend on Tavily coverage. Advanced depth costs more. Not a substitute for on-chain tools like get_token_price.",
      "alternatives": [
        "get_token_price",
        "http_fetch"
      ],
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "http_fetch",
      "name": "http_fetch",
      "description": "Fetch a web page and extract its main text content. Useful for reading articles, documentation, and web resources. Returns cleaned text, not raw HTML.",
      "tags": [
        "web",
        "http",
        "fetch",
        "content"
      ],
      "version": "1.0.0",
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_wallet_portfolio",
      "name": "get_wallet_portfolio",
      "description": "Get aggregated token holdings with USD values for a wallet address. Tracks 19 major assets on Ethereum and 12 on Base, including spot, lending, liquid-staking, restaking, and stablecoin assets. Sorted by USD value. Returns up to 20 holdings. Includes native ETH balance in the holdings list \u2014 calling get_eth_balance separately after this is redundant.",
      "tags": [
        "web3",
        "ethereum",
        "portfolio",
        "balance",
        "defi"
      ],
      "version": "1.1.0",
      "use_when": "Choose when you need a wallet's overall token exposure and USD value on Ethereum or Base in one call. Call once per chain for a cross-chain comparison.",
      "limitations": "Tracks a fixed set of major assets per chain, not arbitrary tokens. Returns up to 20 holdings. Native ETH is included, so calling get_eth_balance separately is redundant.",
      "alternatives": [
        "get_eth_balance",
        "get_token_price",
        "get_defi_positions"
      ],
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_wallet_history",
      "name": "get_wallet_history",
      "description": "Get one page of decoded transaction history for an EVM wallet across DeBank-supported chains. Returns send, receive, and approval categories with protocol, token, exchange, gas, and USD metadata. Use the returned next_cursor as start_time to page backward.",
      "tags": [
        "web3",
        "wallet",
        "history",
        "activity",
        "cross-chain",
        "debank"
      ],
      "version": "1.0.0",
      "use_when": "Use for wallet activity discovery, protocol interaction history, exchange exposure, and gas analysis. Page backward with next_cursor for older activity. Use get_transaction or decode_transaction when one known transaction needs block-level details.",
      "limitations": "DeBank returns at most 20 entries per call and the data may be stale. This tool is not a complete ledger, PnL engine, or cost-basis calculator because historical execution prices and all transfer semantics are not guaranteed.",
      "alternatives": [
        "get_transaction",
        "decode_transaction"
      ],
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "get_wallet_positions",
      "name": "get_wallet_positions",
      "description": "Get a wallet's DeFi positions across all DeBank-supported chains and protocols. Returns protocol-level positions, asset/debt/net USD values, token lists, and optional all-chain net worth. Set include_token_balances=true to also return DeBank's complete cross-chain wallet token list. This covers substantially more protocols and chains than the block-accurate get_defi_positions tool. Use raw-RPC tools for liquidation, swap quotes, or other transaction-critical questions.",
      "tags": [
        "web3",
        "defi",
        "portfolio",
        "wallet",
        "cross-chain",
        "debank"
      ],
      "version": "1.0.0",
      "use_when": "Use for broad wallet discovery, portfolio allocation, protocol exposure, or cross-chain position questions. Set include_token_balances=true when complete wallet token discovery is required; otherwise the response only includes tokens attached to protocol positions. Use get_defi_positions when the user needs a block-accurate Aave, Compound, Uniswap, or Lido snapshot.",
      "limitations": "DeBank portfolio data is third-party analytics and may be stale, including occasional long refresh delays. It is read-only, EVM wallet oriented, and does not prove current liquidation or execution state. include_token_balances adds a separate billable DeBank request.",
      "alternatives": [
        "get_defi_positions",
        "get_wallet_portfolio",
        "get_token_approvals"
      ],
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "id": "a2ui_rendering",
      "name": "a2ui_rendering",
      "description": "Declarative UI component generation (table, form, text, button, etc.)."
    },
    {
      "id": "event_trigger_ingress",
      "name": "event_trigger_ingress",
      "description": "Register an authenticated event subscription that starts a bounded agent task and returns an A2A task ID for polling.",
      "tags": [
        "events",
        "webhooks",
        "automation",
        "scheduling"
      ],
      "examples": [
        "Start a task when a deployment fails.",
        "Run this workflow when a marketplace payment settles.",
        "Notify me when a monitored price changes."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ],
  "tools": [
    {
      "name": "decode_transaction",
      "version": "1.0.0",
      "description": "Decode a transaction's calldata into a human-readable function name and arguments. Also returns transaction status (1=success, 0=revert), gas used, and block number. Optionally provide an ABI for precise decoding; otherwise uses 4byte.directory. Supports Ethereum mainnet and Base.",
      "tags": [
        "web3",
        "ethereum",
        "transaction",
        "decode",
        "calldata"
      ],
      "input_schema": {
        "properties": {
          "tx_hash": {
            "description": "Transaction hash (0x\u2026 64 hex chars)",
            "title": "Tx Hash",
            "type": "string"
          },
          "chain_id": {
            "default": 1,
            "description": "Chain ID (1=Ethereum, 8453=Base)",
            "title": "Chain Id",
            "type": "integer"
          },
          "abi_json": {
            "anyOf": [
              {
                "maxLength": 65536,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional ABI JSON array for decoding. If omitted, 4byte.directory is used.",
            "title": "Abi Json"
          }
        },
        "required": [
          "tx_hash"
        ],
        "title": "DecodeTransactionInput",
        "type": "object"
      },
      "output_schema": {
        "properties": {
          "tx_hash": {
            "title": "Tx Hash",
            "type": "string"
          },
          "from_address": {
            "title": "From Address",
            "type": "string"
          },
          "to_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "To Address"
          },
          "value_eth": {
            "title": "Value Eth",
            "type": "string"
          },
          "status": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "1=success, 0=revert, None=pending",
            "title": "Status"
          },
          "gas_used": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gas Used"
          },
          "block_number": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Block Number"
          },
          "function_selector": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Function Selector"
          },
          "function_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Function Name"
          },
          "decoded_args": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decoded Args"
          },
          "raw_calldata": {
            "title": "Raw Calldata",
            "type": "string"
          },
          "decode_source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decode Source"
          },
          "chain_id": {
            "title": "Chain Id",
            "type": "integer"
          },
          "note": {
            "default": "decoded_args values are raw ABI-decoded types; uint256 amounts have not been decimals-formatted \u2014 do not call read_contract or get_erc20_balance to interpret them unless the user explicitly asks. Addresses (from_address, to_address, decoded_args) are plain hex \u2014 do not call resolve_ens to label them unless the user explicitly asks.",
            "title": "Note",
            "type": "string"
          }
        },
        "required": [
          "tx_hash",
          "from_address",
          "to_address",
          "value_eth",
          "gas_used",
          "block_number",
          "function_selector",
          "function_name",
          "decoded_args",
          "raw_calldata",
          "decode_source",
          "chain_id"
        ],
        "title": "DecodeTransactionOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "delegate_to_agent",
      "version": "1.0.0",
      "description": "Delegate a task to a remote A2A-compliant agent. Discovers the agent's capabilities via its agent card, sends it a message, and returns the result. Use when a task requires specialist capabilities beyond your own tools.",
      "tags": [
        "a2a",
        "delegation",
        "agent"
      ],
      "input_schema": {
        "properties": {
          "agent_url": {
            "description": "Base URL of the remote A2A agent (e.g. https://agent.example.com)",
            "maxLength": 2000,
            "minLength": 10,
            "title": "Agent Url",
            "type": "string"
          },
          "task_description": {
            "description": "Natural language description of the task to delegate",
            "maxLength": 4096,
            "minLength": 1,
            "title": "Task Description",
            "type": "string"
          },
          "task_type": {
            "default": "general",
            "description": "Broad task class for routing telemetry; never include user data or task text.",
            "enum": [
              "general",
              "research",
              "analysis",
              "data_retrieval",
              "coding",
              "transaction",
              "automation"
            ],
            "title": "Task Type",
            "type": "string"
          }
        },
        "required": [
          "agent_url",
          "task_description"
        ],
        "title": "DelegateToAgentInput",
        "type": "object"
      },
      "output_schema": {
        "properties": {
          "agent_name": {
            "description": "Name of the remote agent (from its agent card)",
            "title": "Agent Name",
            "type": "string"
          },
          "status": {
            "description": "A2A task state: completed, failed, etc.",
            "title": "Status",
            "type": "string"
          },
          "result": {
            "description": "Text result extracted from the remote agent's response",
            "title": "Result",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Error message, if any",
            "title": "Error"
          },
          "cost_usdc": {
            "default": 0,
            "description": "Cost of this delegation in atomic USDC",
            "title": "Cost Usdc",
            "type": "integer"
          }
        },
        "required": [
          "agent_name",
          "status",
          "result"
        ],
        "title": "DelegateToAgentOutput",
        "type": "object"
      }
    },
    {
      "name": "get_chain_metrics",
      "version": "1.1.0",
      "description": "Compare blockchain ecosystem health using DeFiLlama current TVL, 7-day and 30-day TVL changes, and aggregate fee activity. Pass chains such as ['Ethereum', 'Arbitrum', 'Solana'] for a focused comparison, or omit chains to inspect the highest-TVL ecosystems. Historical and fee fields fail open when DeFiLlama does not cover a chain.",
      "tags": [
        "defi",
        "chains",
        "tvl",
        "fees",
        "finance",
        "defillama"
      ],
      "input_schema": {
        "properties": {
          "chains": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional chain names to compare, such as ['Ethereum', 'Arbitrum', 'Solana']. When omitted, return the highest-TVL chains up to limit.",
            "title": "Chains"
          },
          "days": {
            "default": 30,
            "description": "Lookback window used when selecting the historical TVL points to inspect.",
            "maximum": 365,
            "minimum": 7,
            "title": "Days",
            "type": "integer"
          },
          "limit": {
            "default": 20,
            "description": "Maximum number of chain rows to return when the result is not explicitly filtered.",
            "maximum": 50,
            "minimum": 1,
            "title": "Limit",
            "type": "integer"
          }
        },
        "title": "GetChainMetricsInput",
        "type": "object"
      },
      "output_schema": {
        "$defs": {
          "ChainMetricsEntry": {
            "properties": {
              "chain": {
                "title": "Chain",
                "type": "string"
              },
              "chain_id": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Chain Id"
              },
              "token_symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Token Symbol"
              },
              "tvl_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Tvl Usd"
              },
              "tvl_7d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Tvl 7D Change Pct"
              },
              "tvl_30d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Tvl 30D Change Pct"
              },
              "fees_24h_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Fees 24H Usd"
              },
              "fees_7d_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Fees 7D Usd"
              },
              "fees_30d_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Fees 30D Usd"
              },
              "fees_7d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Fees 7D Change Pct"
              },
              "fees_30d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Fees 30D Change Pct"
              },
              "error": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Error"
              },
              "error_type": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Error Type"
              }
            },
            "required": [
              "chain",
              "chain_id",
              "token_symbol",
              "tvl_usd",
              "tvl_7d_change_pct",
              "tvl_30d_change_pct",
              "fees_24h_usd",
              "fees_7d_usd",
              "fees_30d_usd",
              "fees_7d_change_pct",
              "fees_30d_change_pct"
            ],
            "title": "ChainMetricsEntry",
            "type": "object"
          },
          "DataProvenance": {
            "description": "Machine-readable source and freshness metadata for a tool response.",
            "properties": {
              "provider": {
                "title": "Provider",
                "type": "string"
              },
              "source_urls": {
                "items": {
                  "type": "string"
                },
                "title": "Source Urls",
                "type": "array"
              },
              "retrieved_at": {
                "title": "Retrieved At",
                "type": "string"
              },
              "source_fetched_at": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Source Fetched At"
              },
              "cache_hit": {
                "default": false,
                "title": "Cache Hit",
                "type": "boolean"
              },
              "cache_age_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Age Seconds"
              },
              "cache_ttl_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Ttl Seconds"
              }
            },
            "required": [
              "provider",
              "retrieved_at"
            ],
            "title": "DataProvenance",
            "type": "object"
          }
        },
        "properties": {
          "chains": {
            "items": {
              "$ref": "#/$defs/ChainMetricsEntry"
            },
            "title": "Chains",
            "type": "array"
          },
          "requested_chains": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Requested Chains"
          },
          "total_available": {
            "title": "Total Available",
            "type": "integer"
          },
          "note": {
            "title": "Note",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Error"
          },
          "error_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Error Type"
          },
          "provenance": {
            "anyOf": [
              {
                "$ref": "#/$defs/DataProvenance"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Source and freshness metadata for the DeFiLlama response."
          }
        },
        "required": [
          "chains",
          "requested_chains",
          "total_available",
          "note"
        ],
        "title": "GetChainMetricsOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_dex_quote",
      "version": "1.0.0",
      "description": "Get the best Uniswap v3 swap quote on Ethereum (chain_id=1) or Base (chain_id=8453) via direct on-chain QuoterV2 calls. Queries all four fee tiers (100/500/3000/10000 bps) in parallel and returns the tier with the highest output amount, along with per-tier breakdown. Inputs are raw uint256 amounts and EIP-55 checksummed addresses; native ETH is not quoted directly \u2014 pass the WETH address. Returns no_liquidity=true when no pool exists for the pair. Point-in-time quote at the returned block_number; do not cache.",
      "tags": [
        "web3",
        "defi",
        "uniswap",
        "dex",
        "quote",
        "trading"
      ],
      "input_schema": {
        "properties": {
          "token_in": {
            "description": "EIP-55 checksummed address of the token being sold. For native ETH, pass the WETH address (Ethereum: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; Base: 0x4200000000000000000000000000000000000006).",
            "title": "Token In",
            "type": "string"
          },
          "token_out": {
            "description": "EIP-55 checksummed address of the token being bought.",
            "title": "Token Out",
            "type": "string"
          },
          "amount_in": {
            "description": "Input amount in RAW uint256 units (e.g. '1000000' for 1 USDC, '1000000000000000000' for 1 WETH). Must be > 0 and < 2^128. Common token decimals: WETH/ETH/DAI/wstETH/cbETH/weETH 18, WBTC/cbBTC 8, USDC/USDT 6. Do not call read_contract to look up decimals \u2014 use these values directly.",
            "title": "Amount In",
            "type": "string"
          },
          "chain_id": {
            "default": 1,
            "description": "1 = Ethereum mainnet, 8453 = Base mainnet. Other chains unsupported.",
            "title": "Chain Id",
            "type": "integer"
          }
        },
        "required": [
          "token_in",
          "token_out",
          "amount_in"
        ],
        "title": "GetDexQuoteInput",
        "type": "object"
      },
      "use_when": "Choose when you need a best-execution Uniswap v3 swap quote on Ethereum or Base before executing a trade \u2014 e.g. price impact, output amount, or route selection.",
      "limitations": "Quotes raw uint256 amounts with EIP-55 checksummed addresses only; native ETH is not quoted directly (pass WETH). Point-in-time at the returned block_number \u2014 do not cache.",
      "alternatives": [
        "get_token_price",
        "get_dex_volume"
      ],
      "output_schema": {
        "$defs": {
          "TierQuote": {
            "properties": {
              "fee_tier": {
                "title": "Fee Tier",
                "type": "integer"
              },
              "success": {
                "title": "Success",
                "type": "boolean"
              },
              "amount_out": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Amount Out"
              },
              "sqrt_price_x96_after": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Sqrt Price X96 After"
              },
              "gas_estimate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Gas Estimate"
              },
              "error": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Error"
              }
            },
            "required": [
              "fee_tier",
              "success"
            ],
            "title": "TierQuote",
            "type": "object"
          }
        },
        "properties": {
          "chain_id": {
            "title": "Chain Id",
            "type": "integer"
          },
          "token_in": {
            "title": "Token In",
            "type": "string"
          },
          "token_out": {
            "title": "Token Out",
            "type": "string"
          },
          "amount_in": {
            "title": "Amount In",
            "type": "string"
          },
          "amount_in_decimals": {
            "title": "Amount In Decimals",
            "type": "integer"
          },
          "amount_out": {
            "title": "Amount Out",
            "type": "string"
          },
          "amount_out_decimals": {
            "title": "Amount Out Decimals",
            "type": "integer"
          },
          "amount_out_human": {
            "title": "Amount Out Human",
            "type": "string"
          },
          "effective_rate": {
            "title": "Effective Rate",
            "type": "string"
          },
          "fee_tier_used": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fee Tier Used"
          },
          "quotes_per_tier": {
            "items": {
              "$ref": "#/$defs/TierQuote"
            },
            "title": "Quotes Per Tier",
            "type": "array"
          },
          "no_liquidity": {
            "title": "No Liquidity",
            "type": "boolean"
          },
          "block_number": {
            "title": "Block Number",
            "type": "integer"
          }
        },
        "required": [
          "chain_id",
          "token_in",
          "token_out",
          "amount_in",
          "amount_in_decimals",
          "amount_out",
          "amount_out_decimals",
          "amount_out_human",
          "effective_rate",
          "fee_tier_used",
          "quotes_per_tier",
          "no_liquidity",
          "block_number"
        ],
        "title": "GetDexQuoteOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_dex_volume",
      "version": "1.0.0",
      "description": "Compare decentralized exchange activity from DeFiLlama. Returns 24-hour, 7-day, and 30-day volume, period-over-period changes, and each protocol's share of reported global 24-hour DEX volume. Filter by protocol names or DeFiLlama slugs and rank by a 1-, 7-, or 30-day lookback window.",
      "tags": [
        "defi",
        "dex",
        "volume",
        "finance",
        "defillama"
      ],
      "input_schema": {
        "properties": {
          "protocols": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional protocol names or DeFiLlama slugs, such as ['uniswap-v3', 'curve-dex']. When omitted, return the largest DEX protocols.",
            "title": "Protocols"
          },
          "lookback_days": {
            "default": 30,
            "description": "Window used to rank the returned protocols: 1, 7, or 30 days (nearest supported window is used).",
            "maximum": 30,
            "minimum": 1,
            "title": "Lookback Days",
            "type": "integer"
          },
          "limit": {
            "default": 20,
            "description": "Maximum number of DEX protocols to return.",
            "maximum": 50,
            "minimum": 1,
            "title": "Limit",
            "type": "integer"
          }
        },
        "title": "GetDexVolumeInput",
        "type": "object"
      },
      "output_schema": {
        "$defs": {
          "DexVolumeEntry": {
            "properties": {
              "protocol": {
                "title": "Protocol",
                "type": "string"
              },
              "slug": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Slug"
              },
              "category": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Category"
              },
              "volume_24h_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Volume 24H Usd"
              },
              "volume_7d_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Volume 7D Usd"
              },
              "volume_30d_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Volume 30D Usd"
              },
              "volume_7d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Volume 7D Change Pct"
              },
              "volume_30d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Volume 30D Change Pct"
              },
              "volume_share_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Volume Share Pct"
              },
              "chains": {
                "items": {
                  "type": "string"
                },
                "title": "Chains",
                "type": "array"
              },
              "error": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Error"
              },
              "error_type": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Error Type"
              }
            },
            "required": [
              "protocol",
              "slug",
              "category",
              "volume_24h_usd",
              "volume_7d_usd",
              "volume_30d_usd",
              "volume_7d_change_pct",
              "volume_30d_change_pct",
              "volume_share_pct",
              "chains"
            ],
            "title": "DexVolumeEntry",
            "type": "object"
          }
        },
        "properties": {
          "dexes": {
            "items": {
              "$ref": "#/$defs/DexVolumeEntry"
            },
            "title": "Dexes",
            "type": "array"
          },
          "total_matching": {
            "title": "Total Matching",
            "type": "integer"
          },
          "total_available": {
            "title": "Total Available",
            "type": "integer"
          },
          "volume_share_basis": {
            "title": "Volume Share Basis",
            "type": "string"
          },
          "note": {
            "title": "Note",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Error"
          },
          "error_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Error Type"
          }
        },
        "required": [
          "dexes",
          "total_matching",
          "total_available",
          "volume_share_basis",
          "note"
        ],
        "title": "GetDexVolumeOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_defi_positions",
      "version": "1.2.0",
      "description": "Aggregate DeFi positions for a wallet across Aave v3, Compound v3, Uniswap v3 LP, and canonical Ethereum (chain_id=1) or Base (chain_id=8453). Returns Aave aggregate account health (collateral, debt, health factor, LTV) with per-reserve breakdown for major assets, Compound v3 Comet market positions (supply, borrow, per-asset collateral, liquidation flag), and Uniswap v3 LP positions by token ID (token pair, fee tier, tick range, liquidity, uncollected fees). On Ethereum, also returns canonical Lido stETH/wstETH balances and the current wstETH-to-stETH equivalent. Per-protocol failures are isolated \u2014 other protocols still return.",
      "tags": [
        "web3",
        "defi",
        "aave",
        "compound",
        "uniswap",
        "lido",
        "staking",
        "portfolio"
      ],
      "input_schema": {
        "properties": {
          "wallet_address": {
            "description": "Wallet address (0x\u2026)",
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_id": {
            "default": 1,
            "description": "Chain ID (1=Ethereum, 8453=Base)",
            "title": "Chain Id",
            "type": "integer"
          }
        },
        "required": [
          "wallet_address"
        ],
        "title": "GetDefiPositionsInput",
        "type": "object"
      },
      "output_schema": {
        "$defs": {
          "AavePosition": {
            "properties": {
              "total_collateral_usd": {
                "title": "Total Collateral Usd",
                "type": "number"
              },
              "total_debt_usd": {
                "title": "Total Debt Usd",
                "type": "number"
              },
              "available_borrows_usd": {
                "title": "Available Borrows Usd",
                "type": "number"
              },
              "ltv_bps": {
                "title": "Ltv Bps",
                "type": "integer"
              },
              "liquidation_threshold_bps": {
                "title": "Liquidation Threshold Bps",
                "type": "integer"
              },
              "health_factor": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Health Factor"
              },
              "health_factor_status": {
                "title": "Health Factor Status",
                "type": "string"
              },
              "reserves": {
                "items": {
                  "$ref": "#/$defs/AaveReservePosition"
                },
                "title": "Reserves",
                "type": "array"
              }
            },
            "required": [
              "total_collateral_usd",
              "total_debt_usd",
              "available_borrows_usd",
              "ltv_bps",
              "liquidation_threshold_bps",
              "health_factor",
              "health_factor_status",
              "reserves"
            ],
            "title": "AavePosition",
            "type": "object"
          },
          "AaveReservePosition": {
            "properties": {
              "symbol": {
                "title": "Symbol",
                "type": "string"
              },
              "asset_address": {
                "title": "Asset Address",
                "type": "string"
              },
              "supplied_amount": {
                "title": "Supplied Amount",
                "type": "string"
              },
              "variable_debt_amount": {
                "title": "Variable Debt Amount",
                "type": "string"
              },
              "stable_debt_amount": {
                "title": "Stable Debt Amount",
                "type": "string"
              },
              "usage_as_collateral": {
                "title": "Usage As Collateral",
                "type": "boolean"
              }
            },
            "required": [
              "symbol",
              "asset_address",
              "supplied_amount",
              "variable_debt_amount",
              "stable_debt_amount",
              "usage_as_collateral"
            ],
            "title": "AaveReservePosition",
            "type": "object"
          },
          "CompoundCollateral": {
            "properties": {
              "asset_address": {
                "title": "Asset Address",
                "type": "string"
              },
              "amount": {
                "title": "Amount",
                "type": "string"
              },
              "borrow_collateral_factor": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Borrow Collateral Factor"
              },
              "liquidate_collateral_factor": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Liquidate Collateral Factor"
              }
            },
            "required": [
              "asset_address",
              "amount"
            ],
            "title": "CompoundCollateral",
            "type": "object"
          },
          "CompoundMarketPosition": {
            "properties": {
              "market_name": {
                "title": "Market Name",
                "type": "string"
              },
              "market_address": {
                "title": "Market Address",
                "type": "string"
              },
              "base_asset_symbol": {
                "title": "Base Asset Symbol",
                "type": "string"
              },
              "base_asset_address": {
                "title": "Base Asset Address",
                "type": "string"
              },
              "supplied_amount": {
                "title": "Supplied Amount",
                "type": "string"
              },
              "borrowed_amount": {
                "title": "Borrowed Amount",
                "type": "string"
              },
              "collateral": {
                "items": {
                  "$ref": "#/$defs/CompoundCollateral"
                },
                "title": "Collateral",
                "type": "array"
              },
              "is_liquidatable": {
                "title": "Is Liquidatable",
                "type": "boolean"
              }
            },
            "required": [
              "market_name",
              "market_address",
              "base_asset_symbol",
              "base_asset_address",
              "supplied_amount",
              "borrowed_amount",
              "collateral",
              "is_liquidatable"
            ],
            "title": "CompoundMarketPosition",
            "type": "object"
          },
          "LidoStakingPosition": {
            "properties": {
              "steth_balance": {
                "title": "Steth Balance",
                "type": "string"
              },
              "wsteth_balance": {
                "title": "Wsteth Balance",
                "type": "string"
              },
              "wsteth_steth_equivalent": {
                "title": "Wsteth Steth Equivalent",
                "type": "string"
              },
              "total_steth_equivalent": {
                "title": "Total Steth Equivalent",
                "type": "string"
              }
            },
            "required": [
              "steth_balance",
              "wsteth_balance",
              "wsteth_steth_equivalent",
              "total_steth_equivalent"
            ],
            "title": "LidoStakingPosition",
            "type": "object"
          },
          "ProtocolErrorInfo": {
            "properties": {
              "protocol": {
                "title": "Protocol",
                "type": "string"
              },
              "error": {
                "title": "Error",
                "type": "string"
              }
            },
            "required": [
              "protocol",
              "error"
            ],
            "title": "ProtocolErrorInfo",
            "type": "object"
          },
          "UniswapV3Position": {
            "properties": {
              "token_id": {
                "title": "Token Id",
                "type": "string"
              },
              "token0_address": {
                "title": "Token0 Address",
                "type": "string"
              },
              "token0_symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Token0 Symbol"
              },
              "token1_address": {
                "title": "Token1 Address",
                "type": "string"
              },
              "token1_symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Token1 Symbol"
              },
              "fee_tier_raw": {
                "title": "Fee Tier Raw",
                "type": "integer"
              },
              "tick_lower": {
                "title": "Tick Lower",
                "type": "integer"
              },
              "tick_upper": {
                "title": "Tick Upper",
                "type": "integer"
              },
              "liquidity": {
                "title": "Liquidity",
                "type": "string"
              },
              "tokens_owed_0": {
                "title": "Tokens Owed 0",
                "type": "string"
              },
              "tokens_owed_1": {
                "title": "Tokens Owed 1",
                "type": "string"
              },
              "status": {
                "title": "Status",
                "type": "string"
              }
            },
            "required": [
              "token_id",
              "token0_address",
              "token1_address",
              "fee_tier_raw",
              "tick_lower",
              "tick_upper",
              "liquidity",
              "tokens_owed_0",
              "tokens_owed_1",
              "status"
            ],
            "title": "UniswapV3Position",
            "type": "object"
          }
        },
        "properties": {
          "wallet_address": {
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_id": {
            "title": "Chain Id",
            "type": "integer"
          },
          "data_block_number": {
            "title": "Data Block Number",
            "type": "integer"
          },
          "aave_v3": {
            "anyOf": [
              {
                "$ref": "#/$defs/AavePosition"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "compound_v3": {
            "items": {
              "$ref": "#/$defs/CompoundMarketPosition"
            },
            "title": "Compound V3",
            "type": "array"
          },
          "uniswap_v3": {
            "items": {
              "$ref": "#/$defs/UniswapV3Position"
            },
            "title": "Uniswap V3",
            "type": "array"
          },
          "lido_staking": {
            "anyOf": [
              {
                "$ref": "#/$defs/LidoStakingPosition"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "errors": {
            "items": {
              "$ref": "#/$defs/ProtocolErrorInfo"
            },
            "title": "Errors",
            "type": "array"
          },
          "note": {
            "default": "On-chain position snapshot at data_block_number. Aave USD values are from the Aave oracle (base currency = USD, 8 decimals on Ethereum/Base). Compound collateral and Uniswap v3 amounts are raw integer units \u2014 divide by 10**decimals to format. Compound collateral factors are decimals (e.g., 0.90 = 90%) when available from Comet getAssetInfo. Token symbols are resolved for well-known tokens; None means unrecognised \u2014 do NOT call read_contract, web_search, or any external lookup to identify these tokens. Report them as 'unrecognized token (0x\u2026)' in the final answer and move on. Uniswap v3 liquidity is returned raw (no underlying token valuation in v1); tokensOwed0/1 are uncollected fees only. Lido staking contains canonical Ethereum stETH/wstETH balances and a current wstETH-to-stETH equivalent in raw integer units; it does not include APR, rewards accounting, validator positions, or withdrawal queue status. Lido staking is null on Base because its wstETH representation there is bridged. If a protocol is missing (e.g., aave_v3 is null) and appears in errors, its risk could not be verified from this snapshot and must not be treated as no debt. Does not include COMP accruals or unlisted protocols.",
            "title": "Note",
            "type": "string"
          }
        },
        "required": [
          "wallet_address",
          "chain_id",
          "data_block_number"
        ],
        "title": "GetDefiPositionsOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_gas_price",
      "version": "1.0.0",
      "description": "Get current EIP-1559 gas fees on Ethereum or Base. Returns base fee, priority fee, and next-block base fee estimate (useful for timing transactions). gas_used_ratio indicates network congestion (>0.5 = busy, >0.9 = very congested). Optional USD estimates include ETH spot price and rough transfer/swap costs. Results cached 10 seconds per chain.",
      "tags": [
        "web3",
        "ethereum",
        "gas",
        "fees",
        "eip1559"
      ],
      "input_schema": {
        "properties": {
          "chain_id": {
            "default": 1,
            "description": "Chain ID (1=Ethereum, 8453=Base)",
            "title": "Chain Id",
            "type": "integer"
          },
          "include_usd_estimate": {
            "default": false,
            "description": "If true, include ETH spot price and rough USD cost estimates for a simple transfer (21k gas) and a swap-like transaction (150k gas).",
            "title": "Include Usd Estimate",
            "type": "boolean"
          }
        },
        "title": "GetGasPriceInput",
        "type": "object"
      },
      "output_schema": {
        "properties": {
          "chain_id": {
            "title": "Chain Id",
            "type": "integer"
          },
          "gas_price_gwei": {
            "title": "Gas Price Gwei",
            "type": "string"
          },
          "base_fee_gwei": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Fee Gwei"
          },
          "priority_fee_gwei": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority Fee Gwei"
          },
          "next_base_fee_gwei": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Base Fee Gwei"
          },
          "gas_used_ratio": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gas Used Ratio"
          },
          "eth_price_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Eth Price Usd"
          },
          "estimated_transfer_cost_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Estimated Transfer Cost Usd"
          },
          "estimated_swap_cost_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Estimated Swap Cost Usd"
          }
        },
        "required": [
          "chain_id",
          "gas_price_gwei",
          "base_fee_gwei",
          "priority_fee_gwei",
          "next_base_fee_gwei",
          "gas_used_ratio"
        ],
        "title": "GetGasPriceOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_lending_rates",
      "version": "1.1.0",
      "description": "Get current on-chain lending supply/borrow rates for expanded Aave v3 reserves and Compound v3 markets on Ethereum or Base. Returns per-asset APY snapshots and Compound utilization where available. Useful for protocol-specific stablecoin yield comparisons (e.g., USDC on Aave vs Compound).",
      "tags": [
        "web3",
        "defi",
        "lending",
        "aave",
        "compound",
        "yield"
      ],
      "input_schema": {
        "properties": {
          "protocol": {
            "default": "all",
            "description": "Protocol to query: 'aave-v3', 'compound-v3', or 'all'.",
            "enum": [
              "all",
              "aave-v3",
              "compound-v3"
            ],
            "title": "Protocol",
            "type": "string"
          },
          "chain_id": {
            "default": 1,
            "description": "Chain ID (1=Ethereum, 8453=Base).",
            "title": "Chain Id",
            "type": "integer"
          },
          "assets": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional asset-symbol filter (e.g., ['USDC','DAI']). Case-insensitive. Max 20 symbols.",
            "title": "Assets"
          }
        },
        "title": "GetLendingRatesInput",
        "type": "object"
      },
      "output_schema": {
        "$defs": {
          "LendingRateEntry": {
            "properties": {
              "protocol": {
                "enum": [
                  "aave-v3",
                  "compound-v3"
                ],
                "title": "Protocol",
                "type": "string"
              },
              "chain_id": {
                "title": "Chain Id",
                "type": "integer"
              },
              "market_name": {
                "title": "Market Name",
                "type": "string"
              },
              "asset_symbol": {
                "title": "Asset Symbol",
                "type": "string"
              },
              "supply_apy_pct": {
                "title": "Supply Apy Pct",
                "type": "number"
              },
              "borrow_apy_pct": {
                "title": "Borrow Apy Pct",
                "type": "number"
              },
              "utilization_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Utilization Pct"
              },
              "source": {
                "const": "on-chain",
                "default": "on-chain",
                "title": "Source",
                "type": "string"
              }
            },
            "required": [
              "protocol",
              "chain_id",
              "market_name",
              "asset_symbol",
              "supply_apy_pct",
              "borrow_apy_pct"
            ],
            "title": "LendingRateEntry",
            "type": "object"
          }
        },
        "properties": {
          "protocol": {
            "title": "Protocol",
            "type": "string"
          },
          "chain_id": {
            "title": "Chain Id",
            "type": "integer"
          },
          "data_block_number": {
            "title": "Data Block Number",
            "type": "integer"
          },
          "rates": {
            "items": {
              "$ref": "#/$defs/LendingRateEntry"
            },
            "title": "Rates",
            "type": "array"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "title": "Errors",
            "type": "array"
          },
          "note": {
            "default": "On-chain lending market snapshot at data_block_number. Aave rates are derived from ProtocolDataProvider.getReserveData (ray-scaled). Compound rates are derived from Comet getUtilization/getSupplyRate/getBorrowRate (per-second 1e18-scaled), annualized to APY.",
            "title": "Note",
            "type": "string"
          }
        },
        "required": [
          "protocol",
          "chain_id",
          "data_block_number",
          "rates"
        ],
        "title": "GetLendingRatesOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_liquidation_risk",
      "version": "1.1.0",
      "description": "Assess DeFi liquidation risk for up to 50 wallets across expanded Aave v3 and Compound v3 coverage on Ethereum (chain_id=1) or Base (chain_id=8453). Returns per-wallet health factor and tiered risk classification (liquidatable, critical, warning, caution, healthy, no_debt) plus an overall_tier aggregate across protocols, and a summary count for alert dashboards. Per-protocol failures are isolated \u2014 a Compound RPC error does not blank the Aave result (and vice versa). View-only (eth_call) against hardcoded protocol addresses; duplicate wallet addresses are silently removed.",
      "tags": [
        "web3",
        "ethereum",
        "base",
        "defi",
        "risk",
        "liquidation",
        "aave",
        "compound"
      ],
      "input_schema": {
        "properties": {
          "wallet_addresses": {
            "description": "Wallet addresses to assess (max 50; duplicates are silently removed).",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "title": "Wallet Addresses",
            "type": "array"
          },
          "chain_id": {
            "default": 1,
            "description": "Chain ID (1=Ethereum, 8453=Base)",
            "title": "Chain Id",
            "type": "integer"
          }
        },
        "required": [
          "wallet_addresses"
        ],
        "title": "GetLiquidationRiskInput",
        "type": "object"
      },
      "output_schema": {
        "$defs": {
          "AaveRisk": {
            "properties": {
              "health_factor": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Health Factor"
              },
              "risk_tier": {
                "title": "Risk Tier",
                "type": "string"
              },
              "total_collateral_usd": {
                "title": "Total Collateral Usd",
                "type": "number"
              },
              "total_debt_usd": {
                "title": "Total Debt Usd",
                "type": "number"
              },
              "liquidation_threshold_bps": {
                "title": "Liquidation Threshold Bps",
                "type": "integer"
              },
              "ltv_bps": {
                "title": "Ltv Bps",
                "type": "integer"
              }
            },
            "required": [
              "health_factor",
              "risk_tier",
              "total_collateral_usd",
              "total_debt_usd",
              "liquidation_threshold_bps",
              "ltv_bps"
            ],
            "title": "AaveRisk",
            "type": "object"
          },
          "CompoundRisk": {
            "properties": {
              "market_name": {
                "title": "Market Name",
                "type": "string"
              },
              "market_address": {
                "title": "Market Address",
                "type": "string"
              },
              "base_asset_symbol": {
                "title": "Base Asset Symbol",
                "type": "string"
              },
              "is_liquidatable": {
                "title": "Is Liquidatable",
                "type": "boolean"
              },
              "borrow_balance_raw": {
                "title": "Borrow Balance Raw",
                "type": "string"
              },
              "risk_tier": {
                "title": "Risk Tier",
                "type": "string"
              }
            },
            "required": [
              "market_name",
              "market_address",
              "base_asset_symbol",
              "is_liquidatable",
              "borrow_balance_raw",
              "risk_tier"
            ],
            "title": "CompoundRisk",
            "type": "object"
          },
          "ProtocolErrorInfo": {
            "properties": {
              "protocol": {
                "title": "Protocol",
                "type": "string"
              },
              "error": {
                "title": "Error",
                "type": "string"
              }
            },
            "required": [
              "protocol",
              "error"
            ],
            "title": "ProtocolErrorInfo",
            "type": "object"
          },
          "RiskSummary": {
            "properties": {
              "total_wallets": {
                "title": "Total Wallets",
                "type": "integer"
              },
              "liquidatable_count": {
                "title": "Liquidatable Count",
                "type": "integer"
              },
              "critical_count": {
                "title": "Critical Count",
                "type": "integer"
              },
              "warning_count": {
                "title": "Warning Count",
                "type": "integer"
              },
              "caution_count": {
                "title": "Caution Count",
                "type": "integer"
              },
              "healthy_count": {
                "title": "Healthy Count",
                "type": "integer"
              },
              "no_debt_count": {
                "title": "No Debt Count",
                "type": "integer"
              }
            },
            "required": [
              "total_wallets",
              "liquidatable_count",
              "critical_count",
              "warning_count",
              "caution_count",
              "healthy_count",
              "no_debt_count"
            ],
            "title": "RiskSummary",
            "type": "object"
          },
          "WalletRiskResult": {
            "properties": {
              "wallet_address": {
                "title": "Wallet Address",
                "type": "string"
              },
              "chain_id": {
                "title": "Chain Id",
                "type": "integer"
              },
              "aave": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/AaveRisk"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "compound": {
                "items": {
                  "$ref": "#/$defs/CompoundRisk"
                },
                "title": "Compound",
                "type": "array"
              },
              "overall_tier": {
                "title": "Overall Tier",
                "type": "string"
              },
              "errors": {
                "items": {
                  "$ref": "#/$defs/ProtocolErrorInfo"
                },
                "title": "Errors",
                "type": "array"
              }
            },
            "required": [
              "wallet_address",
              "chain_id",
              "overall_tier"
            ],
            "title": "WalletRiskResult",
            "type": "object"
          }
        },
        "properties": {
          "chain_id": {
            "title": "Chain Id",
            "type": "integer"
          },
          "data_block_number": {
            "title": "Data Block Number",
            "type": "integer"
          },
          "results": {
            "items": {
              "$ref": "#/$defs/WalletRiskResult"
            },
            "title": "Results",
            "type": "array"
          },
          "summary": {
            "$ref": "#/$defs/RiskSummary"
          },
          "note": {
            "default": "On-chain liquidation-risk snapshot at data_block_number. Aave risk_tier is derived from the numeric health factor: liquidatable (<1.0), critical (<1.05), warning (<1.15), caution (<1.5), healthy (\u22651.5). Compound v3 exposes only a boolean isLiquidatable \u2014 a numeric health factor is not available from this tool; do not attempt to compute, estimate, or infer it via additional tool calls. Do not infer a Compound liquidation or breach price from this output. overall_tier is the worst tier across protocols for each wallet. Aave USD values are base-currency 8-decimal from the Aave oracle. Duplicate wallet addresses in the request are deduplicated silently.",
            "title": "Note",
            "type": "string"
          }
        },
        "required": [
          "chain_id",
          "data_block_number",
          "results",
          "summary"
        ],
        "title": "GetLiquidationRiskOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_token_approvals",
      "version": "1.1.0",
      "description": "Audit ERC-20 token allowances for a wallet address. By default, returns all non-zero approvals for assets in the shared tracked-asset registry across curated DeFi protocol spenders (Uniswap, Aave, Compound, 1inch, 0x, OpenSea). Flags unlimited approvals with risk levels: high=unknown spender, medium=trusted protocol, low=bounded amount. Use before swaps to verify approval state, or after security incidents to detect active exploit vectors. Ethereum mainnet and Base only.",
      "tags": [
        "web3",
        "ethereum",
        "security",
        "erc20",
        "approvals",
        "defi"
      ],
      "input_schema": {
        "properties": {
          "wallet_address": {
            "description": "Wallet address (0x\u2026)",
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_id": {
            "default": 1,
            "description": "Chain ID (1=Ethereum, 8453=Base)",
            "title": "Chain Id",
            "type": "integer"
          },
          "tokens": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Token contract addresses to check (max 50). Defaults to the platform tracked token list.",
            "title": "Tokens"
          },
          "spenders": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Spender contract addresses to check (max 20). Defaults to the curated DeFi protocol list.",
            "title": "Spenders"
          }
        },
        "required": [
          "wallet_address"
        ],
        "title": "GetTokenApprovalsInput",
        "type": "object"
      },
      "output_schema": {
        "$defs": {
          "ApprovalEntry": {
            "properties": {
              "token_symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Token Symbol"
              },
              "token_address": {
                "title": "Token Address",
                "type": "string"
              },
              "spender_name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Spender Name"
              },
              "spender_address": {
                "title": "Spender Address",
                "type": "string"
              },
              "allowance_raw": {
                "title": "Allowance Raw",
                "type": "string"
              },
              "allowance_formatted": {
                "title": "Allowance Formatted",
                "type": "string"
              },
              "is_unlimited": {
                "title": "Is Unlimited",
                "type": "boolean"
              },
              "is_permit2": {
                "title": "Is Permit2",
                "type": "boolean"
              },
              "risk_level": {
                "enum": [
                  "low",
                  "medium",
                  "high"
                ],
                "title": "Risk Level",
                "type": "string"
              }
            },
            "required": [
              "token_symbol",
              "token_address",
              "spender_name",
              "spender_address",
              "allowance_raw",
              "allowance_formatted",
              "is_unlimited",
              "is_permit2",
              "risk_level"
            ],
            "title": "ApprovalEntry",
            "type": "object"
          },
          "RiskSummary": {
            "properties": {
              "total_approvals": {
                "title": "Total Approvals",
                "type": "integer"
              },
              "unlimited_approvals": {
                "title": "Unlimited Approvals",
                "type": "integer"
              },
              "high_risk_approvals": {
                "title": "High Risk Approvals",
                "type": "integer"
              },
              "unknown_spenders": {
                "title": "Unknown Spenders",
                "type": "integer"
              }
            },
            "required": [
              "total_approvals",
              "unlimited_approvals",
              "high_risk_approvals",
              "unknown_spenders"
            ],
            "title": "RiskSummary",
            "type": "object"
          }
        },
        "properties": {
          "wallet_address": {
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_id": {
            "title": "Chain Id",
            "type": "integer"
          },
          "approvals": {
            "items": {
              "$ref": "#/$defs/ApprovalEntry"
            },
            "title": "Approvals",
            "type": "array"
          },
          "risk_summary": {
            "$ref": "#/$defs/RiskSummary"
          },
          "note": {
            "title": "Note",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Error"
          }
        },
        "required": [
          "wallet_address",
          "chain_id",
          "approvals",
          "risk_summary",
          "note"
        ],
        "title": "GetTokenApprovalsOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_wallet_approvals",
      "version": "1.0.0",
      "description": "Inspect a wallet's current ERC-20 token authorization exposure on one DeBank-supported chain. Returns discovered spenders, USD exposure, protocol attribution, and hacked or abandoned protocol flags. This is broader than the curated block-accurate get_token_approvals tool.",
      "tags": [
        "web3",
        "wallet",
        "security",
        "approvals",
        "cross-chain",
        "debank"
      ],
      "input_schema": {
        "properties": {
          "wallet_address": {
            "description": "EVM wallet address (0x-prefixed)",
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_id": {
            "description": "DeBank chain identifier, for example eth, arb, or base",
            "title": "Chain Id",
            "type": "string"
          }
        },
        "required": [
          "wallet_address",
          "chain_id"
        ],
        "title": "GetWalletApprovalsInput",
        "type": "object"
      },
      "use_when": "Use when broad spender discovery or cross-chain security screening is needed. Call once per chain because DeBank requires a chain_id. Use get_token_approvals for a free, block-accurate Ethereum or Base scan of curated tokens and spenders.",
      "limitations": "The result is third-party analytics and may be stale. It covers token approvals only, not NFT approvals or off-chain Permit2 sub-permits; each chain consumes a separate billable provider call.",
      "alternatives": [
        "get_token_approvals"
      ],
      "output_schema": {
        "$defs": {
          "DataProvenance": {
            "description": "Machine-readable source and freshness metadata for a tool response.",
            "properties": {
              "provider": {
                "title": "Provider",
                "type": "string"
              },
              "source_urls": {
                "items": {
                  "type": "string"
                },
                "title": "Source Urls",
                "type": "array"
              },
              "retrieved_at": {
                "title": "Retrieved At",
                "type": "string"
              },
              "source_fetched_at": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Source Fetched At"
              },
              "cache_hit": {
                "default": false,
                "title": "Cache Hit",
                "type": "boolean"
              },
              "cache_age_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Age Seconds"
              },
              "cache_ttl_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Ttl Seconds"
              }
            },
            "required": [
              "provider",
              "retrieved_at"
            ],
            "title": "DataProvenance",
            "type": "object"
          },
          "WalletApprovalSpender": {
            "properties": {
              "id": {
                "title": "Id",
                "type": "string"
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "integer"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Value"
              },
              "exposure_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Exposure Usd"
              },
              "protocol": {
                "anyOf": [
                  {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Protocol"
              },
              "is_contract": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Is Contract"
              },
              "is_open_source": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Is Open Source"
              },
              "is_hacked": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Is Hacked"
              },
              "is_abandoned": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Is Abandoned"
              }
            },
            "required": [
              "id"
            ],
            "title": "WalletApprovalSpender",
            "type": "object"
          },
          "WalletApprovalToken": {
            "properties": {
              "id": {
                "title": "Id",
                "type": "string"
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Name"
              },
              "symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Symbol"
              },
              "logo_url": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Logo Url"
              },
              "chain": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Chain"
              },
              "price": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Price"
              },
              "balance": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Balance"
              },
              "spenders": {
                "items": {
                  "$ref": "#/$defs/WalletApprovalSpender"
                },
                "title": "Spenders",
                "type": "array"
              },
              "sum_exposure_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Sum Exposure Usd"
              },
              "exposure_balance": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Exposure Balance"
              }
            },
            "required": [
              "id"
            ],
            "title": "WalletApprovalToken",
            "type": "object"
          },
          "WalletApprovalsError": {
            "properties": {
              "operation": {
                "title": "Operation",
                "type": "string"
              },
              "error_type": {
                "title": "Error Type",
                "type": "string"
              },
              "message": {
                "title": "Message",
                "type": "string"
              }
            },
            "required": [
              "operation",
              "error_type",
              "message"
            ],
            "title": "WalletApprovalsError",
            "type": "object"
          }
        },
        "properties": {
          "wallet_address": {
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_id": {
            "title": "Chain Id",
            "type": "string"
          },
          "approvals": {
            "items": {
              "$ref": "#/$defs/WalletApprovalToken"
            },
            "title": "Approvals",
            "type": "array"
          },
          "data_complete": {
            "title": "Data Complete",
            "type": "boolean"
          },
          "errors": {
            "items": {
              "$ref": "#/$defs/WalletApprovalsError"
            },
            "title": "Errors",
            "type": "array"
          },
          "provenance": {
            "$ref": "#/$defs/DataProvenance"
          },
          "note": {
            "default": "DeBank authorization exposure is analytics data for one chain and may be stale. It does not inspect NFT approvals or off-chain Permit2 sub-permits.",
            "title": "Note",
            "type": "string"
          }
        },
        "required": [
          "wallet_address",
          "chain_id",
          "data_complete",
          "provenance"
        ],
        "title": "GetWalletApprovalsOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_token_price",
      "version": "1.2.0",
      "description": "Get current price, 24h change, market cap, fully-diluted valuation, and volume for one or more crypto tokens. Accepts ticker symbols (BTC, ETH, LQTY), full token names (Bitcoin, Liquity, Chainlink), or CoinGecko IDs. Unknown symbols are resolved automatically against the full CoinGecko coin list. Supports batch queries up to 50 tokens. Bare 0x contract addresses are not resolvable by CoinGecko and should be treated as unknown. If get_wallet_portfolio already returned price_usd/value_usd for a held token, reuse that value instead of calling get_token_price again.",
      "tags": [
        "finance",
        "crypto",
        "price",
        "market"
      ],
      "input_schema": {
        "properties": {
          "tokens": {
            "description": "Token symbols or CoinGecko IDs (e.g. ['BTC', 'ETH', 'SOL'])",
            "items": {
              "type": "string"
            },
            "maxItems": 50,
            "minItems": 1,
            "title": "Tokens",
            "type": "array"
          },
          "vs_currency": {
            "default": "usd",
            "description": "Quote currency (usd, eur, gbp, btc, eth)",
            "title": "Vs Currency",
            "type": "string"
          }
        },
        "required": [
          "tokens"
        ],
        "title": "GetTokenPriceInput",
        "type": "object"
      },
      "output_schema": {
        "$defs": {
          "TokenPriceEntry": {
            "properties": {
              "id": {
                "title": "Id",
                "type": "string"
              },
              "symbol": {
                "title": "Symbol",
                "type": "string"
              },
              "price": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Price"
              },
              "market_cap": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Market Cap"
              },
              "volume_24h": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Volume 24H"
              },
              "change_24h_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Change 24H Pct"
              },
              "fully_diluted_valuation": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Fully Diluted Valuation"
              }
            },
            "required": [
              "id",
              "symbol",
              "price",
              "market_cap",
              "volume_24h",
              "change_24h_pct"
            ],
            "title": "TokenPriceEntry",
            "type": "object"
          }
        },
        "properties": {
          "vs_currency": {
            "title": "Vs Currency",
            "type": "string"
          },
          "prices": {
            "items": {
              "$ref": "#/$defs/TokenPriceEntry"
            },
            "title": "Prices",
            "type": "array"
          }
        },
        "required": [
          "vs_currency",
          "prices"
        ],
        "title": "GetTokenPriceOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_protocol_tvl",
      "version": "1.4.0",
      "description": "Get Total Value Locked (TVL) data for a DeFi protocol from DeFiLlama. Returns current TVL in USD, 7-day and 30-day percentage change, and a per-chain breakdown. Set include_historical=True to also retrieve a daily TVL series for trend analysis. When DeFiLlama reports them, also returns current fees and revenue in USD with 7-day and 30-day percentage change. You can also batch multiple protocols via protocols=[...]. Supports 3,000+ protocols including Aave, Uniswap, Curve, Compound, Lido, MakerDAO, and more. Batch responses retain one compact economic summary per requested protocol; single-protocol calls include chain and historical detail. A revenue_error_type identifies an upstream revenue lookup failure. Use the DeFiLlama slug format: 'aave-v3', 'uniswap-v3', 'curve-dex'. Common aliases such as 'spark-protocol' and 'compound' are auto-corrected.",
      "tags": [
        "defi",
        "tvl",
        "finance",
        "protocol",
        "defillama"
      ],
      "input_schema": {
        "properties": {
          "protocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "DeFiLlama protocol slug (e.g. 'aave-v3', 'uniswap-v3', 'curve-dex'). Use lowercase with hyphens as shown on DeFiLlama. Tip: 'aave' works for the combined Aave TVL; 'aave-v3' for V3 only. Optional when using batch mode via protocols=[...].",
            "title": "Protocol"
          },
          "protocols": {
            "description": "Optional batch mode: list of DeFiLlama protocol slugs. When provided, the tool returns one TVL result object per protocol.",
            "items": {
              "type": "string"
            },
            "title": "Protocols",
            "type": "array"
          },
          "include_historical": {
            "default": false,
            "description": "If true, return a daily historical TVL series for the requested window.",
            "title": "Include Historical",
            "type": "boolean"
          },
          "days": {
            "default": 30,
            "description": "Lookback window in days for the historical series (only used when include_historical=True).",
            "maximum": 365,
            "minimum": 1,
            "title": "Days",
            "type": "integer"
          }
        },
        "title": "GetProtocolTvlInput",
        "type": "object"
      },
      "output_schema": {
        "anyOf": [
          {
            "properties": {
              "protocol": {
                "title": "Protocol",
                "type": "string"
              },
              "current_tvl_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Current Tvl Usd"
              },
              "tvl_7d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Tvl 7D Change Pct"
              },
              "tvl_30d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Tvl 30D Change Pct"
              },
              "chain_breakdown": {
                "items": {
                  "$ref": "#/$defs/ChainTvlEntry"
                },
                "title": "Chain Breakdown",
                "type": "array"
              },
              "historical_series": {
                "anyOf": [
                  {
                    "items": {
                      "$ref": "#/$defs/DailyTvlPoint"
                    },
                    "type": "array"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Historical Series"
              },
              "current_fees_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Current Fees Usd"
              },
              "fees_7d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Fees 7D Change Pct"
              },
              "fees_30d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Fees 30D Change Pct"
              },
              "current_revenue_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Current Revenue Usd"
              },
              "revenue_7d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Revenue 7D Change Pct"
              },
              "revenue_30d_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Revenue 30D Change Pct"
              },
              "revenue_error_type": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Revenue Error Type"
              },
              "note": {
                "title": "Note",
                "type": "string"
              },
              "error": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Error"
              },
              "error_type": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Error Type"
              },
              "provenance": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/DataProvenance"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Source and freshness metadata for the DeFiLlama response."
              }
            },
            "required": [
              "protocol",
              "current_tvl_usd",
              "tvl_7d_change_pct",
              "tvl_30d_change_pct",
              "chain_breakdown",
              "historical_series",
              "note"
            ],
            "title": "GetProtocolTvlOutput",
            "type": "object"
          },
          {
            "type": "array",
            "items": {
              "properties": {
                "protocol": {
                  "title": "Protocol",
                  "type": "string"
                },
                "current_tvl_usd": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Current Tvl Usd"
                },
                "tvl_7d_change_pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Tvl 7D Change Pct"
                },
                "tvl_30d_change_pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Tvl 30D Change Pct"
                },
                "chain_breakdown": {
                  "items": {
                    "$ref": "#/$defs/ChainTvlEntry"
                  },
                  "title": "Chain Breakdown",
                  "type": "array"
                },
                "historical_series": {
                  "anyOf": [
                    {
                      "items": {
                        "$ref": "#/$defs/DailyTvlPoint"
                      },
                      "type": "array"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "title": "Historical Series"
                },
                "current_fees_usd": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Current Fees Usd"
                },
                "fees_7d_change_pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Fees 7D Change Pct"
                },
                "fees_30d_change_pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Fees 30D Change Pct"
                },
                "current_revenue_usd": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Current Revenue Usd"
                },
                "revenue_7d_change_pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Revenue 7D Change Pct"
                },
                "revenue_30d_change_pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Revenue 30D Change Pct"
                },
                "revenue_error_type": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Revenue Error Type"
                },
                "note": {
                  "title": "Note",
                  "type": "string"
                },
                "error": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Error"
                },
                "error_type": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "title": "Error Type"
                },
                "provenance": {
                  "anyOf": [
                    {
                      "$ref": "#/$defs/DataProvenance"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Source and freshness metadata for the DeFiLlama response."
                }
              },
              "required": [
                "protocol",
                "current_tvl_usd",
                "tvl_7d_change_pct",
                "tvl_30d_change_pct",
                "chain_breakdown",
                "historical_series",
                "note"
              ],
              "title": "GetProtocolTvlOutput",
              "type": "object"
            },
            "minItems": 1
          }
        ],
        "$defs": {
          "ChainTvlEntry": {
            "properties": {
              "chain": {
                "title": "Chain",
                "type": "string"
              },
              "tvl_usd": {
                "title": "Tvl Usd",
                "type": "number"
              }
            },
            "required": [
              "chain",
              "tvl_usd"
            ],
            "title": "ChainTvlEntry",
            "type": "object"
          },
          "DailyTvlPoint": {
            "properties": {
              "date": {
                "title": "Date",
                "type": "string"
              },
              "tvl_usd": {
                "title": "Tvl Usd",
                "type": "number"
              }
            },
            "required": [
              "date",
              "tvl_usd"
            ],
            "title": "DailyTvlPoint",
            "type": "object"
          },
          "DataProvenance": {
            "description": "Machine-readable source and freshness metadata for a tool response.",
            "properties": {
              "provider": {
                "title": "Provider",
                "type": "string"
              },
              "source_urls": {
                "items": {
                  "type": "string"
                },
                "title": "Source Urls",
                "type": "array"
              },
              "retrieved_at": {
                "title": "Retrieved At",
                "type": "string"
              },
              "source_fetched_at": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Source Fetched At"
              },
              "cache_hit": {
                "default": false,
                "title": "Cache Hit",
                "type": "boolean"
              },
              "cache_age_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Age Seconds"
              },
              "cache_ttl_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Ttl Seconds"
              }
            },
            "required": [
              "provider",
              "retrieved_at"
            ],
            "title": "DataProvenance",
            "type": "object"
          }
        }
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_token_price_historical",
      "version": "1.1.0",
      "description": "Get historical price data for crypto tokens over a specified time window (1\u2013365 days). Returns period statistics (start, end, % change, high, low) plus a downsampled daily price series, plus high_30d (raw observation maximum), std_30d (population standard deviation of daily returns as a decimal), and dca_baseline_90d (weekly samples over the preceding 90 UTC days, excluding the latest observation). dca_baseline_90d_partial identifies incomplete history. Use for period comparisons (month-over-month, YTD), trend analysis, and price charts. Prefer over web_search for time-comparative financial queries. Pass stats_only=true when the daily series is unnecessary. These metrics are pre-computed and should not be re-derived with calculate.",
      "tags": [
        "finance",
        "crypto",
        "price",
        "history",
        "market"
      ],
      "input_schema": {
        "properties": {
          "tokens": {
            "description": "Token symbols or CoinGecko IDs (e.g. ['BTC', 'ETH']). Max 10 per call.",
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "minItems": 1,
            "title": "Tokens",
            "type": "array"
          },
          "days": {
            "default": 30,
            "description": "Lookback window in days (1\u2013365). 1=5-min granularity, 2-90=hourly, 91+=daily.",
            "maximum": 365,
            "minimum": 1,
            "title": "Days",
            "type": "integer"
          },
          "vs_currency": {
            "default": "usd",
            "description": "Quote currency (usd, eur, gbp, btc, eth). Lowercase 3\u201310 letters.",
            "pattern": "^[a-z]{3,10}$",
            "title": "Vs Currency",
            "type": "string"
          },
          "stats_only": {
            "default": false,
            "description": "If true, omit the daily price series and return period stats plus precomputed 30-day high/volatility and 90-day DCA baseline metrics.",
            "title": "Stats Only",
            "type": "boolean"
          }
        },
        "required": [
          "tokens"
        ],
        "title": "GetTokenPriceHistoricalInput",
        "type": "object"
      },
      "output_schema": {
        "$defs": {
          "DailyPricePoint": {
            "properties": {
              "date": {
                "title": "Date",
                "type": "string"
              },
              "price": {
                "title": "Price",
                "type": "number"
              }
            },
            "required": [
              "date",
              "price"
            ],
            "title": "DailyPricePoint",
            "type": "object"
          },
          "TokenHistoricalEntry": {
            "properties": {
              "id": {
                "title": "Id",
                "type": "string"
              },
              "symbol": {
                "title": "Symbol",
                "type": "string"
              },
              "price_start": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Price Start"
              },
              "price_end": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Price End"
              },
              "price_change_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Price Change Pct"
              },
              "price_high": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Price High"
              },
              "price_low": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Price Low"
              },
              "high_30d": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Maximum raw price observation in the trailing 30 UTC days, in vs_currency.",
                "title": "High 30D"
              },
              "std_30d": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Population standard deviation of trailing 30-day simple daily returns, as a decimal.",
                "title": "Std 30D"
              },
              "dca_baseline_90d": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Mean of weekly daily-close samples from the preceding 90 UTC days, in vs_currency.",
                "title": "Dca Baseline 90D"
              },
              "dca_baseline_90d_partial": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "True when the DCA baseline uses incomplete 90-day history; null when unavailable.",
                "title": "Dca Baseline 90D Partial"
              },
              "daily_prices": {
                "items": {
                  "$ref": "#/$defs/DailyPricePoint"
                },
                "title": "Daily Prices",
                "type": "array"
              }
            },
            "required": [
              "id",
              "symbol",
              "price_start",
              "price_end",
              "price_change_pct",
              "price_high",
              "price_low",
              "daily_prices"
            ],
            "title": "TokenHistoricalEntry",
            "type": "object"
          }
        },
        "properties": {
          "vs_currency": {
            "title": "Vs Currency",
            "type": "string"
          },
          "days": {
            "title": "Days",
            "type": "integer"
          },
          "tokens": {
            "items": {
              "$ref": "#/$defs/TokenHistoricalEntry"
            },
            "title": "Tokens",
            "type": "array"
          }
        },
        "required": [
          "vs_currency",
          "days",
          "tokens"
        ],
        "title": "GetTokenPriceHistoricalOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_yield_rates",
      "version": "1.3.0",
      "description": "Get DeFi yield pool rates from DeFiLlama, covering 1,000+ protocols across all chains. Returns pools sorted by APY with TVL, base rate, reward APY, and 7d/30d mean APY context. Filter by protocol (e.g. 'aave-v3', 'compound-v3'), chain (e.g. 'Ethereum', 'Base'), minimum TVL, and minimum APY. Use this to answer questions like 'Where can I get the best USDC yield?', 'What is Aave's current APY on Ethereum?', or 'Compare Aave vs Compound yields'. Returns up to 50 pools. Call once per query unless a genuinely disjoint filter is required. The returned `symbol` field contains the underlying tokens (e.g. 'USDC', 'ETH-USDC', 'WBTC'); filter on the client side by inspecting `symbol` rather than re-calling with different arguments. Use `min_apy`, `max_apy`, `min_tvl_usd`, and `symbols_any` to prune noise in a single call. `symbols_any` matches whole symbol tokens (e.g. 'USDC' matches 'USDC' and 'ETH-USDC' but not 'TULIPAUSDC') and returns the highest-ranked pools for EACH requested symbol, so one call gives a complete per-symbol comparison; symbols with no matching pool are named in `note`. Set `max_apy` (e.g. 30) to exclude leveraged/boosted pools so genuine yields surface. Set stable_only=true when you need consistent stablecoin yield screening; this ranks by 30d mean APY first and still returns spot/base/reward components.",
      "tags": [
        "defi",
        "yield",
        "apy",
        "finance",
        "defillama"
      ],
      "input_schema": {
        "properties": {
          "protocols": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Filter by DeFiLlama project slugs (e.g. ['aave-v3', 'compound-v3']). None or empty list = include all protocols.",
            "title": "Protocols"
          },
          "chain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Filter by chain name (e.g. 'Ethereum', 'Base', 'Arbitrum'). Case-insensitive. None = all chains.",
            "title": "Chain"
          },
          "min_tvl_usd": {
            "default": 1000000.0,
            "description": "Exclude pools with TVL below this threshold (USD). Default $1M filters noise.",
            "minimum": 0.0,
            "title": "Min Tvl Usd",
            "type": "number"
          },
          "min_apy": {
            "default": 0.0,
            "description": "Exclude pools with APY below this value (%). Default 0 includes all.",
            "minimum": 0.0,
            "title": "Min Apy",
            "type": "number"
          },
          "max_apy": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Exclude pools with APY above this value (%). Default None = no upper bound. Use to filter out leveraged/boosted pools (e.g. max_apy=30) so genuine stablecoin yields surface.",
            "title": "Max Apy"
          },
          "limit": {
            "default": 20,
            "description": "Maximum number of pools to return, sorted by APY descending.",
            "maximum": 50,
            "minimum": 1,
            "title": "Limit",
            "type": "integer"
          },
          "symbols_any": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional symbol filter. If provided, include pools whose symbol field contains at least one token from this list (case-insensitive). Use held token symbols from get_wallet_portfolio to focus results.",
            "title": "Symbols Any"
          },
          "stable_only": {
            "default": false,
            "description": "When true, return only stablecoin pools and rank by 30d mean APY first to emphasize consistency over short-term spikes.",
            "title": "Stable Only",
            "type": "boolean"
          }
        },
        "title": "GetYieldRatesInput",
        "type": "object"
      },
      "output_schema": {
        "$defs": {
          "DataProvenance": {
            "description": "Machine-readable source and freshness metadata for a tool response.",
            "properties": {
              "provider": {
                "title": "Provider",
                "type": "string"
              },
              "source_urls": {
                "items": {
                  "type": "string"
                },
                "title": "Source Urls",
                "type": "array"
              },
              "retrieved_at": {
                "title": "Retrieved At",
                "type": "string"
              },
              "source_fetched_at": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Source Fetched At"
              },
              "cache_hit": {
                "default": false,
                "title": "Cache Hit",
                "type": "boolean"
              },
              "cache_age_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Age Seconds"
              },
              "cache_ttl_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Ttl Seconds"
              }
            },
            "required": [
              "provider",
              "retrieved_at"
            ],
            "title": "DataProvenance",
            "type": "object"
          },
          "YieldPoolEntry": {
            "properties": {
              "pool_id": {
                "title": "Pool Id",
                "type": "string"
              },
              "project": {
                "title": "Project",
                "type": "string"
              },
              "symbol": {
                "title": "Symbol",
                "type": "string"
              },
              "chain": {
                "title": "Chain",
                "type": "string"
              },
              "tvl_usd": {
                "title": "Tvl Usd",
                "type": "number"
              },
              "apy": {
                "title": "Apy",
                "type": "number"
              },
              "apy_mean_7d": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Apy Mean 7D"
              },
              "apy_mean_30d": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Apy Mean 30D"
              },
              "apy_base": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Apy Base"
              },
              "apy_reward": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Apy Reward"
              },
              "stable": {
                "title": "Stable",
                "type": "boolean"
              },
              "il_risk": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Il Risk"
              }
            },
            "required": [
              "pool_id",
              "project",
              "symbol",
              "chain",
              "tvl_usd",
              "apy",
              "apy_mean_7d",
              "apy_mean_30d",
              "apy_base",
              "apy_reward",
              "stable",
              "il_risk"
            ],
            "title": "YieldPoolEntry",
            "type": "object"
          }
        },
        "properties": {
          "pools": {
            "items": {
              "$ref": "#/$defs/YieldPoolEntry"
            },
            "title": "Pools",
            "type": "array"
          },
          "total_matching": {
            "title": "Total Matching",
            "type": "integer"
          },
          "filters_applied": {
            "additionalProperties": true,
            "title": "Filters Applied",
            "type": "object"
          },
          "note": {
            "title": "Note",
            "type": "string"
          },
          "provenance": {
            "anyOf": [
              {
                "$ref": "#/$defs/DataProvenance"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Source and freshness metadata for the DeFiLlama response."
          }
        },
        "required": [
          "pools",
          "total_matching",
          "filters_applied",
          "note"
        ],
        "title": "GetYieldRatesOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "web_search",
      "version": "1.0.0",
      "description": "Real-time web search via Tavily. Use for current events, fact-checking, and research. Set search_depth='advanced' for complex research queries (higher quality, higher cost). Set topic='news' for recent headlines or 'finance' for market information.",
      "tags": [
        "search",
        "web",
        "realtime"
      ],
      "input_schema": {
        "properties": {
          "query": {
            "description": "Search query",
            "maxLength": 500,
            "title": "Query",
            "type": "string"
          },
          "num_results": {
            "default": 5,
            "description": "Number of web search results to return (1\u201320, default 5).",
            "maximum": 20,
            "minimum": 1,
            "title": "Num Results",
            "type": "integer"
          },
          "search_depth": {
            "default": "basic",
            "description": "'basic' for fast results, 'advanced' for thorough research (higher cost)",
            "enum": [
              "basic",
              "advanced"
            ],
            "title": "Search Depth",
            "type": "string"
          },
          "topic": {
            "default": "general",
            "description": "Search topic: 'general' for web, 'news' for headlines, 'finance' for markets",
            "enum": [
              "general",
              "news",
              "finance"
            ],
            "title": "Topic",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "title": "WebSearchInput",
        "type": "object"
      },
      "use_when": "Choose when the task needs current, external, or factual information not available from on-chain or local data \u2014 e.g. news, prices, documentation, or fact-checking.",
      "limitations": "Returns web snippets, not raw page bodies; results depend on Tavily coverage. Advanced depth costs more. Not a substitute for on-chain tools like get_token_price.",
      "alternatives": [
        "get_token_price",
        "http_fetch"
      ],
      "output_schema": {
        "$defs": {
          "SearchResult": {
            "properties": {
              "title": {
                "title": "Title",
                "type": "string"
              },
              "url": {
                "title": "Url",
                "type": "string"
              },
              "snippet": {
                "title": "Snippet",
                "type": "string"
              },
              "score": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Score"
              }
            },
            "required": [
              "title",
              "url",
              "snippet"
            ],
            "title": "SearchResult",
            "type": "object"
          }
        },
        "properties": {
          "query": {
            "title": "Query",
            "type": "string"
          },
          "num_results": {
            "title": "Num Results",
            "type": "integer"
          },
          "results": {
            "items": {
              "$ref": "#/$defs/SearchResult"
            },
            "title": "Results",
            "type": "array"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Note"
          }
        },
        "required": [
          "query",
          "num_results",
          "results"
        ],
        "title": "WebSearchOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "http_fetch",
      "version": "1.0.0",
      "description": "Fetch a web page and extract its main text content. Useful for reading articles, documentation, and web resources. Returns cleaned text, not raw HTML.",
      "tags": [
        "web",
        "http",
        "fetch",
        "content"
      ],
      "input_schema": {
        "properties": {
          "url": {
            "description": "URL to fetch (http or https only)",
            "maxLength": 2000,
            "minLength": 10,
            "title": "Url",
            "type": "string"
          },
          "max_chars": {
            "default": 8000,
            "description": "Maximum characters of extracted content to return",
            "maximum": 50000,
            "minimum": 100,
            "title": "Max Chars",
            "type": "integer"
          }
        },
        "required": [
          "url"
        ],
        "title": "HttpFetchInput",
        "type": "object"
      },
      "output_schema": {
        "properties": {
          "url": {
            "title": "Url",
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "content": {
            "title": "Content",
            "type": "string"
          },
          "content_length": {
            "title": "Content Length",
            "type": "integer"
          },
          "truncated": {
            "title": "Truncated",
            "type": "boolean"
          }
        },
        "required": [
          "url",
          "title",
          "content",
          "content_length",
          "truncated"
        ],
        "title": "HttpFetchOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_wallet_portfolio",
      "version": "1.1.0",
      "description": "Get aggregated token holdings with USD values for a wallet address. Tracks 19 major assets on Ethereum and 12 on Base, including spot, lending, liquid-staking, restaking, and stablecoin assets. Sorted by USD value. Returns up to 20 holdings. Includes native ETH balance in the holdings list \u2014 calling get_eth_balance separately after this is redundant.",
      "tags": [
        "web3",
        "ethereum",
        "portfolio",
        "balance",
        "defi"
      ],
      "input_schema": {
        "properties": {
          "wallet_address": {
            "description": "Wallet address (0x\u2026)",
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_id": {
            "default": 1,
            "description": "Chain ID (1=Ethereum, 8453=Base)",
            "title": "Chain Id",
            "type": "integer"
          }
        },
        "required": [
          "wallet_address"
        ],
        "title": "GetWalletPortfolioInput",
        "type": "object"
      },
      "use_when": "Choose when you need a wallet's overall token exposure and USD value on Ethereum or Base in one call. Call once per chain for a cross-chain comparison.",
      "limitations": "Tracks a fixed set of major assets per chain, not arbitrary tokens. Returns up to 20 holdings. Native ETH is included, so calling get_eth_balance separately is redundant.",
      "alternatives": [
        "get_eth_balance",
        "get_token_price",
        "get_defi_positions"
      ],
      "output_schema": {
        "$defs": {
          "PortfolioEntry": {
            "properties": {
              "symbol": {
                "title": "Symbol",
                "type": "string"
              },
              "token_address": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Token Address"
              },
              "balance_formatted": {
                "title": "Balance Formatted",
                "type": "string"
              },
              "price_usd": {
                "title": "Price Usd",
                "type": "number"
              },
              "value_usd": {
                "title": "Value Usd",
                "type": "number"
              }
            },
            "required": [
              "symbol",
              "token_address",
              "balance_formatted",
              "price_usd",
              "value_usd"
            ],
            "title": "PortfolioEntry",
            "type": "object"
          }
        },
        "properties": {
          "wallet_address": {
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_id": {
            "title": "Chain Id",
            "type": "integer"
          },
          "total_value_usd": {
            "title": "Total Value Usd",
            "type": "number"
          },
          "holdings": {
            "items": {
              "$ref": "#/$defs/PortfolioEntry"
            },
            "title": "Holdings",
            "type": "array"
          },
          "fetch_errors": {
            "items": {
              "type": "string"
            },
            "title": "Fetch Errors",
            "type": "array"
          },
          "note": {
            "default": "Only tracked tokens shown. Untracked tokens not included.",
            "title": "Note",
            "type": "string"
          }
        },
        "required": [
          "wallet_address",
          "chain_id",
          "total_value_usd",
          "holdings"
        ],
        "title": "GetWalletPortfolioOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_wallet_history",
      "version": "1.0.0",
      "description": "Get one page of decoded transaction history for an EVM wallet across DeBank-supported chains. Returns send, receive, and approval categories with protocol, token, exchange, gas, and USD metadata. Use the returned next_cursor as start_time to page backward.",
      "tags": [
        "web3",
        "wallet",
        "history",
        "activity",
        "cross-chain",
        "debank"
      ],
      "input_schema": {
        "properties": {
          "wallet_address": {
            "description": "EVM wallet address (0x-prefixed)",
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 50,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional DeBank chain identifiers; omit to query all supported chains.",
            "title": "Chain Ids"
          },
          "start_time": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Return entries earlier than this Unix timestamp for cursor pagination.",
            "title": "Start Time"
          },
          "page_count": {
            "default": 20,
            "description": "Number of history entries to request (maximum 20).",
            "maximum": 20,
            "minimum": 1,
            "title": "Page Count",
            "type": "integer"
          }
        },
        "required": [
          "wallet_address"
        ],
        "title": "GetWalletHistoryInput",
        "type": "object"
      },
      "use_when": "Use for wallet activity discovery, protocol interaction history, exchange exposure, and gas analysis. Page backward with next_cursor for older activity. Use get_transaction or decode_transaction when one known transaction needs block-level details.",
      "limitations": "DeBank returns at most 20 entries per call and the data may be stale. This tool is not a complete ledger, PnL engine, or cost-basis calculator because historical execution prices and all transfer semantics are not guaranteed.",
      "alternatives": [
        "get_transaction",
        "decode_transaction"
      ],
      "output_schema": {
        "$defs": {
          "DataProvenance": {
            "description": "Machine-readable source and freshness metadata for a tool response.",
            "properties": {
              "provider": {
                "title": "Provider",
                "type": "string"
              },
              "source_urls": {
                "items": {
                  "type": "string"
                },
                "title": "Source Urls",
                "type": "array"
              },
              "retrieved_at": {
                "title": "Retrieved At",
                "type": "string"
              },
              "source_fetched_at": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Source Fetched At"
              },
              "cache_hit": {
                "default": false,
                "title": "Cache Hit",
                "type": "boolean"
              },
              "cache_age_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Age Seconds"
              },
              "cache_ttl_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Ttl Seconds"
              }
            },
            "required": [
              "provider",
              "retrieved_at"
            ],
            "title": "DataProvenance",
            "type": "object"
          },
          "WalletHistoryError": {
            "properties": {
              "operation": {
                "title": "Operation",
                "type": "string"
              },
              "error_type": {
                "title": "Error Type",
                "type": "string"
              },
              "message": {
                "title": "Message",
                "type": "string"
              }
            },
            "required": [
              "operation",
              "error_type",
              "message"
            ],
            "title": "WalletHistoryError",
            "type": "object"
          }
        },
        "properties": {
          "wallet_address": {
            "title": "Wallet Address",
            "type": "string"
          },
          "chain_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chain Ids"
          },
          "start_time": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Time"
          },
          "page_count": {
            "title": "Page Count",
            "type": "integer"
          },
          "history_list": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "History List",
            "type": "array"
          },
          "project_dict": {
            "additionalProperties": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Project Dict",
            "type": "object"
          },
          "token_dict": {
            "additionalProperties": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Token Dict",
            "type": "object"
          },
          "cex_dict": {
            "additionalProperties": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Cex Dict",
            "type": "object"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Next Cursor"
          },
          "has_more": {
            "default": false,
            "title": "Has More",
            "type": "boolean"
          },
          "data_complete": {
            "title": "Data Complete",
            "type": "boolean"
          },
          "errors": {
            "items": {
              "$ref": "#/$defs/WalletHistoryError"
            },
            "title": "Errors",
            "type": "array"
          },
          "provenance": {
            "$ref": "#/$defs/DataProvenance"
          },
          "note": {
            "default": "This is one page of DeBank's decoded activity history. It supports activity and gas analysis, but does not provide complete PnL or cost basis without historical execution prices.",
            "title": "Note",
            "type": "string"
          }
        },
        "required": [
          "wallet_address",
          "chain_ids",
          "start_time",
          "page_count",
          "data_complete",
          "provenance"
        ],
        "title": "GetWalletHistoryOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    },
    {
      "name": "get_wallet_positions",
      "version": "1.0.0",
      "description": "Get a wallet's DeFi positions across all DeBank-supported chains and protocols. Returns protocol-level positions, asset/debt/net USD values, token lists, and optional all-chain net worth. Set include_token_balances=true to also return DeBank's complete cross-chain wallet token list. This covers substantially more protocols and chains than the block-accurate get_defi_positions tool. Use raw-RPC tools for liquidation, swap quotes, or other transaction-critical questions.",
      "tags": [
        "web3",
        "defi",
        "portfolio",
        "wallet",
        "cross-chain",
        "debank"
      ],
      "input_schema": {
        "properties": {
          "wallet_address": {
            "description": "EVM wallet address (0x\u2026)",
            "title": "Wallet Address",
            "type": "string"
          },
          "include_net_worth": {
            "default": true,
            "description": "Include all-chain net worth and per-chain balances; disable to avoid that additional provider request.",
            "title": "Include Net Worth",
            "type": "boolean"
          },
          "include_token_balances": {
            "default": false,
            "description": "Include DeBank's complete cross-chain token balance list; adds a billable provider request.",
            "title": "Include Token Balances",
            "type": "boolean"
          }
        },
        "required": [
          "wallet_address"
        ],
        "title": "GetWalletPositionsInput",
        "type": "object"
      },
      "use_when": "Use for broad wallet discovery, portfolio allocation, protocol exposure, or cross-chain position questions. Set include_token_balances=true when complete wallet token discovery is required; otherwise the response only includes tokens attached to protocol positions. Use get_defi_positions when the user needs a block-accurate Aave, Compound, Uniswap, or Lido snapshot.",
      "limitations": "DeBank portfolio data is third-party analytics and may be stale, including occasional long refresh delays. It is read-only, EVM wallet oriented, and does not prove current liquidation or execution state. include_token_balances adds a separate billable DeBank request.",
      "alternatives": [
        "get_defi_positions",
        "get_wallet_portfolio",
        "get_token_approvals"
      ],
      "output_schema": {
        "$defs": {
          "DataProvenance": {
            "description": "Machine-readable source and freshness metadata for a tool response.",
            "properties": {
              "provider": {
                "title": "Provider",
                "type": "string"
              },
              "source_urls": {
                "items": {
                  "type": "string"
                },
                "title": "Source Urls",
                "type": "array"
              },
              "retrieved_at": {
                "title": "Retrieved At",
                "type": "string"
              },
              "source_fetched_at": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Source Fetched At"
              },
              "cache_hit": {
                "default": false,
                "title": "Cache Hit",
                "type": "boolean"
              },
              "cache_age_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Age Seconds"
              },
              "cache_ttl_seconds": {
                "anyOf": [
                  {
                    "minimum": 0,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Cache Ttl Seconds"
              }
            },
            "required": [
              "provider",
              "retrieved_at"
            ],
            "title": "DataProvenance",
            "type": "object"
          },
          "WalletChainBalance": {
            "properties": {
              "chain_id": {
                "title": "Chain Id",
                "type": "string"
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Name"
              },
              "community_id": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Community Id"
              },
              "usd_value": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Usd Value"
              }
            },
            "required": [
              "chain_id"
            ],
            "title": "WalletChainBalance",
            "type": "object"
          },
          "WalletPositionItem": {
            "properties": {
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Name"
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Description"
              },
              "update_at": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Update At"
              },
              "asset_usd_value": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Asset Usd Value"
              },
              "debt_usd_value": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Debt Usd Value"
              },
              "net_usd_value": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Net Usd Value"
              },
              "detail_types": {
                "items": {
                  "type": "string"
                },
                "title": "Detail Types",
                "type": "array"
              },
              "token_lists": {
                "additionalProperties": {
                  "items": {
                    "$ref": "#/$defs/WalletToken"
                  },
                  "type": "array"
                },
                "description": "Protocol-specific token lists keyed by their DeBank detail field.",
                "title": "Token Lists",
                "type": "object"
              }
            },
            "title": "WalletPositionItem",
            "type": "object"
          },
          "WalletPositionsError": {
            "properties": {
              "operation": {
                "title": "Operation",
                "type": "string"
              },
              "error_type": {
                "title": "Error Type",
                "type": "string"
              },
              "message": {
                "title": "Message",
                "type": "string"
              }
            },
            "required": [
              "operation",
              "error_type",
              "message"
            ],
            "title": "WalletPositionsError",
            "type": "object"
          },
          "WalletProtocolPosition": {
            "properties": {
              "protocol_id": {
                "title": "Protocol Id",
                "type": "string"
              },
              "chain_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Chain Id"
              },
              "protocol_name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Protocol Name"
              },
              "site_url": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Site Url"
              },
              "has_supported_portfolio": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Has Supported Portfolio"
              },
              "protocol_tvl_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Protocol Tvl Usd"
              },
              "items": {
                "items": {
                  "$ref": "#/$defs/WalletPositionItem"
                },
                "title": "Items",
                "type": "array"
              }
            },
            "required": [
              "protocol_id"
            ],
            "title": "WalletProtocolPosition",
            "type": "object"
          },
          "WalletToken": {
            "properties": {
              "token_id": {
                "title": "Token Id",
                "type": "string"
              },
              "chain_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Chain Id"
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Name"
              },
              "symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Symbol"
              },
              "display_symbol": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Display Symbol"
              },
              "decimals": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Decimals"
              },
              "amount": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Amount"
              },
              "raw_amount": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Raw Amount"
              },
              "price_usd": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Price Usd"
              },
              "usd_value": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Usd Value"
              },
              "protocol_id": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Protocol Id"
              },
              "is_verified": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "title": "Is Verified"
              }
            },
            "required": [
              "token_id"
            ],
            "title": "WalletToken",
            "type": "object"
          }
        },
        "properties": {
          "wallet_address": {
            "title": "Wallet Address",
            "type": "string"
          },
          "include_net_worth": {
            "title": "Include Net Worth",
            "type": "boolean"
          },
          "include_token_balances": {
            "title": "Include Token Balances",
            "type": "boolean"
          },
          "total_net_worth_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Total Net Worth Usd"
          },
          "chain_balances": {
            "items": {
              "$ref": "#/$defs/WalletChainBalance"
            },
            "title": "Chain Balances",
            "type": "array"
          },
          "positions": {
            "items": {
              "$ref": "#/$defs/WalletProtocolPosition"
            },
            "title": "Positions",
            "type": "array"
          },
          "token_balances": {
            "items": {
              "$ref": "#/$defs/WalletToken"
            },
            "title": "Token Balances",
            "type": "array"
          },
          "data_complete": {
            "title": "Data Complete",
            "type": "boolean"
          },
          "errors": {
            "items": {
              "$ref": "#/$defs/WalletPositionsError"
            },
            "title": "Errors",
            "type": "array"
          },
          "provenance": {
            "$ref": "#/$defs/DataProvenance"
          },
          "staleness_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Max age in seconds of the underlying DeBank position data (from per-item update_at), or None when unavailable.",
            "title": "Staleness Seconds"
          },
          "note": {
            "default": "Positions are sourced from DeBank Cloud portfolio analytics and may be stale; they are not block-accurate. staleness_seconds reports the oldest underlying position update. Use get_defi_positions or other raw-RPC tools for liquidation, quote, and transaction-critical checks.",
            "title": "Note",
            "type": "string"
          }
        },
        "required": [
          "wallet_address",
          "include_net_worth",
          "include_token_balances",
          "data_complete",
          "provenance"
        ],
        "title": "GetWalletPositionsOutput",
        "type": "object"
      },
      "reputation": {
        "reputation_score": 0.0,
        "success_rate": 0.0,
        "sample_size": 0.0,
        "confidence": 0.0,
        "freshness": 0.0,
        "average_latency_ms": 0.0
      }
    }
  ],
  "authentication": {
    "required": true,
    "scheme": "bearer",
    "type": "jwt",
    "token_endpoint": "/token"
  },
  "securitySchemes": {
    "bearer_jwt": {
      "httpAuthSecurityScheme": {
        "description": "JWT bearer token issued by Teardrop.",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "bearer_jwt": []
    }
  ],
  "securityRequirements": [
    {
      "bearer_jwt": []
    }
  ],
  "iconUrl": "https://teardrop.dev/teardrop.png"
}