{
  "openapi": "3.1.1",
  "info": {
    "title": "Blockchain & Web3 explorers API",
    "version": "1.0.0",
    "summary": "Deterministic tools for people and AI agents.",
    "description": "Every endpoint performs the same calculation as the human page and returns inputs, result, units, assumptions, sources, warnings and computedAt. MCP endpoint: /mcp."
  },
  "servers": [
    {
      "url": "https://web3.usefulweb.site"
    }
  ],
  "paths": {
    "/api/v1/tools": {
      "get": {
        "operationId": "listTools",
        "summary": "Catalog of all tools",
        "responses": {
          "200": {
            "description": "Tool list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/{id}": {
      "get": {
        "operationId": "getTool",
        "summary": "Definition of one tool",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "account-abstraction-explorer",
                "blockchain-incident-replay",
                "bridge-transfer-tracker",
                "cross-chain-transaction-explorer",
                "dao-governance-explorer",
                "defi-liquidation-explorer",
                "gas-fee-intelligence-explorer",
                "mev-explorer",
                "rollup-batch-explorer",
                "smart-contract-relationship-graph",
                "contract-upgrade-explorer",
                "stablecoin-flow-explorer",
                "token-unlock-explorer",
                "transaction-decoder",
                "wallet-permission-explorer"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/account-abstraction-explorer/calculate": {
      "post": {
        "operationId": "calculateAccountAbstractionExplorer",
        "summary": "Decode ERC-4337 bundles: UserOperations, paymasters, gas per op, deployed smart accounts.",
        "description": "Decodes ERC-4337 EntryPoint v0.6/v0.7/v0.8 events in a bundle transaction — every UserOperation with its sender, paymaster sponsorship, success, gas cost and revert reason, plus newly deployed accounts and the bundler's margin. For a smart-account address it shows the code type, EIP-7702 delegation, EntryPoint nonces and deposits and the proxy implementation.\n\nMethodology:\n- EntryPoint events are matched by topic0 computed locally from the signatures UserOperationEvent(bytes32 indexed userOpHash, address indexed sender, address indexed paymaster, uint256 nonce, bool success, uint256 actualGasCost, uint256 actualGasUsed), UserOperationRevertReason, PostOpRevertReason and AccountDeployed.\n- Known EntryPoints: v0.6 0x5FF137D4…2789, v0.7 0x00000000…a032 and v0.8 0x4337084D…f108 (deployed at the same address on every chain; checked with eth_getCode). Events from any other emitter are decoded but flagged.\n- Bundler = the transaction sender (tx.from). Bundler margin = sum of actualGasCost charged to the UserOperations minus the transaction fee actually paid; it assumes the handleOps beneficiary is the bundler.\n- Nonce = 192-bit key << 64 | 64-bit sequence (ERC-4337 semi-abstracted nonce). Revert data is decoded as Error(string)/Panic(uint256) or shown as a custom-error selector.\n- Account mode: eth_getCode (0xef0100‖address = EIP-7702 delegation), eth_getBalance, EntryPoint.getNonce(account, 0) and balanceOf(account) (deposit) on each EntryPoint, and the Contract Upgrade Explorer for the proxy implementation.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "account_abstraction_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountAbstractionExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Two UserOperations in one bundle (offline)",
                  "value": {
                    "mode": "pasted",
                    "chain": "base",
                    "receipt": "{\"transactionHash\":\"0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1\",\"from\":\"0x5555555555555555555555555555555555555555\",\"status\":\"0x1\",\"gasUsed\":\"0x3d090\",\"effectiveGasPrice\":\"0x1dcd6500\",\"logs\":[{\"address\":\"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"topics\":[\"0xd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d\",\"0xb1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1\",\"0x0000000000000000000000001111111111111111111111111111111111111111\"],\"data\":\"0x00000000000000000000000044444444444444444444444444444444444444440000000000000000000000003333333333333333333333333333333333333333\",\"logIndex\":\"0x0\"},{\"address\":\"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"topics\":[\"0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f\",\"0xb1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1\",\"0x0000000000000000000000001111111111111111111111111111111111111111\",\"0x0000000000000000000000003333333333333333333333333333333333333333\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000000000000249f0\",\"logIndex\":\"0x1\"},{\"address\":\"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"topics\":[\"0x1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a201\",\"0xb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2\",\"0x0000000000000000000000002222222222222222222222222222222222222222\"],\"data\":\"0x00000000000000000000000000000000000000000000000100000000000000070000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006408c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011696e73756666696369656e742066756e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\"logIndex\":\"0x2\"},{\"address\":\"0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"topics\":[\"0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f\",\"0xb2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2\",\"0x0000000000000000000000002222222222222222222222222222222222222222\",\"0x0000000000000000000000000000000000000000000000000000000000000000\"],\"data\":\"0x0000000000000000000000000000000000000000000000010000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d79883d20000000000000000000000000000000000000000000000000000000000000011170\",\"logIndex\":\"0x3\"}]}"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountAbstractionExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/blockchain-incident-replay/calculate": {
      "post": {
        "operationId": "calculateBlockchainIncidentReplay",
        "summary": "Replay an exploit from tx hashes: ordered timeline, fund-flow graph and who profited.",
        "description": "Reconstructs an on-chain incident from one or more transactions: decodes each one, tries a call trace for internal ETH movements, nets every ETH and token transfer per address, and highlights the likely attacker cluster, its profit and the biggest losers — as an ordered timeline and a value-flow graph. Works offline on pasted receipts.\n\nMethodology:\n- Each transaction is decoded with the Transaction Decoder (function, status, fee, ERC-20 transfers with symbols/decimals); if that is unavailable the receipt is read directly and Transfer(address,address,uint256) logs with 3 topics are parsed.\n- debug_traceTransaction with the callTracer is attempted for internal ETH transfers (calls with value at depth > 0, DELEGATECALL excluded). Public RPC nodes usually do not expose the debug namespace; then only the top-level transaction value is counted and the result says so (set RPC_URL_<CHAIN> to a tracing node for full coverage).\n- Net flow per address and asset = received − sent across all transactions in the incident. Transactions are ordered by block number and transaction index.\n- Attacker heuristic: the transaction senders, contracts they created within the incident, and called contracts that end with a net gain form the suspect cluster; the sender of the earliest transaction is the likely attacker. Victims = addresses outside the cluster with the largest net losses. This is a heuristic, not attribution.\n- USD values (optional): DefiLlama historical prices at the first transaction's timestamp (coins.llama.fi/prices/historical), per token contract and native coin. Unpriced assets are listed.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "blockchain_incident_replay",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlockchainIncidentReplayInput"
              },
              "examples": {
                "example1": {
                  "summary": "Helper deployment + flash-loan drain (offline)",
                  "value": {
                    "mode": "pasted",
                    "chain": "ethereum",
                    "receipts": "[{\"transactionHash\":\"0xd1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1\",\"blockNumber\":\"0x1406f40\",\"transactionIndex\":\"0x3\",\"timestamp\":1791900000,\"from\":\"0xa77ac4e5000000000000000000000000000000a1\",\"to\":null,\"contractAddress\":\"0xc0ffee0000000000000000000000000000000c01\",\"value\":\"0x0\",\"status\":\"0x1\",\"gasUsed\":\"0x7a120\",\"effectiveGasPrice\":\"0x4a817c800\",\"logs\":[]},{\"transactionHash\":\"0xd2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2\",\"blockNumber\":\"0x1406f41\",\"transactionIndex\":\"0x0\",\"timestamp\":1791900012,\"from\":\"0xa77ac4e5000000000000000000000000000000a1\",\"to\":\"0xc0ffee0000000000000000000000000000000c01\",\"value\":\"0x16345785d8a0000\",\"status\":\"0x1\",\"gasUsed\":\"0x1e8480\",\"effectiveGasPrice\":\"0x4a817c800\",\"functionName\":\"attack(uint256)\",\"logs\":[{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000001e4d000000000000000000000000000000000001\",\"0x000000000000000000000000c0ffee0000000000000000000000000000000c01\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000e8d4a51000\",\"logIndex\":\"0x0\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x000000000000000000000000c0ffee0000000000000000000000000000000c01\",\"0x0000000000000000000000009001000000000000000000000000000000000001\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000e8d4a51000\",\"logIndex\":\"0x1\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000009001000000000000000000000000000000000001\",\"0x000000000000000000000000c0ffee0000000000000000000000000000000c01\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000012309ce5400\",\"logIndex\":\"0x2\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x000000000000000000000000c0ffee0000000000000000000000000000000c01\",\"0x0000000000000000000000001e4d000000000000000000000000000000000001\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000e8d4a51000\",\"logIndex\":\"0x3\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x000000000000000000000000c0ffee0000000000000000000000000000000c01\",\"0x000000000000000000000000a77ac4e5000000000000000000000000000000a1\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000003a35294400\",\"logIndex\":\"0x4\"}]}]",
                    "tokens": "{\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\":{\"symbol\":\"USDC\",\"decimals\":6}}"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlockchainIncidentReplayResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/bridge-transfer-tracker/calculate": {
      "post": {
        "operationId": "calculateBridgeTransferTracker",
        "summary": "Where is my bridged money? Finds the bridge deposit in a transaction and checks if it arrived.",
        "description": "Paste the source-chain transaction of a bridge transfer. The tracker reads its logs from the chain, recognises Circle CCTP (v1 and v2), Across, the canonical OP Stack bridges and Arbitrum inbox deposits, decodes token, amount, sender, recipient and destination, and asks the protocol's own status service (Circle Iris attestation, Across deposit status) whether it was delivered.\n\nMethodology:\n- Logs come from eth_getTransactionReceipt (or your pasted JSON). Event topics are computed with Keccak-256 from the protocols' published event signatures (Circle CCTP TokenMessenger v1/v2, Across SpokePool, OP Stack L1StandardBridge/OptimismPortal, Arbitrum Inbox).\n- Amounts: USDC (CCTP) has 6 decimals; other tokens are read with decimals() on the source chain when online.\n- Status: CCTP → Circle Iris attestation API (v1/v2); Across → Across deposit-status API; canonical rollup deposits are relayed by the rollup protocol and are described, not polled.\n- Pasted logs are decoded without any network call (status \"offline\").",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "bridge_transfer_tracker",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BridgeTransferTrackerInput"
              },
              "examples": {
                "example1": {
                  "summary": "CCTP v1 burn Ethereum → Base (offline logs)",
                  "value": {
                    "chain": "ethereum",
                    "logs": "[{\"address\":\"0xbd3fa81b58ba92a82136038b25adec7066af3155\",\"topics\":[\"0x2fa9ca894982930190727e75500a97d8dc500233a5065e0f3126c48fbe0343c0\",\"0x000000000000000000000000000000000000000000000000000000000001e240\",\"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"0x0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000000ee6b2800000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed00000000000000000000000000000000000000000000000000000000000000060000000000000000000000001682ae6375c4e4a97e4b583bc394c861a46d89620000000000000000000000000000000000000000000000000000000000000000\"}]"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BridgeTransferTrackerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/cross-chain-transaction-explorer/calculate": {
      "post": {
        "operationId": "calculateCrossChainTransactionExplorer",
        "summary": "Follow one transaction across chains: source tx, bridge deposit and destination fill on a timeline.",
        "description": "Give a transaction hash on an EVM chain or a Solana signature. The explorer decodes the source transaction, detects bridge deposits (Circle CCTP, Across, OP Stack and Arbitrum canonical bridges, Wormhole messages), asks the bridge's own status service where the funds went, looks the destination transaction up on the destination chain, and draws the whole journey as one timeline and graph.\n\nMethodology:\n- EVM source: the Transaction Decoder tool decodes the transaction (status, block time, finality, call, token transfers); the Bridge Transfer Tracker tool finds bridge deposit events (CCTP v1/v2, Across, OP Stack, Arbitrum) and queries the bridge's status service.\n- Solana source: getTransaction (jsonParsed, maxSupportedTransactionVersion 0) on the public mainnet-beta RPC; invoked programs are matched against verified Wormhole and Circle CCTP program ids; token balance changes come from pre/post token balances.\n- Wormhole: the source hash is looked up on the Wormholescan operations API, which reports the target chain and the redeem transaction when delivered.\n- Destination: when a status service returns a destination transaction (e.g. the Across fillTx or a Wormhole redeem) on a supported EVM chain, it is decoded on that chain with the Transaction Decoder.\n- Elapsed time = destination block time − source block time. Pasted logs are decoded offline without any network call (no timestamps).",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "cross_chain_transaction_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CrossChainTransactionExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "CCTP burn Ethereum → Base from pasted logs (offline)",
                  "value": {
                    "mode": "logs",
                    "chain": "ethereum",
                    "logs": "[{\"address\":\"0xbd3fa81b58ba92a82136038b25adec7066af3155\",\"topics\":[\"0x2fa9ca894982930190727e75500a97d8dc500233a5065e0f3126c48fbe0343c0\",\"0x000000000000000000000000000000000000000000000000000000000001e240\",\"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"0x0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000000ee6b2800000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed00000000000000000000000000000000000000000000000000000000000000060000000000000000000000001682ae6375c4e4a97e4b583bc394c861a46d89620000000000000000000000000000000000000000000000000000000000000000\"}]"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrossChainTransactionExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/dao-governance-explorer/calculate": {
      "post": {
        "operationId": "calculateDaoGovernanceExplorer",
        "summary": "Snapshot proposals, vote concentration, Governor state and treasury balances in one view.",
        "description": "Reads a DAO's Snapshot space (proposals, state, scores, quorum, top voters and how concentrated voting power is), optionally an OpenZeppelin Governor proposal on-chain (state, for/against/abstain, quorum) and a treasury address's native and major-token balances. Works offline with pasted Snapshot GraphQL JSON.\n\nMethodology:\n- Snapshot data comes from the public Snapshot hub GraphQL API (POST https://hub.snapshot.org/graphql): space metadata and strategies, the newest proposals, and up to 1,000 votes of one proposal ordered by voting power.\n- Leading choice and share = highest score / scores_total; quorum reached = scores_total ≥ quorum (only when the space sets a quorum; some spaces count quorum differently, e.g. only \"For\").\n- Concentration: top-10 share of cast voting power and the Nakamoto coefficient (fewest voters whose combined VP exceeds 50 %). Based on the votes returned (max 1,000, largest first), so it is exact for proposals with ≤ 1,000 votes.\n- Delegation: Snapshot strategies named \"delegation\" and the space's delegation portal (type + contract) are reported; individual delegate graphs live in other indexers and are not fetched.\n- Governor: eth_call of state(uint256), proposalVotes(uint256) (GovernorCountingSimple: against, for, abstain), proposalSnapshot, proposalDeadline, quorum(snapshot) and name(). State enum: Pending, Active, Canceled, Defeated, Succeeded, Queued, Expired, Executed. Quorum reached = for + abstain ≥ quorum (OpenZeppelin counting).\n- Treasury: native balance plus balanceOf for the canonical USDC/USDT/WETH/DAI contracts of that chain and any extra token addresses you add. No USD valuation.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "dao_governance_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DaoGovernanceExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Snapshot space with an active proposal (offline)",
                  "value": {
                    "snapshotJson": "{\"data\":{\"space\":{\"id\":\"example-dao.eth\",\"name\":\"Example DAO\",\"network\":\"1\",\"symbol\":\"EXD\",\"followersCount\":1200,\"proposalsCount\":42,\"strategies\":[{\"name\":\"delegation\",\"network\":\"1\",\"params\":{\"symbol\":\"EXD (delegated)\"}},{\"name\":\"erc20-votes\",\"network\":\"1\",\"params\":{\"symbol\":\"EXD\"}}],\"delegationPortal\":{\"delegationType\":\"compound-governor\",\"delegationContract\":\"0x1111111111111111111111111111111111111111\"}},\"proposals\":[{\"id\":\"0xp2\",\"title\":\"Fund grants program Q4\",\"state\":\"active\",\"author\":\"0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa\",\"start\":1791500000,\"end\":1792100000,\"type\":\"basic\",\"choices\":[\"For\",\"Against\",\"Abstain\"],\"scores\":[620000,300000,80000],\"scores_total\":1000000,\"votes\":9,\"quorum\":1500000},{\"id\":\"0xp1\",\"title\":\"Adopt treasury diversification policy\",\"state\":\"closed\",\"author\":\"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB\",\"start\":1790000000,\"end\":1790600000,\"type\":\"single-choice\",\"choices\":[\"Yes\",\"No\"],\"scores\":[2100000,400000],\"scores_total\":2500000,\"votes\":310,\"quorum\":1000000}],\"votes\":[{\"voter\":\"0x1000000000000000000000000000000000000001\",\"vp\":300000,\"choice\":1},{\"voter\":\"0x1000000000000000000000000000000000000002\",\"vp\":250000,\"choice\":2},{\"voter\":\"0x1000000000000000000000000000000000000003\",\"vp\":150000,\"choice\":1},{\"voter\":\"0x1000000000000000000000000000000000000004\",\"vp\":120000,\"choice\":1},{\"voter\":\"0x1000000000000000000000000000000000000005\",\"vp\":80000,\"choice\":3},{\"voter\":\"0x1000000000000000000000000000000000000006\",\"vp\":50000,\"choice\":2},{\"voter\":\"0x1000000000000000000000000000000000000007\",\"vp\":30000,\"choice\":1},{\"voter\":\"0x1000000000000000000000000000000000000008\",\"vp\":15000,\"choice\":1},{\"voter\":\"0x1000000000000000000000000000000000000009\",\"vp\":5000,\"choice\":1}]}}",
                    "chain": "ethereum"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DaoGovernanceExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/defi-liquidation-explorer/calculate": {
      "post": {
        "operationId": "calculateDefiLiquidationExplorer",
        "summary": "Recent Aave V3 liquidations in USD, who liquidated whom, and a live health-factor check.",
        "description": "Reads Aave V3 LiquidationCall events from the official Pool contract over a recent block window (Ethereum, Base, Arbitrum, OP Mainnet, Polygon, Avalanche, BNB Chain), resolves token symbols and decimals on-chain, values each liquidation at current DefiLlama prices, ranks liquidators and borrowers, and checks any address's current health factor with getUserAccountData — so you can see how close a position is to liquidation.\n\nMethodology:\n- Events: LiquidationCall(address indexed collateralAsset, address indexed debtAsset, address indexed user, uint256 debtToCover, uint256 liquidatedCollateralAmount, address liquidator, bool receiveAToken) from the Aave V3 Pool of the chosen market (addresses from the bgd-labs aave-address-book), read with eth_getLogs over the last N blocks; if the node refuses the range it is halved (down to 100 blocks) and the shrink is reported.\n- Tokens: symbol() and decimals() via eth_call. USD: current DefiLlama coins prices — today's value of the amounts, not the price at liquidation time.\n- Implied bonus = collateral USD ÷ debt USD − 1 at current prices (approximate; Aave's liquidation bonus and protocol fee are reserve parameters).\n- Health factor: Pool.getUserAccountData(user); collateral/debt in the market base currency (BASE_CURRENCY_UNIT read from the price oracle via ADDRESSES_PROVIDER); a health factor below 1 means the position can be liquidated now.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "defi_liquidation_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefiLiquidationExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Three Ethereum liquidations (offline logs)",
                  "value": {
                    "mode": "logs",
                    "chain": "ethereum",
                    "logs": "[{\"address\":\"0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2\",\"blockNumber\":\"0x1406f40\",\"transactionHash\":\"0x1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a\",\"topics\":[\"0xe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e005286\",\"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"0x000000000000000000000000eeee00000000000000000000000000000000eeee\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000012a05f2000000000000000000000000000000000000000000000000001d24b2dfac520000000000000000000000000000dddd00000000000000000000000000000000dddd0000000000000000000000000000000000000000000000000000000000000000\"},{\"address\":\"0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2\",\"blockNumber\":\"0x1406f72\",\"transactionHash\":\"0x2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b\",\"topics\":[\"0xe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e005286\",\"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7\",\"0x000000000000000000000000ffff00000000000000000000000000000000ffff\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000047868c000000000000000000000000000000000000000000000000000737693eb3340000000000000000000000000000dddd00000000000000000000000000000000dddd0000000000000000000000000000000000000000000000000000000000000000\"},{\"address\":\"0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2\",\"blockNumber\":\"0x1406f9a\",\"transactionHash\":\"0x3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c\",\"topics\":[\"0xe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e005286\",\"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"0x000000000000000000000000eeee00000000000000000000000000000000eeee\"],\"data\":\"0x00000000000000000000000000000000000000000000000006f05b59d3b20000000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000077777000000000000000000000000000000777770000000000000000000000000000000000000000000000000000000000000000\"}]"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DefiLiquidationExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/gas-fee-intelligence-explorer/calculate": {
      "post": {
        "operationId": "calculateGasFeeIntelligenceExplorer",
        "summary": "Live gas on 7 EVM chains: base fee, tips, trend and the USD cost of transfers and swaps.",
        "description": "Pulls eth_feeHistory (last 100 blocks, 10th/50th/90th percentile tips) and eth_gasPrice from Ethereum, Base, Arbitrum, OP Mainnet, Polygon, Avalanche and BNB Chain, prices the native tokens via DefiLlama and shows what a native transfer, ERC-20 transfer and swap cost on each chain — ranked cheapest first, with OP Stack L1 data fees as an upper bound.\n\nMethodology:\n- eth_feeHistory(blockCount, \"latest\", [10, 50, 90]) per chain: base fee per block (the last entry is the next block's base fee) and the 10th/50th/90th percentile priority fee of each block; the tool takes the median of each percentile across blocks.\n- Price tiers = next base fee + median p10 (slow) / p50 (standard) / p90 (fast) tip. Chains without a base fee use eth_gasPrice. Trend compares the average base fee of the newest fifth of blocks with the oldest fifth (±15 %).\n- Operation costs use typical gas amounts — native transfer 21,000 (exact), ERC-20 transfer ≈ 65,000, DEX swap ≈ 150,000 (estimates; real usage varies by contract and state) — times the standard tier.\n- USD: native token prices from the DefiLlama coins API (coingecko:ethereum, polygon-ecosystem-token, avalanche-2, binancecoin).\n- L2 data fees: on Base and OP Mainnet the OP Stack GasPriceOracle (0x4200…000F) getL1FeeUpperBound(size) is added as an upper bound using approximate transaction sizes (50 / 120 / 350 bytes unsigned). Arbitrum's L1 component is not included (it is folded into gas used at execution time and needs a per-transaction estimate).",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "gas_fee_intelligence_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GasFeeIntelligenceExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Ethereum vs Base vs Polygon from pasted data (offline)",
                  "value": {
                    "mode": "pasted",
                    "pasted": "{\"prices\":{\"ETH\":2400,\"POL\":0.25,\"BNB\":600},\"chains\":{\"ethereum\":{\"gasPrice\":\"0x77359400\",\"feeHistory\":{\"oldestBlock\":\"0x1406f40\",\"baseFeePerGas\":[\"0x6fc23ac00\",\"0x77359400\",\"0x6fc23ac00\",\"0x684ee1800\",\"0x6fc23ac00\",\"0x74a3df240\"],\"gasUsedRatio\":[0.62,0.41,0.38,0.55,0.6],\"reward\":[[\"0x3b9aca0\",\"0x5f5e100\",\"0x77359400\"],[\"0x2faf080\",\"0x5f5e100\",\"0x3b9aca00\"],[\"0x0\",\"0x3b9aca0\",\"0x77359400\"],[\"0x2faf080\",\"0x5f5e100\",\"0x3b9aca00\"],[\"0x3b9aca0\",\"0x77359400\",\"0xb2d05e00\"]]}},\"base\":{\"gasPrice\":\"0x1312d00\",\"feeHistory\":{\"oldestBlock\":\"0x16e3600\",\"baseFeePerGas\":[\"0xf4240\",\"0xf4240\",\"0x10c8e0\",\"0xf4240\",\"0xe4e1c\",\"0xf4240\"],\"gasUsedRatio\":[0.31,0.29,0.35,0.3,0.28],\"reward\":[[\"0x0\",\"0xf4240\",\"0x989680\"],[\"0x0\",\"0xf4240\",\"0x989680\"],[\"0x0\",\"0xf4240\",\"0x1312d00\"],[\"0x0\",\"0xf4240\",\"0x989680\"],[\"0x0\",\"0x7a120\",\"0x989680\"]]},\"l1FeeUpperBoundWei\":{\"eth-transfer\":\"0x9184e72a00\",\"erc20-transfer\":\"0xdf8475800\",\"swap\":\"0x2540be400\"}},\"polygon\":{\"gasPrice\":\"0x6fc23ac000\",\"feeHistory\":{\"oldestBlock\":\"0x4c4b400\",\"baseFeePerGas\":[\"0x5d21dba000\",\"0x5d21dba000\",\"0x5d21dba000\",\"0x5d21dba000\",\"0x5d21dba000\",\"0x5d21dba000\"],\"gasUsedRatio\":[0.5,0.48,0.52,0.51,0.5],\"reward\":[[\"0x6fc23ac00\",\"0x6fc23ac00\",\"0x1176592e00\"],[\"0x6fc23ac00\",\"0x6fc23ac00\",\"0x1176592e00\"],[\"0x6fc23ac00\",\"0x6fc23ac00\",\"0x1176592e00\"],[\"0x6fc23ac00\",\"0x6fc23ac00\",\"0x1176592e00\"],[\"0x6fc23ac00\",\"0x6fc23ac00\",\"0x1176592e00\"]]}}}}"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GasFeeIntelligenceExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/mev-explorer/calculate": {
      "post": {
        "operationId": "calculateMevExplorer",
        "summary": "Who extracted value in this block? Sandwiches, arbitrage, liquidations, builder and tips.",
        "description": "Fetches one recent block and all of its receipts from a public node and looks for maximal-extractable-value patterns: sandwich attacks on Uniswap V2/V3-style pools (an actor trading right before and after a victim in the same pool), cyclic arbitrage (a transaction whose sender or contract ends with more of a token and less of none), Aave V3 liquidations, the block builder (fee recipient and extraData tag, plus the builder→proposer payment) and a priority-fee ranking.\n\nMethodology:\n- Data: eth_getBlockByNumber(n, true) and eth_getBlockReceipts(n) (falls back to one eth_getTransactionReceipt per transaction, max 300).\n- Swaps: Uniswap V2 Swap(address,uint256,uint256,uint256,uint256,address) and V3 Swap(address,address,int256,int256,uint160,uint128,int24) logs (also emitted by the many forks using the same events), converted to pool deltas; direction = which token the pool received.\n- Sandwich: in one pool, a front-run and back-run by the same actor (same sender, or the same `to` contract when at most two senders call it in the block — public routers are excluded) in opposite directions, bracketing a victim swap by a different actor in the front-run's direction; the back-run must sell 50–105 % of what the front-run bought. Profit = what the back-run took out minus what the front-run put in, per pool token (before gas and builder tips).\n- Cyclic arbitrage: a transaction with swaps in ≥ 2 pools in which the sender or the called contract paid out a token and got more of that same token back, with no token ending negative (from ERC-20 Transfer logs). CoW Protocol settlements (GPv2Settlement) are excluded.\n- Liquidations: Aave V3 LiquidationCall events; the emitter is checked against the official Aave V3 Pool for the chain.\n- Builder: the block fee recipient (miner) and printable extraData; the builder→proposer payment is the last transaction sent by the fee recipient. Tips = (effectiveGasPrice − baseFee) × gasUsed; direct coinbase transfers inside contracts are not visible without traces.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "mev_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MevExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Mini block with a sandwich, an arbitrage and a liquidation (offline)",
                  "value": {
                    "mode": "pasted",
                    "chain": "ethereum",
                    "blockJson": "{\"block\":{\"number\":\"0x1312d00\",\"hash\":\"0xabababababababababababababababababababababababababababababababab\",\"timestamp\":\"0x66669980\",\"miner\":\"0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97\",\"extraData\":\"0x546974616e2028746974616e6275696c6465722e78797a29\",\"baseFeePerGas\":\"0x2540be400\",\"gasUsed\":\"0xf4240\"},\"transactions\":[{\"hash\":\"0x0101010101010101010101010101010101010101010101010101010101010101\",\"transactionIndex\":\"0x0\",\"from\":\"0xaaaa00000000000000000000000000000000aaaa\",\"to\":\"0xb0b0000000000000000000000000000000000b0b\",\"value\":\"0x0\",\"gasPrice\":\"0xdf8475800\",\"type\":\"0x2\"},{\"hash\":\"0x0202020202020202020202020202020202020202020202020202020202020202\",\"transactionIndex\":\"0x1\",\"from\":\"0x1234500000000000000000000000000000012345\",\"to\":\"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\"value\":\"0x0\",\"gasPrice\":\"0x2cb417800\",\"type\":\"0x2\"},{\"hash\":\"0x0303030303030303030303030303030303030303030303030303030303030303\",\"transactionIndex\":\"0x2\",\"from\":\"0xaaaa00000000000000000000000000000000aaaa\",\"to\":\"0xb0b0000000000000000000000000000000000b0b\",\"value\":\"0x0\",\"gasPrice\":\"0x28fa6ae00\",\"type\":\"0x2\"},{\"hash\":\"0x0404040404040404040404040404040404040404040404040404040404040404\",\"transactionIndex\":\"0x3\",\"from\":\"0xcccc00000000000000000000000000000000cccc\",\"to\":\"0xa2b0000000000000000000000000000000000a2b\",\"value\":\"0x0\",\"gasPrice\":\"0x9502f9000\",\"type\":\"0x2\"},{\"hash\":\"0x0505050505050505050505050505050505050505050505050505050505050505\",\"transactionIndex\":\"0x4\",\"from\":\"0xdddd00000000000000000000000000000000dddd\",\"to\":\"0xdddd00000000000000000000000000000000dddd\",\"value\":\"0x0\",\"gasPrice\":\"0x37e11d600\",\"type\":\"0x2\"},{\"hash\":\"0x0606060606060606060606060606060606060606060606060606060606060606\",\"transactionIndex\":\"0x5\",\"from\":\"0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97\",\"to\":\"0x5555500000000000000000000000000000055555\",\"value\":\"0xb1a2bc2ec50000\",\"gasPrice\":\"0x2540be400\",\"type\":\"0x2\"}],\"receipts\":[{\"transactionHash\":\"0x0101010101010101010101010101010101010101010101010101010101010101\",\"status\":\"0x1\",\"gasUsed\":\"0x1d4c0\",\"effectiveGasPrice\":\"0xdf8475800\",\"logs\":[{\"address\":\"0x9000000000000000000000000000000000000009\",\"topics\":[\"0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822\",\"0x000000000000000000000000b0b0000000000000000000000000000000000b0b\",\"0x000000000000000000000000b0b0000000000000000000000000000000000b0b\"],\"data\":\"0x0000000000000000000000000000000000000000000000008ac7230489e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a817c800\",\"logIndex\":\"0x0\"}]},{\"transactionHash\":\"0x0202020202020202020202020202020202020202020202020202020202020202\",\"status\":\"0x1\",\"gasUsed\":\"0x249f0\",\"effectiveGasPrice\":\"0x2cb417800\",\"logs\":[{\"address\":\"0x9000000000000000000000000000000000000009\",\"topics\":[\"0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822\",\"0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d\",\"0x0000000000000000000000001234500000000000000000000000000000012345\"],\"data\":\"0x0000000000000000000000000000000000000000000000004563918244f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000248202200\",\"logIndex\":\"0x1\"}]},{\"transactionHash\":\"0x0303030303030303030303030303030303030303030303030303030303030303\",\"status\":\"0x1\",\"gasUsed\":\"0x1adb0\",\"effectiveGasPrice\":\"0x28fa6ae00\",\"logs\":[{\"address\":\"0x9000000000000000000000000000000000000009\",\"topics\":[\"0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822\",\"0x000000000000000000000000b0b0000000000000000000000000000000000b0b\",\"0x000000000000000000000000b0b0000000000000000000000000000000000b0b\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000008d8dadf544fc00000000000000000000000000000000000000000000000000000000000000000000\",\"logIndex\":\"0x2\"}]},{\"transactionHash\":\"0x0404040404040404040404040404040404040404040404040404040404040404\",\"status\":\"0x1\",\"gasUsed\":\"0x3d090\",\"effectiveGasPrice\":\"0x9502f9000\",\"logs\":[{\"address\":\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\",\"0x0000000000000000000000009100000000000000000000000000000000000091\"],\"data\":\"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000\",\"logIndex\":\"0x3\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000009100000000000000000000000000000000000091\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000077359400\",\"logIndex\":\"0x4\"},{\"address\":\"0x9100000000000000000000000000000000000091\",\"topics\":[\"0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\"],\"data\":\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff88ca6c000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000\",\"logIndex\":\"0x5\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\",\"0x0000000000000000000000009200000000000000000000000000000000000092\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000077359400\",\"logIndex\":\"0x6\"},{\"address\":\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000009200000000000000000000000000000000000092\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\"],\"data\":\"0x0000000000000000000000000000000000000000000000000e043da617250000\",\"logIndex\":\"0x7\"},{\"address\":\"0x9200000000000000000000000000000000000092\",\"topics\":[\"0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\",\"0x000000000000000000000000a2b0000000000000000000000000000000000a2b\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000773594000000000000000000000000000000000000000000000000000e043da6172500000000000000000000000000000000000000000000000000000000000000000000\",\"logIndex\":\"0x8\"}]},{\"transactionHash\":\"0x0505050505050505050505050505050505050505050505050505050505050505\",\"status\":\"0x1\",\"gasUsed\":\"0x61a80\",\"effectiveGasPrice\":\"0x37e11d600\",\"logs\":[{\"address\":\"0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2\",\"topics\":[\"0xe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e005286\",\"0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"0x000000000000000000000000eeee00000000000000000000000000000000eeee\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000012a05f2000000000000000000000000000000000000000000000000001d24b2dfac520000000000000000000000000000dddd00000000000000000000000000000000dddd0000000000000000000000000000000000000000000000000000000000000000\",\"logIndex\":\"0x9\"}]},{\"transactionHash\":\"0x0606060606060606060606060606060606060606060606060606060606060606\",\"status\":\"0x1\",\"gasUsed\":\"0x5208\",\"effectiveGasPrice\":\"0x2540be400\",\"logs\":[]}]}"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MevExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/rollup-batch-explorer/calculate": {
      "post": {
        "operationId": "calculateRollupBatchExplorer",
        "summary": "How L2 transactions reach Ethereum: unsafe → safe → finalized, blobs, batch costs, withdrawal waits.",
        "description": "For a Base, OP Mainnet or Arbitrum One transaction or block, shows whether it is only sequencer-confirmed (unsafe), already posted to Ethereum in a batch (safe) or settled on finalized Ethereum data (finalized) — and, for Arbitrum, the batch number that contains it. It also scans the latest Ethereum blocks for rollup batch transactions (OP Stack batch inboxes and the Arbitrum SequencerInbox), counting blobs, blob gas and the fee each batch paid, and explains the documented withdrawal windows.\n\nMethodology:\n- L2 status: the L2 node's \"safe\" and \"finalized\" block tags. OP Stack: safe = derived from batch data already included on L1; finalized = derived from finalized L1 blocks. Arbitrum Nitro maps the same tags to batches posted in safe/finalized L1 blocks. Blocks above the safe head are \"unsafe\" (sequencer-confirmed only).\n- Arbitrum: NodeInterface (0x…C8).findBatchContainingBlock(block) gives the batch number once the block is posted.\n- L1 batches: transactions in the last N Ethereum blocks sent to the Base batch inbox (0xff…8453), the OP Mainnet batch inbox (0xff…0010) or the Arbitrum SequencerInbox; OP Stack batches are only valid when sent by the chain's authorised batcher, which is checked. Arbitrum batch numbers come from SequencerBatchDelivered logs.\n- Cost per batch = gasUsed × effectiveGasPrice + blobGasUsed × blobGasPrice from the transaction receipt; blob count = blobVersionedHashes of the type-3 transaction.\n- Withdrawal windows are quoted from each rollup's documentation (linked as sources); they apply to L2→L1 withdrawals, not to ordinary L2 transactions.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "rollup_batch_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RollupBatchExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Ethereum block with a Base and an Arbitrum batch (offline)",
                  "value": {
                    "mode": "pasted",
                    "rollup": "base",
                    "l1BlockJson": "{\"number\":\"0x1481060\",\"timestamp\":\"0x675abd80\",\"baseFeePerGas\":\"0x1dcd65000\",\"blobGasUsed\":\"0x120000\",\"excessBlobGas\":\"0x0\",\"transactions\":[{\"hash\":\"0xb1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1\",\"blockNumber\":\"0x1481060\",\"from\":\"0x5050f69a9786f081509234f1a7f4684b5e5b76c9\",\"to\":\"0xff00000000000000000000000000000000008453\",\"type\":\"0x3\",\"input\":\"0x\",\"gasPrice\":\"0x218711a00\",\"blobVersionedHashes\":[\"0x0100000000000000000000000000000000000000000000000000000000000000\",\"0x0100000000000000000000000000000000000000000000000000000000000001\",\"0x0100000000000000000000000000000000000000000000000000000000000002\",\"0x0100000000000000000000000000000000000000000000000000000000000003\",\"0x0100000000000000000000000000000000000000000000000000000000000004\",\"0x0100000000000000000000000000000000000000000000000000000000000005\"]},{\"hash\":\"0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1\",\"blockNumber\":\"0x1481060\",\"from\":\"0xc1b634853cb333d3ad8663715b08f41a3aec47cc\",\"to\":\"0x1c479675ad559dc151f6ec7ed3fbf8cee79582b6\",\"type\":\"0x3\",\"input\":\"0x3e5aa08200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\"gasPrice\":\"0x218711a00\",\"blobVersionedHashes\":[\"0x0100000000000000000000000000000000000000000000000000000000000006\",\"0x0100000000000000000000000000000000000000000000000000000000000007\",\"0x0100000000000000000000000000000000000000000000000000000000000008\"]},{\"hash\":\"0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\",\"blockNumber\":\"0x1481060\",\"from\":\"0x1111111111111111111111111111111111111111\",\"to\":\"0x2222222222222222222222222222222222222222\",\"type\":\"0x2\",\"input\":\"0x\",\"gasPrice\":\"0x218711a00\"}],\"receipts\":[{\"transactionHash\":\"0xb1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1\",\"gasUsed\":\"0x5208\",\"effectiveGasPrice\":\"0x218711a00\",\"blobGasUsed\":\"0xc0000\",\"blobGasPrice\":\"0xf4240\",\"logs\":[]},{\"transactionHash\":\"0xa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1\",\"gasUsed\":\"0x29810\",\"effectiveGasPrice\":\"0x218711a00\",\"blobGasUsed\":\"0x60000\",\"blobGasPrice\":\"0xf4240\",\"logs\":[{\"address\":\"0x1c479675ad559dc151f6ec7ed3fbf8cee79582b6\",\"topics\":[\"0x7394f4a19a13c7b92b5bb71033245305946ef78452f7b4986ac1390b5df4ebd7\",\"0x000000000000000000000000000000000000000000000000000000000014b32c\",\"0x1111111111111111111111111111111111111111111111111111111111111111\",\"0x2222222222222222222222222222222222222222222222222222222222222222\"],\"data\":\"0x\"}]}]}"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RollupBatchExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/smart-contract-relationship-graph/calculate": {
      "post": {
        "operationId": "calculateSmartContractRelationshipGraph",
        "summary": "Map a contract's proxy, implementation, admin, owner, deployer/factory and token links as a graph.",
        "description": "Draws the relationships around one address: proxy → implementation (and beacon), who can upgrade it (ProxyAdmin, Safe, timelock, EOA), owner() and admin(), who deployed it and whether that deployer is itself a contract (a factory), which token standards it implements (ERC-20 / ERC-721 / ERC-1155), plus any related addresses you add. Paste runtime bytecode and a relationship list for an offline graph.\n\nMethodology:\n- Proxy, implementation, beacon and upgrade controller come from the Smart Contract Upgrade Explorer tool (EIP-1967 / EIP-1822 / EIP-1167 / Safe / ZeppelinOS / EIP-7702 detection from storage slots and bytecode).\n- owner() and admin() are read with eth_call (a revert means the function does not exist or is restricted).\n- Deployer and creation transaction come from Sourcify (v2 API, fields=deployment) — only available for contracts verified on Sourcify. A deployer that has code is reported as a factory.\n- Token standards: ERC-165 supportsInterface for ERC-721 (0x80ac58cd) and ERC-1155 (0xd9b67a26); ERC-20 when totalSupply() and decimals() answer; name/symbol/decimals/totalSupply are read on-chain.\n- Offline: runtime bytecode is scanned for dispatcher selectors (PUSH4 … EQ) to infer ERC-20 / ERC-721 / ERC-1155 / Ownable / AccessControl, EIP-1167 clone targets and EIP-7702 delegation; your relationship lines are added verbatim.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "smart_contract_relationship_graph",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SmartContractRelationshipGraphInput"
              },
              "examples": {
                "example1": {
                  "summary": "Token behind a minimal proxy, with known relationships (offline)",
                  "value": {
                    "mode": "bytecode",
                    "chain": "ethereum",
                    "bytecode": "0x608060405234801561001057600080fd5b5063a9059cbb146323b872dd1463095ea7b3146370a08231146318160ddd1463dd62ed3e14638da5cb5b1463f2fde38b1400",
                    "relationships": "this -> 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed : owned by\n0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359 -> this : deployed\nthis -> 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 : holds USDC\n0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed -> Treasury Safe : member of"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SmartContractRelationshipGraphResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/contract-upgrade-explorer/calculate": {
      "post": {
        "operationId": "calculateContractUpgradeExplorer",
        "summary": "Is this smart contract upgradeable, who controls upgrades, and what changed?",
        "description": "Reads a contract straight from the chain and identifies its proxy pattern (EIP-1967 transparent, UUPS, beacon, EIP-1167 clone, Safe proxy, legacy ZeppelinOS, EIP-7702 delegated account), the current implementation, who controls upgrades (single key, Safe multisig with threshold, timelock with delay, ProxyAdmin and its owner), the Upgraded/AdminChanged event history, and whether the code is verified on Sourcify. Paste raw bytecode for an offline scan.\n\nMethodology:\n- Storage slots read with eth_getStorageAt: EIP-1967 implementation/admin/beacon (keccak256(\"eip1967.proxy.*\") − 1), EIP-1822 PROXIABLE, the legacy ZeppelinOS implementation/admin slots (keccak256(\"org.zeppelinos.proxy.*\")), and slot 0 for Safe proxies.\n- Bytecode scan (PUSH data skipped): EIP-1167 clone pattern, EIP-7702 delegation designator (0xef0100…), DELEGATECALL/SELFDESTRUCT opcodes, dispatcher selectors (PUSH4 followed by EQ) and EIP-1967 slot constants.\n- Classification: beacon slot set → beacon proxy; admin slot set → transparent; implementation slot set and implementation exposes proxiableUUID() → UUPS; Safe proxy if slot 0 holds a contract and masterCopy() is dispatched.\n- Controller: EOA (single key), Safe (getThreshold/getOwners), TimelockController (getMinDelay), or ProxyAdmin (owner() is analysed one level deep).\n- History: Upgraded / AdminChanged / BeaconUpgraded logs of the proxy via eth_getLogs; public nodes may limit the range, which is reported.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "contract_upgrade_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContractUpgradeExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "EIP-1167 minimal proxy clone (offline)",
                  "value": {
                    "mode": "bytecode",
                    "chain": "ethereum",
                    "bytecode": "0x363d3d373d3d3d363d73bebebebebebebebebebebebebebebebebebebebe5af43d82803e903d91602b57fd5bf3"
                  }
                },
                "example2": {
                  "summary": "Dispatcher with upgradeTo (offline)",
                  "value": {
                    "mode": "bytecode",
                    "chain": "ethereum",
                    "bytecode": "0x608060405260043610633659cfe61461005757634f1ef28614610060577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54f4"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractUpgradeExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/stablecoin-flow-explorer/calculate": {
      "post": {
        "operationId": "calculateStablecoinFlowExplorer",
        "summary": "USDC/USDT supply per chain, recent mints, burns and whale transfers, cross-chain totals.",
        "description": "Reads USDC or USDT totalSupply on up to seven EVM chains straight from the official contracts, scans recent blocks for large transfers, issuance (mints) and redemptions (burns), and adds DefiLlama's cross-chain circulating supply with day/week/month changes. Works offline on pasted Transfer logs.\n\nMethodology:\n- Contracts: the official USDC and USDT contracts per chain (Ethereum, Base, Arbitrum, OP Mainnet, Polygon from the shared canonical-token table; Avalanche and BNB Chain checked on-chain via symbol()/decimals(); BNB Chain tokens are Binance-Peg with 18 decimals). USDT is not issued natively on Base or OP Mainnet.\n- Supply: totalSupply() and decimals() by eth_call at the latest block. Supplies on different chains can double count bridged amounts only for non-native deployments; native Circle/Tether deployments are separate issuances.\n- Transfers: eth_getLogs for Transfer(address,address,uint256) of the token over the last N blocks (small window: public nodes cap response sizes). Large = amount ≥ threshold (token units, treated as ≈ USD at the peg).\n- Mints/burns: Transfer from / to the zero address over a longer window using topic filters; for USDT on Ethereum Tether's Issue(uint256) / Redeem(uint256) events are used because that contract does not emit zero-address transfers on issuance.\n- Cross-chain circulation: DefiLlama stablecoins API (https://stablecoins.llama.fi/stablecoins), field circulating.peggedUSD with previous day/week/month and per-chain breakdown.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "stablecoin_flow_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StablecoinFlowExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Large USDC flows from pasted logs (offline)",
                  "value": {
                    "mode": "pasted",
                    "token": "USDC",
                    "chain": "ethereum",
                    "threshold": 1000000,
                    "decimals": 6,
                    "logs": "[{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x0000000000000000000000001111111111111111111111111111111111111111\"],\"data\":\"0x00000000000000000000000000000000000000000000000000002d79883d2000\",\"blockNumber\":\"0x1406f40\",\"logIndex\":\"0x1\",\"transactionHash\":\"0x0101010101010101010101010101010101010101010101010101010101010101\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000001111111111111111111111111111111111111111\",\"0x0000000000000000000000002222222222222222222222222222222222222222\"],\"data\":\"0x00000000000000000000000000000000000000000000000000000ae9f7bcc000\",\"blockNumber\":\"0x1406f41\",\"logIndex\":\"0x2\",\"transactionHash\":\"0x0202020202020202020202020202020202020202020202020202020202020202\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000003333333333333333333333333333333333333333\",\"0x0000000000000000000000004444444444444444444444444444444444444444\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000009502f900\",\"blockNumber\":\"0x1406f41\",\"logIndex\":\"0x3\",\"transactionHash\":\"0x0303030303030303030303030303030303030303030303030303030303030303\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000002222222222222222222222222222222222222222\",\"0x0000000000000000000000005555555555555555555555555555555555555555\"],\"data\":\"0x000000000000000000000000000000000000000000000000000002ba7def3000\",\"blockNumber\":\"0x1406f42\",\"logIndex\":\"0x4\",\"transactionHash\":\"0x0404040404040404040404040404040404040404040404040404040404040404\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000006666666666666666666666666666666666666666\",\"0x0000000000000000000000007777777777777777777777777777777777777777\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000e8d495cdc0\",\"blockNumber\":\"0x1406f42\",\"logIndex\":\"0x5\",\"transactionHash\":\"0x0505050505050505050505050505050505050505050505050505050505050505\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000005555555555555555555555555555555555555555\",\"0x0000000000000000000000000000000000000000000000000000000000000000\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000015d3ef79800\",\"blockNumber\":\"0x1406f43\",\"logIndex\":\"0x6\",\"transactionHash\":\"0x0606060606060606060606060606060606060606060606060606060606060606\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000008888888888888888888888888888888888888888\",\"0x0000000000000000000000002222222222222222222222222222222222222222\"],\"data\":\"0x000000000000000000000000000000000000000000000000000003d1e3821000\",\"blockNumber\":\"0x1406f44\",\"logIndex\":\"0x7\",\"transactionHash\":\"0x0707070707070707070707070707070707070707070707070707070707070707\"},{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\",\"0x0000000000000000000000003333333333333333333333333333333333333333\",\"0x0000000000000000000000009999999999999999999999999999999999999999\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000008f0d180\",\"blockNumber\":\"0x1406f44\",\"logIndex\":\"0x8\",\"transactionHash\":\"0x0808080808080808080808080808080808080808080808080808080808080808\"}]"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StablecoinFlowExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/token-unlock-explorer/calculate": {
      "post": {
        "operationId": "calculateTokenUnlockExplorer",
        "summary": "Model token vesting (cliff, linear, monthly, tranches, TGE) or audit a VestingWallet.",
        "description": "Builds a token unlock schedule from its parameters — total, start, cliff, duration, linear / monthly / custom tranches and TGE percentage — and shows unlocked vs. locked amounts on any date and the next unlock. On-chain mode reads an OpenZeppelin VestingWallet (start, duration, released, releasable) and compares the schedule with what was actually released.\n\nMethodology:\n- Unlocked(t) = TGE % of total at the start date, plus the remaining amount vesting from the start date to start + duration. Before the cliff only the TGE amount is unlocked; at the cliff everything accrued since the start unlocks at once (OpenZeppelin VestingWalletCliff semantics).\n- Linear: continuous pro-rata by time. Monthly: equal steps on each monthly anniversary of the start date (day clamped to month end). Tranches: the listed percentages of the total on the listed dates (plus TGE).\n- All dates are UTC. Amounts are computed per date; the sample table shows month-end points.\n- On-chain mode reads an OpenZeppelin VestingWallet with eth_call: start(), duration(), cliff() (if present), released() / released(token), releasable() / releasable(token), owner() as beneficiary, plus the wallet's balance. Allocation = balance + released; scheduled vested = allocation × (now − start) / duration (0 before the cliff, full after the end), which equals released + releasable for an unmodified wallet.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "token_unlock_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenUnlockExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "10 % TGE, 12-month cliff, monthly over 36 months",
                  "value": {
                    "mode": "schedule",
                    "totalTokens": 1000000,
                    "symbol": "ABC",
                    "startDate": "2026-01-01",
                    "cliffMonths": 12,
                    "durationMonths": 36,
                    "schedule": "monthly",
                    "tgePercent": 10,
                    "asOf": "2027-03-15"
                  }
                },
                "example2": {
                  "summary": "Custom tranches",
                  "value": {
                    "mode": "schedule",
                    "totalTokens": 500000,
                    "symbol": "XYZ",
                    "startDate": "2026-06-01",
                    "schedule": "tranches",
                    "tgePercent": 0,
                    "tranches": "2026-12-01, 25\n2027-06-01, 25\n2027-12-01, 50",
                    "asOf": "2027-01-10"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenUnlockExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/transaction-decoder/calculate": {
      "post": {
        "operationId": "calculateTransactionDecoder",
        "summary": "See what an EVM transaction actually did: call, events, token transfers, fee, finality.",
        "description": "Looks up a transaction on Ethereum, Base, Arbitrum, OP Mainnet, Polygon, Avalanche or BNB Chain straight from a public RPC node and decodes it locally: the function called (from the verified ABI on Sourcify, a built-in table or the signature database), every event log, ERC-20 token transfers with symbols and decimals, gas fee, status and finality. Works offline for raw calldata too.\n\nMethodology:\n- Raw data comes from public JSON-RPC nodes: eth_getTransactionByHash, eth_getTransactionReceipt, eth_getBlockByNumber (timestamp, \"finalized\" tag) and eth_blockNumber.\n- Function: the first 4 bytes (selector) are matched against, in order, your signature/ABI, the verified ABI of the called contract on Sourcify, a built-in table of common functions, then the Sourcify signature database. The first candidate that ABI-decodes cleanly is used; other candidates are listed (selector collisions exist).\n- Events: topic0 is matched the same way. Without a verified ABI, the first (topics − 1) parameters are assumed to be indexed (flagged as indexingAssumed).\n- Token transfers: Transfer(address,address,uint256) logs with exactly 3 topics (ERC-20; ERC-721 has 4); symbol() and decimals() are read with eth_call.\n- Fake-token check: transfers of a token whose symbol is USDT/USDC/WETH/DAI but whose contract is not the official one on that chain are flagged.\n- Finality: \"finalized\" if the block is at or below the chain's \"finalized\" block tag; otherwise \"unfinalized\" with the confirmation count; \"unknown\" if the node does not support the tag.",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "transaction_decoder",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionDecoderInput"
              },
              "examples": {
                "example1": {
                  "summary": "Decode an ERC-20 transfer (offline)",
                  "value": {
                    "mode": "calldata",
                    "chain": "ethereum",
                    "calldata": "0xa9059cbb0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed00000000000000000000000000000000000000000000000000000000004c4b40"
                  }
                },
                "example2": {
                  "summary": "Custom signature with a tuple (offline)",
                  "value": {
                    "mode": "calldata",
                    "chain": "base",
                    "signature": "setConfig((address,uint256,bool),string)",
                    "calldata": "0xc48cfc700000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000056869676821000000000000000000000000000000000000000000000000000000"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDecoderResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/wallet-permission-explorer/calculate": {
      "post": {
        "operationId": "calculateWalletPermissionExplorer",
        "summary": "Who can move your tokens? Allowances, Permit2, NFT operators and EIP-7702 delegation, with risk.",
        "description": "Checks a wallet's live token permissions straight from the chain: ERC-20 allowances for the major tokens against a verified list of well-known spenders (Uniswap Permit2 and routers, 1inch, 0x, CoW, Aave, OpenSea), Permit2 sub-allowances with expiry, NFT operator approvals for collections you list, and EIP-7702 account delegation. Flags unlimited approvals, approvals to plain wallets and to unverified contracts, and shows how much of your balance is exposed.\n\nMethodology:\n- ERC-20: allowance(owner, spender) via eth_call for USDC/USDT/WETH/DAI (official addresses per chain) plus your extra tokens, against a list of spenders whose addresses were checked against official deployment lists and Sourcify-verified contract names (Permit2, Uniswap Universal Router / V2 / V3 routers, 1inch v5/v6, 0x Exchange Proxy / AllowanceHolder, CoW VaultRelayer, Aave V3 Pool, Seaport, OpenSea Conduit) plus your extra spenders.\n- Permit2: for tokens approved to Permit2, Permit2.allowance(owner, token, spender) returns (amount, expiration, nonce); only unexpired, non-zero sub-allowances are reported.\n- NFTs: isApprovedForAll(owner, operator) for each collection you list against Seaport, the OpenSea Conduit and your extra spenders.\n- EIP-7702: an account whose code is 0xef0100‖address is delegated to that address's code.\n- Risk: unlimited = allowance ≥ 2^255 (ERC-20) or ≥ 2^159 (Permit2 uint160); spenders without code (EOAs) or without verified source are high risk; NFT operator approvals always carry at least medium risk.\n- Exposure = min(allowance, current balance) × current DefiLlama USD price. Offline mode replays Approval/ApprovalForAll logs (latest value per token+spender wins, current values override).",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "wallet_permission_explorer",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WalletPermissionExplorerInput"
              },
              "examples": {
                "example1": {
                  "summary": "Approval history of a wallet (offline)",
                  "value": {
                    "mode": "logs",
                    "chain": "ethereum",
                    "owner": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
                    "approvalLogs": "[{\"address\":\"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"topics\":[\"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\",\"0x0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed\",\"0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3\"],\"data\":\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\"blockNumber\":\"0x1300000\",\"logIndex\":\"0x1\"},{\"address\":\"0xdac17f958d2ee523a2206206994597c13d831ec7\",\"topics\":[\"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\",\"0x0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed\",\"0x0000000000000000000000009999999999999999999999999999999999999999\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000012a05f200\",\"blockNumber\":\"0x1300100\",\"logIndex\":\"0x4\"},{\"address\":\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"topics\":[\"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\",\"0x0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed\",\"0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d\"],\"data\":\"0x0000000000000000000000000000000000000000000000001bc16d674ec80000\",\"blockNumber\":\"0x1300200\",\"logIndex\":\"0x0\"},{\"address\":\"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\",\"topics\":[\"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\",\"0x0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed\",\"0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"blockNumber\":\"0x1300300\",\"logIndex\":\"0x2\"},{\"address\":\"0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d\",\"topics\":[\"0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31\",\"0x0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed\",\"0x0000000000000000000000001e0049783f008a0085193e00003d00cd54003c71\"],\"data\":\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"blockNumber\":\"0x1300400\",\"logIndex\":\"0x7\"}]",
                    "currentAllowances": "[{\"token\":\"0xdac17f958d2ee523a2206206994597c13d831ec7\",\"spender\":\"0x9999999999999999999999999999999999999999\",\"allowance\":\"1500000000\"}]"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletPermissionExplorerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workflows": {
      "get": {
        "operationId": "listWorkflows",
        "summary": "Multi-tool workflows",
        "responses": {
          "200": {
            "description": "Workflow list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 9457 problem details. 422 responses include per-field `errors`.",
        "required": [
          "type",
          "title",
          "status",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "AccountAbstractionExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "tx",
              "account",
              "pasted"
            ],
            "default": "tx"
          },
          "chain": {
            "title": "Chain",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "txHash": {
            "title": "Transaction hash",
            "type": "string",
            "maxLength": 66
          },
          "address": {
            "title": "Smart account address",
            "type": "string",
            "maxLength": 42
          },
          "receipt": {
            "title": "Receipt JSON",
            "description": "A transaction receipt ({from, gasUsed, effectiveGasPrice, logs:[…]}) or just the logs array.",
            "type": "string",
            "maxLength": 500000
          }
        },
        "required": []
      },
      "AccountAbstractionExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "chain",
              "transaction",
              "userOps",
              "totals",
              "account",
              "entryPoints"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "tx",
                  "account",
                  "pasted"
                ]
              },
              "chain": {
                "type": "string"
              },
              "transaction": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "hash",
                  "bundler",
                  "status",
                  "gasUsed",
                  "feeWei",
                  "fee"
                ],
                "properties": {
                  "hash": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "bundler": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "status": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "gasUsed": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "feeWei": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "fee": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "userOps": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "logIndex",
                    "userOpHash",
                    "sender",
                    "paymaster",
                    "sponsored",
                    "nonce",
                    "nonceKey",
                    "nonceSequence",
                    "success",
                    "actualGasCostWei",
                    "actualGasCost",
                    "actualGasUsed",
                    "entryPoint",
                    "entryPointVersion",
                    "revertReason",
                    "postOpRevertReason",
                    "deployed"
                  ],
                  "properties": {
                    "logIndex": {
                      "type": "integer"
                    },
                    "userOpHash": {
                      "type": "string"
                    },
                    "sender": {
                      "type": "string"
                    },
                    "paymaster": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "sponsored": {
                      "type": "boolean"
                    },
                    "nonce": {
                      "type": "string"
                    },
                    "nonceKey": {
                      "type": "string"
                    },
                    "nonceSequence": {
                      "type": "string"
                    },
                    "success": {
                      "type": "boolean"
                    },
                    "actualGasCostWei": {
                      "type": "string"
                    },
                    "actualGasCost": {
                      "type": "string"
                    },
                    "actualGasUsed": {
                      "type": "string"
                    },
                    "entryPoint": {
                      "type": "string"
                    },
                    "entryPointVersion": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "revertReason": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "postOpRevertReason": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "deployed": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "required": [
                        "factory",
                        "paymaster"
                      ],
                      "properties": {
                        "factory": {
                          "type": "string"
                        },
                        "paymaster": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "totals": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ops",
                  "succeeded",
                  "failed",
                  "sponsored",
                  "accountsDeployed",
                  "actualGasCostWei",
                  "bundlerMarginWei",
                  "paymasters"
                ],
                "properties": {
                  "ops": {
                    "type": "integer"
                  },
                  "succeeded": {
                    "type": "integer"
                  },
                  "failed": {
                    "type": "integer"
                  },
                  "sponsored": {
                    "type": "integer"
                  },
                  "accountsDeployed": {
                    "type": "integer"
                  },
                  "actualGasCostWei": {
                    "type": "string"
                  },
                  "bundlerMarginWei": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "paymasters": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "account": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "address",
                  "kind",
                  "codeSize",
                  "eip7702Delegate",
                  "balanceWei",
                  "entryPoints",
                  "implementation",
                  "proxyType"
                ],
                "properties": {
                  "address": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "eoa-or-undeployed",
                      "contract",
                      "eip7702-delegated"
                    ]
                  },
                  "codeSize": {
                    "type": "integer"
                  },
                  "eip7702Delegate": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "balanceWei": {
                    "type": "string"
                  },
                  "entryPoints": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "version",
                        "address",
                        "nonceKey0",
                        "depositWei"
                      ],
                      "properties": {
                        "version": {
                          "type": "string"
                        },
                        "address": {
                          "type": "string"
                        },
                        "nonceKey0": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "depositWei": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  },
                  "implementation": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "proxyType": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "entryPoints": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "version",
                    "address"
                  ],
                  "properties": {
                    "version": {
                      "type": "string"
                    },
                    "address": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "BlockchainIncidentReplayInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "Data source",
            "type": "string",
            "enum": [
              "live",
              "pasted"
            ],
            "default": "live"
          },
          "chain": {
            "title": "Chain",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "txHashes": {
            "title": "Transaction hashes (in any order)",
            "description": "Up to 5; they are ordered by block and index.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 5
          },
          "receipts": {
            "title": "Pasted receipts JSON",
            "description": "Array of receipts with transactionHash, from, to, value, blockNumber, transactionIndex, status, logs (optionally timestamp, gasUsed, effectiveGasPrice, contractAddress, functionName). Or {\"receipts\":[…],\"tokens\":{address:{symbol,decimals}}}.",
            "type": "string",
            "maxLength": 2000000
          },
          "tokens": {
            "title": "Token metadata JSON (pasted mode)",
            "type": "string",
            "maxLength": 50000
          },
          "prices": {
            "title": "Value in USD at incident time (DefiLlama)",
            "type": "boolean",
            "default": true
          }
        },
        "required": []
      },
      "BlockchainIncidentReplayResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "chain",
              "transactions",
              "movements",
              "netFlows",
              "suspects",
              "victims",
              "pricing",
              "traceSupport"
            ],
            "properties": {
              "chain": {
                "type": "string"
              },
              "transactions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "hash",
                    "order",
                    "block",
                    "txIndex",
                    "timestamp",
                    "from",
                    "to",
                    "created",
                    "function",
                    "status",
                    "valueWei",
                    "feeWei",
                    "transfers",
                    "trace"
                  ],
                  "properties": {
                    "hash": {
                      "type": "string"
                    },
                    "order": {
                      "type": "integer"
                    },
                    "block": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "txIndex": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "timestamp": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "from": {
                      "type": "string"
                    },
                    "to": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "created": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "function": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "valueWei": {
                      "type": "string"
                    },
                    "feeWei": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "transfers": {
                      "type": "integer"
                    },
                    "trace": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "status",
                        "calls",
                        "maxDepth",
                        "internalValueTransfers",
                        "error"
                      ],
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "ok",
                            "unsupported",
                            "skipped"
                          ]
                        },
                        "calls": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "maxDepth": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "internalValueTransfers": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "error": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "movements": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "txHash",
                    "seq",
                    "asset",
                    "symbol",
                    "from",
                    "to",
                    "amount",
                    "raw",
                    "source"
                  ],
                  "properties": {
                    "txHash": {
                      "type": "string"
                    },
                    "seq": {
                      "type": "integer"
                    },
                    "asset": {
                      "type": "string"
                    },
                    "symbol": {
                      "type": "string"
                    },
                    "from": {
                      "type": "string"
                    },
                    "to": {
                      "type": "string"
                    },
                    "amount": {
                      "type": "number"
                    },
                    "raw": {
                      "type": "string"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "tx-value",
                        "internal-call",
                        "transfer-log"
                      ]
                    }
                  }
                }
              },
              "netFlows": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "address",
                    "role",
                    "netUsd",
                    "gains",
                    "losses"
                  ],
                  "properties": {
                    "address": {
                      "type": "string"
                    },
                    "role": {
                      "type": "string"
                    },
                    "netUsd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "gains": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "asset",
                          "symbol",
                          "amount",
                          "usd"
                        ],
                        "properties": {
                          "asset": {
                            "type": "string"
                          },
                          "symbol": {
                            "type": "string"
                          },
                          "amount": {
                            "type": "number"
                          },
                          "usd": {
                            "type": [
                              "number",
                              "null"
                            ]
                          }
                        }
                      }
                    },
                    "losses": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "asset",
                          "symbol",
                          "amount",
                          "usd"
                        ],
                        "properties": {
                          "asset": {
                            "type": "string"
                          },
                          "symbol": {
                            "type": "string"
                          },
                          "amount": {
                            "type": "number"
                          },
                          "usd": {
                            "type": [
                              "number",
                              "null"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              },
              "suspects": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "likelyAttacker",
                  "cluster",
                  "profitUsd",
                  "profit"
                ],
                "properties": {
                  "likelyAttacker": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "cluster": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "profitUsd": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "profit": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "asset",
                        "symbol",
                        "amount",
                        "usd"
                      ],
                      "properties": {
                        "asset": {
                          "type": "string"
                        },
                        "symbol": {
                          "type": "string"
                        },
                        "amount": {
                          "type": "number"
                        },
                        "usd": {
                          "type": [
                            "number",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "victims": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "address",
                    "lossUsd",
                    "losses"
                  ],
                  "properties": {
                    "address": {
                      "type": "string"
                    },
                    "lossUsd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "losses": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "asset",
                          "symbol",
                          "amount",
                          "usd"
                        ],
                        "properties": {
                          "asset": {
                            "type": "string"
                          },
                          "symbol": {
                            "type": "string"
                          },
                          "amount": {
                            "type": "number"
                          },
                          "usd": {
                            "type": [
                              "number",
                              "null"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              },
              "pricing": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "available",
                  "at",
                  "priced",
                  "unpriced"
                ],
                "properties": {
                  "available": {
                    "type": "boolean"
                  },
                  "at": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "priced": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "unpriced": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "traceSupport": {
                "type": "string"
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "BridgeTransferTrackerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "chain": {
            "title": "Source chain (where you sent from)",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "txHash": {
            "title": "Source transaction hash",
            "type": "string",
            "maxLength": 66
          },
          "logs": {
            "title": "Or: receipt logs as JSON (offline)",
            "description": "The \"logs\" array from eth_getTransactionReceipt.",
            "type": "string",
            "maxLength": 500000
          }
        },
        "required": []
      },
      "BridgeTransferTrackerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sourceChain",
              "txHash",
              "transfers",
              "recognised"
            ],
            "properties": {
              "sourceChain": {
                "type": "string"
              },
              "txHash": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "recognised": {
                "type": "boolean"
              },
              "transfers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "protocol",
                    "bridgeContract",
                    "token",
                    "symbol",
                    "amountRaw",
                    "amount",
                    "sender",
                    "recipient",
                    "destination",
                    "depositId",
                    "status",
                    "detail",
                    "destinationTx",
                    "checkedVia"
                  ],
                  "properties": {
                    "protocol": {
                      "type": "string",
                      "enum": [
                        "circle-cctp-v1",
                        "circle-cctp-v2",
                        "across",
                        "op-stack-canonical",
                        "arbitrum-canonical"
                      ]
                    },
                    "bridgeContract": {
                      "type": "string"
                    },
                    "token": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "symbol": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "amountRaw": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "amount": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "sender": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "recipient": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "destination": {
                      "type": "string"
                    },
                    "depositId": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "completed",
                        "pending",
                        "awaiting-attestation",
                        "unknown",
                        "not-trackable",
                        "offline"
                      ]
                    },
                    "detail": {
                      "type": "string"
                    },
                    "destinationTx": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "checkedVia": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "CrossChainTransactionExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "lookup",
              "logs"
            ],
            "default": "lookup"
          },
          "chain": {
            "title": "Source chain (EVM)",
            "description": "Ignored for Solana signatures, which are detected automatically.",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "hash": {
            "title": "Transaction hash or Solana signature",
            "type": "string",
            "maxLength": 100
          },
          "logs": {
            "title": "Source receipt logs JSON (offline mode)",
            "description": "The \"logs\" array of eth_getTransactionReceipt.",
            "type": "string",
            "maxLength": 500000
          },
          "followDestination": {
            "title": "Look up the destination transaction",
            "type": "boolean",
            "default": true
          }
        },
        "required": []
      },
      "CrossChainTransactionExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "sourceChain",
              "hash",
              "hops",
              "bridges",
              "solana",
              "elapsedSeconds",
              "timeline",
              "graph"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "evm",
                  "solana",
                  "logs"
                ]
              },
              "sourceChain": {
                "type": "string"
              },
              "hash": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "hops": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "chain",
                    "hash",
                    "role",
                    "status",
                    "timestamp",
                    "block",
                    "from",
                    "to",
                    "summary"
                  ],
                  "properties": {
                    "chain": {
                      "type": "string"
                    },
                    "hash": {
                      "type": "string"
                    },
                    "role": {
                      "type": "string",
                      "enum": [
                        "source",
                        "destination"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "block": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "from": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "to": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "summary": {
                      "type": "string"
                    }
                  }
                }
              },
              "bridges": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "protocol",
                    "amount",
                    "symbol",
                    "sender",
                    "recipient",
                    "destination",
                    "destinationChain",
                    "status",
                    "detail",
                    "destinationTx"
                  ],
                  "properties": {
                    "protocol": {
                      "type": "string"
                    },
                    "amount": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "symbol": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "sender": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "recipient": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "destination": {
                      "type": "string"
                    },
                    "destinationChain": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    },
                    "destinationTx": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "solana": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "signer",
                  "slot",
                  "fee",
                  "programs",
                  "bridgePrograms",
                  "instructions",
                  "tokenChanges",
                  "solChange"
                ],
                "properties": {
                  "signer": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "slot": {
                    "type": "integer"
                  },
                  "fee": {
                    "type": "integer"
                  },
                  "programs": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bridgePrograms": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "instructions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "tokenChanges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "owner",
                        "mint",
                        "change"
                      ],
                      "properties": {
                        "owner": {
                          "type": "string"
                        },
                        "mint": {
                          "type": "string"
                        },
                        "change": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "solChange": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "elapsedSeconds": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "timeline": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "time",
                    "label",
                    "detail",
                    "tone",
                    "chain",
                    "hash"
                  ],
                  "properties": {
                    "time": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    },
                    "tone": {
                      "type": "string"
                    },
                    "chain": {
                      "type": "string"
                    },
                    "hash": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "graph": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "nodes",
                  "edges"
                ],
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "label",
                        "kind"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "to",
                        "label"
                      ],
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "DaoGovernanceExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "space": {
            "title": "Snapshot space",
            "description": "Space id as in snapshot.box/#/s:<space>.",
            "type": "string",
            "maxLength": 100
          },
          "snapshotProposalId": {
            "title": "Snapshot proposal id for vote analysis (optional)",
            "description": "Defaults to the newest proposal of the space.",
            "type": "string",
            "maxLength": 100
          },
          "proposals": {
            "title": "Proposals to list",
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10
          },
          "snapshotJson": {
            "title": "Pasted Snapshot JSON (offline)",
            "description": "GraphQL response with data.space, data.proposals and optionally data.votes. Used instead of the live query.",
            "type": "string",
            "maxLength": 1000000
          },
          "chain": {
            "title": "Chain (Governor / treasury)",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "governor": {
            "title": "Governor contract (optional)",
            "type": "string",
            "maxLength": 42
          },
          "governorProposalId": {
            "title": "Governor proposal id (decimal)",
            "type": "string",
            "maxLength": 80
          },
          "treasury": {
            "title": "Treasury address (optional)",
            "type": "string",
            "maxLength": 42
          },
          "extraTokens": {
            "title": "Extra token addresses for the treasury",
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 8
          }
        },
        "required": []
      },
      "DaoGovernanceExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "space",
              "proposals",
              "voteAnalysis",
              "governor",
              "treasury"
            ],
            "properties": {
              "space": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "id",
                  "name",
                  "network",
                  "symbol",
                  "followers",
                  "proposalsCount",
                  "strategies",
                  "delegation"
                ],
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "network": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "symbol": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "followers": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "proposalsCount": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "strategies": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "delegation": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": false,
                    "required": [
                      "usesDelegationStrategy",
                      "type",
                      "contract"
                    ],
                    "properties": {
                      "usesDelegationStrategy": {
                        "type": "boolean"
                      },
                      "type": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "contract": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    }
                  }
                }
              },
              "proposals": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "title",
                    "state",
                    "author",
                    "start",
                    "end",
                    "type",
                    "choices",
                    "scores",
                    "scoresTotal",
                    "votes",
                    "quorum",
                    "quorumReached",
                    "leadingChoice",
                    "leadingShare"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "state": {
                      "type": "string"
                    },
                    "author": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "start": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "end": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "choices": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "scores": {
                      "type": "array",
                      "items": {
                        "type": "number"
                      }
                    },
                    "scoresTotal": {
                      "type": "number"
                    },
                    "votes": {
                      "type": "integer"
                    },
                    "quorum": {
                      "type": "number"
                    },
                    "quorumReached": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "leadingChoice": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "leadingShare": {
                      "type": [
                        "number",
                        "null"
                      ]
                    }
                  }
                }
              },
              "voteAnalysis": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "proposalId",
                  "votesAnalysed",
                  "totalVp",
                  "top10Share",
                  "nakamoto",
                  "topVoters"
                ],
                "properties": {
                  "proposalId": {
                    "type": "string"
                  },
                  "votesAnalysed": {
                    "type": "integer"
                  },
                  "totalVp": {
                    "type": "number"
                  },
                  "top10Share": {
                    "type": "number"
                  },
                  "nakamoto": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "topVoters": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "voter",
                        "vp",
                        "share",
                        "choice"
                      ],
                      "properties": {
                        "voter": {
                          "type": "string"
                        },
                        "vp": {
                          "type": "number"
                        },
                        "share": {
                          "type": "number"
                        },
                        "choice": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              },
              "governor": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "address",
                  "name",
                  "proposalId",
                  "state",
                  "stateName",
                  "votes",
                  "snapshot",
                  "deadline",
                  "quorum",
                  "quorumReached"
                ],
                "properties": {
                  "address": {
                    "type": "string"
                  },
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "proposalId": {
                    "type": "string"
                  },
                  "state": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "stateName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "votes": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": false,
                    "required": [
                      "against",
                      "for",
                      "abstain"
                    ],
                    "properties": {
                      "against": {
                        "type": "string"
                      },
                      "for": {
                        "type": "string"
                      },
                      "abstain": {
                        "type": "string"
                      }
                    }
                  },
                  "snapshot": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "deadline": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "quorum": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "quorumReached": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  }
                }
              },
              "treasury": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "address",
                  "chain",
                  "nativeSymbol",
                  "nativeWei",
                  "native",
                  "tokens"
                ],
                "properties": {
                  "address": {
                    "type": "string"
                  },
                  "chain": {
                    "type": "string"
                  },
                  "nativeSymbol": {
                    "type": "string"
                  },
                  "nativeWei": {
                    "type": "string"
                  },
                  "native": {
                    "type": "string"
                  },
                  "tokens": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "token",
                        "symbol",
                        "raw",
                        "balance"
                      ],
                      "properties": {
                        "token": {
                          "type": "string"
                        },
                        "symbol": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "raw": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "balance": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "DefiLiquidationExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "lookup",
              "logs"
            ],
            "default": "lookup"
          },
          "chain": {
            "title": "Aave V3 market",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "blocks": {
            "title": "Blocks to scan back from the latest",
            "description": "Ethereum ≈ 12 s/block, Base/OP ≈ 2 s, Arbitrum ≈ 0.25 s. Public nodes cap log ranges; the window shrinks automatically if refused.",
            "type": "integer",
            "minimum": 10,
            "maximum": 20000,
            "default": 2000
          },
          "user": {
            "title": "Check a borrower's health factor (optional)",
            "description": "Without it, the most recently liquidated borrower is checked.",
            "type": "string",
            "maxLength": 42
          },
          "logs": {
            "title": "LiquidationCall logs JSON (offline)",
            "type": "string",
            "maxLength": 1000000
          }
        },
        "required": []
      },
      "DefiLiquidationExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "chain",
              "pool",
              "window",
              "liquidations",
              "totals",
              "byLiquidator",
              "byPair",
              "account",
              "graph"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "lookup",
                  "logs"
                ]
              },
              "chain": {
                "type": "string"
              },
              "pool": {
                "type": "string"
              },
              "window": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "fromBlock",
                  "toBlock",
                  "blocks",
                  "fromTime",
                  "toTime",
                  "shrunk"
                ],
                "properties": {
                  "fromBlock": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "toBlock": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "blocks": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "fromTime": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "toTime": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "shrunk": {
                    "type": "boolean"
                  }
                }
              },
              "liquidations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "block",
                    "time",
                    "tx",
                    "user",
                    "collateralAsset",
                    "collateralSymbol",
                    "collateralAmount",
                    "collateralUsd",
                    "debtAsset",
                    "debtSymbol",
                    "debtAmount",
                    "debtUsd",
                    "liquidator",
                    "receiveAToken",
                    "impliedBonusPct"
                  ],
                  "properties": {
                    "block": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "time": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "tx": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "user": {
                      "type": "string"
                    },
                    "collateralAsset": {
                      "type": "string"
                    },
                    "collateralSymbol": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "collateralAmount": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "collateralUsd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "debtAsset": {
                      "type": "string"
                    },
                    "debtSymbol": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "debtAmount": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "debtUsd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "liquidator": {
                      "type": "string"
                    },
                    "receiveAToken": {
                      "type": "boolean"
                    },
                    "impliedBonusPct": {
                      "type": [
                        "number",
                        "null"
                      ]
                    }
                  }
                }
              },
              "totals": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "count",
                  "debtUsd",
                  "collateralUsd",
                  "uniqueUsers",
                  "uniqueLiquidators"
                ],
                "properties": {
                  "count": {
                    "type": "integer"
                  },
                  "debtUsd": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "collateralUsd": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "uniqueUsers": {
                    "type": "integer"
                  },
                  "uniqueLiquidators": {
                    "type": "integer"
                  }
                }
              },
              "byLiquidator": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "liquidator",
                    "count",
                    "debtUsd"
                  ],
                  "properties": {
                    "liquidator": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "debtUsd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    }
                  }
                }
              },
              "byPair": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "pair",
                    "count",
                    "debtUsd"
                  ],
                  "properties": {
                    "pair": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "debtUsd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    }
                  }
                }
              },
              "account": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "user",
                  "checked",
                  "healthFactor",
                  "totalCollateralUsd",
                  "totalDebtUsd",
                  "availableBorrowsUsd",
                  "liquidationThresholdPct",
                  "ltvPct",
                  "liquidatable"
                ],
                "properties": {
                  "user": {
                    "type": "string"
                  },
                  "checked": {
                    "type": "string",
                    "enum": [
                      "user-input",
                      "latest-liquidated"
                    ]
                  },
                  "healthFactor": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "totalCollateralUsd": {
                    "type": "number"
                  },
                  "totalDebtUsd": {
                    "type": "number"
                  },
                  "availableBorrowsUsd": {
                    "type": "number"
                  },
                  "liquidationThresholdPct": {
                    "type": "number"
                  },
                  "ltvPct": {
                    "type": "number"
                  },
                  "liquidatable": {
                    "type": "boolean"
                  }
                }
              },
              "graph": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "nodes",
                  "edges"
                ],
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "label",
                        "kind"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "to",
                        "label"
                      ],
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "GasFeeIntelligenceExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "Data source",
            "type": "string",
            "enum": [
              "live",
              "pasted"
            ],
            "default": "live"
          },
          "chains": {
            "title": "Chains",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ethereum",
                "base",
                "arbitrum",
                "optimism",
                "polygon",
                "avalanche",
                "bsc"
              ]
            },
            "default": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ]
          },
          "blocks": {
            "title": "Blocks of fee history",
            "type": "integer",
            "minimum": 10,
            "maximum": 100,
            "default": 100
          },
          "pasted": {
            "title": "Pasted JSON",
            "description": "{\"prices\":{\"ETH\":2400},\"chains\":{\"ethereum\":{\"feeHistory\":{…eth_feeHistory result…},\"gasPrice\":\"0x…\",\"l1FeeUpperBoundWei\":{\"erc20-transfer\":\"0x…\"}}}}",
            "type": "string",
            "maxLength": 1000000
          }
        },
        "required": []
      },
      "GasFeeIntelligenceExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "chains",
              "ranking",
              "operations"
            ],
            "properties": {
              "mode": {
                "type": "string"
              },
              "chains": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "chain",
                    "name",
                    "native",
                    "priceUsd",
                    "oldestBlock",
                    "newestBlock",
                    "blocks",
                    "baseFeeGwei",
                    "priorityGwei",
                    "gasPriceGwei",
                    "avgGasUsedRatio",
                    "trend",
                    "tiersGwei",
                    "operations",
                    "l1DataFee",
                    "error"
                  ],
                  "properties": {
                    "chain": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "native": {
                      "type": "string"
                    },
                    "priceUsd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "oldestBlock": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "newestBlock": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "blocks": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "baseFeeGwei": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "required": [
                        "next",
                        "min",
                        "avg",
                        "max"
                      ],
                      "properties": {
                        "next": {
                          "type": "number"
                        },
                        "min": {
                          "type": "number"
                        },
                        "avg": {
                          "type": "number"
                        },
                        "max": {
                          "type": "number"
                        }
                      }
                    },
                    "priorityGwei": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "required": [
                        "p10",
                        "p50",
                        "p90"
                      ],
                      "properties": {
                        "p10": {
                          "type": "number"
                        },
                        "p50": {
                          "type": "number"
                        },
                        "p90": {
                          "type": "number"
                        }
                      }
                    },
                    "gasPriceGwei": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "avgGasUsedRatio": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "trend": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "tiersGwei": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "required": [
                        "slow",
                        "standard",
                        "fast"
                      ],
                      "properties": {
                        "slow": {
                          "type": "number"
                        },
                        "standard": {
                          "type": "number"
                        },
                        "fast": {
                          "type": "number"
                        }
                      }
                    },
                    "operations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "operation",
                          "gas",
                          "executionNative",
                          "l1DataFeeNative",
                          "totalNative",
                          "totalUsd"
                        ],
                        "properties": {
                          "operation": {
                            "type": "string"
                          },
                          "gas": {
                            "type": "integer"
                          },
                          "executionNative": {
                            "type": "number"
                          },
                          "l1DataFeeNative": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "totalNative": {
                            "type": "number"
                          },
                          "totalUsd": {
                            "type": [
                              "number",
                              "null"
                            ]
                          }
                        }
                      }
                    },
                    "l1DataFee": {
                      "type": "string",
                      "enum": [
                        "included-upper-bound",
                        "not-included",
                        "not-applicable"
                      ]
                    },
                    "error": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "ranking": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "rank",
                    "chain",
                    "erc20TransferUsd",
                    "erc20TransferNative"
                  ],
                  "properties": {
                    "rank": {
                      "type": "integer"
                    },
                    "chain": {
                      "type": "string"
                    },
                    "erc20TransferUsd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "erc20TransferNative": {
                      "type": "number"
                    }
                  }
                }
              },
              "operations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "label",
                    "gas"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "gas": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "MevExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "lookup",
              "pasted"
            ],
            "default": "lookup"
          },
          "chain": {
            "title": "Chain",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "block": {
            "title": "Block number",
            "description": "Public nodes only serve recent blocks (roughly the last day); older blocks need your own node (RPC_URL_<CHAIN>).",
            "type": "string",
            "maxLength": 20,
            "default": "latest"
          },
          "blockJson": {
            "title": "Block JSON (offline)",
            "description": "{\"block\": {number, miner, extraData, baseFeePerGas, timestamp}, \"transactions\": [...], \"receipts\": [...]} as returned by eth_getBlockByNumber(…, true) and eth_getBlockReceipts.",
            "type": "string",
            "maxLength": 3000000
          }
        },
        "required": []
      },
      "MevExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "chain",
              "block",
              "receiptsSource",
              "swapsDetected",
              "sandwiches",
              "arbitrages",
              "liquidations",
              "priorityRanking",
              "totalTipsEth",
              "graph"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "lookup",
                  "pasted"
                ]
              },
              "chain": {
                "type": "string"
              },
              "block": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "number",
                  "hash",
                  "timestamp",
                  "miner",
                  "builderTag",
                  "baseFeeGwei",
                  "txCount",
                  "proposerPayment"
                ],
                "properties": {
                  "number": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "hash": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "timestamp": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "miner": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "builderTag": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "baseFeeGwei": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "txCount": {
                    "type": "integer"
                  },
                  "proposerPayment": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": false,
                    "required": [
                      "to",
                      "valueEth",
                      "tx"
                    ],
                    "properties": {
                      "to": {
                        "type": "string"
                      },
                      "valueEth": {
                        "type": "string"
                      },
                      "tx": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "receiptsSource": {
                "type": "string"
              },
              "swapsDetected": {
                "type": "integer"
              },
              "sandwiches": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "pool",
                    "version",
                    "token0",
                    "token1",
                    "attacker",
                    "victimFrom",
                    "frontTx",
                    "victimTx",
                    "backTx",
                    "frontIndex",
                    "victimIndex",
                    "backIndex",
                    "profitToken0",
                    "profitToken1"
                  ],
                  "properties": {
                    "pool": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    },
                    "token0": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "token1": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "attacker": {
                      "type": "string"
                    },
                    "victimFrom": {
                      "type": "string"
                    },
                    "frontTx": {
                      "type": "string"
                    },
                    "victimTx": {
                      "type": "string"
                    },
                    "backTx": {
                      "type": "string"
                    },
                    "frontIndex": {
                      "type": "integer"
                    },
                    "victimIndex": {
                      "type": "integer"
                    },
                    "backIndex": {
                      "type": "integer"
                    },
                    "profitToken0": {
                      "type": "string"
                    },
                    "profitToken1": {
                      "type": "string"
                    }
                  }
                }
              },
              "arbitrages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "tx",
                    "txIndex",
                    "actor",
                    "pools",
                    "profits"
                  ],
                  "properties": {
                    "tx": {
                      "type": "string"
                    },
                    "txIndex": {
                      "type": "integer"
                    },
                    "actor": {
                      "type": "string"
                    },
                    "pools": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "profits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "token",
                          "symbol",
                          "raw",
                          "amount"
                        ],
                        "properties": {
                          "token": {
                            "type": "string"
                          },
                          "symbol": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "raw": {
                            "type": "string"
                          },
                          "amount": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              },
              "liquidations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "tx",
                    "protocol",
                    "collateralAsset",
                    "debtAsset",
                    "user",
                    "debtToCoverRaw",
                    "liquidatedCollateralRaw",
                    "liquidator",
                    "receiveAToken"
                  ],
                  "properties": {
                    "tx": {
                      "type": "string"
                    },
                    "protocol": {
                      "type": "string"
                    },
                    "collateralAsset": {
                      "type": "string"
                    },
                    "debtAsset": {
                      "type": "string"
                    },
                    "user": {
                      "type": "string"
                    },
                    "debtToCoverRaw": {
                      "type": "string"
                    },
                    "liquidatedCollateralRaw": {
                      "type": "string"
                    },
                    "liquidator": {
                      "type": "string"
                    },
                    "receiveAToken": {
                      "type": "boolean"
                    }
                  }
                }
              },
              "priorityRanking": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "rank",
                    "tx",
                    "index",
                    "from",
                    "to",
                    "tipPerGasGwei",
                    "tipEth",
                    "tags"
                  ],
                  "properties": {
                    "rank": {
                      "type": "integer"
                    },
                    "tx": {
                      "type": "string"
                    },
                    "index": {
                      "type": "integer"
                    },
                    "from": {
                      "type": "string"
                    },
                    "to": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "tipPerGasGwei": {
                      "type": "string"
                    },
                    "tipEth": {
                      "type": "string"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "totalTipsEth": {
                "type": "string"
              },
              "graph": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "nodes",
                  "edges"
                ],
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "label",
                        "kind"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "to",
                        "label"
                      ],
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "RollupBatchExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "lookup",
              "pasted"
            ],
            "default": "lookup"
          },
          "rollup": {
            "title": "Rollup",
            "type": "string",
            "enum": [
              "base",
              "optimism",
              "arbitrum"
            ],
            "default": "base"
          },
          "l2Tx": {
            "title": "L2 transaction hash (optional)",
            "type": "string",
            "maxLength": 66
          },
          "l2Block": {
            "title": "L2 block number (optional)",
            "description": "Used when no transaction hash is given; defaults to the latest block.",
            "type": "string",
            "maxLength": 20
          },
          "l1Blocks": {
            "title": "Recent Ethereum blocks to scan for batches",
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 5
          },
          "l1BlockJson": {
            "title": "L1 block JSON (offline)",
            "description": "eth_getBlockByNumber(…, true) result (or an array of them), optionally with a \"receipts\" array for exact costs.",
            "type": "string",
            "maxLength": 3000000
          }
        },
        "required": []
      },
      "RollupBatchExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "rollup",
              "l2",
              "l1Scan",
              "batches",
              "perRollup",
              "windows",
              "graph"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "lookup",
                  "pasted"
                ]
              },
              "rollup": {
                "type": "string"
              },
              "l2": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "chain",
                  "block",
                  "txHash",
                  "timestamp",
                  "status",
                  "latest",
                  "safe",
                  "finalized",
                  "arbitrumBatch"
                ],
                "properties": {
                  "chain": {
                    "type": "string"
                  },
                  "block": {
                    "type": "integer"
                  },
                  "txHash": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "timestamp": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unsafe",
                      "safe",
                      "finalized"
                    ]
                  },
                  "latest": {
                    "type": "integer"
                  },
                  "safe": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "finalized": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "arbitrumBatch": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                }
              },
              "l1Scan": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "fromBlock",
                  "toBlock",
                  "blocksScanned"
                ],
                "properties": {
                  "fromBlock": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "toBlock": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "blocksScanned": {
                    "type": "integer"
                  }
                }
              },
              "batches": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "l1Block",
                    "l1Time",
                    "txHash",
                    "rollup",
                    "from",
                    "authorized",
                    "type",
                    "blobs",
                    "blobGasUsed",
                    "blobGasPriceWei",
                    "executionFeeWei",
                    "blobFeeWei",
                    "totalFeeEth",
                    "calldataBytes",
                    "arbitrumBatch"
                  ],
                  "properties": {
                    "l1Block": {
                      "type": "integer"
                    },
                    "l1Time": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "txHash": {
                      "type": "string"
                    },
                    "rollup": {
                      "type": "string"
                    },
                    "from": {
                      "type": "string"
                    },
                    "authorized": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "type": {
                      "type": "integer"
                    },
                    "blobs": {
                      "type": "integer"
                    },
                    "blobGasUsed": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "blobGasPriceWei": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "executionFeeWei": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "blobFeeWei": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "totalFeeEth": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "calldataBytes": {
                      "type": "integer"
                    },
                    "arbitrumBatch": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              },
              "perRollup": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "rollup",
                    "batches",
                    "blobs",
                    "blobGasUsed",
                    "totalFeeEth"
                  ],
                  "properties": {
                    "rollup": {
                      "type": "string"
                    },
                    "batches": {
                      "type": "integer"
                    },
                    "blobs": {
                      "type": "integer"
                    },
                    "blobGasUsed": {
                      "type": "string"
                    },
                    "totalFeeEth": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "windows": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "rollup",
                    "fact",
                    "source"
                  ],
                  "properties": {
                    "rollup": {
                      "type": "string"
                    },
                    "fact": {
                      "type": "string"
                    },
                    "source": {
                      "type": "string"
                    }
                  }
                }
              },
              "graph": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "nodes",
                  "edges"
                ],
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "label",
                        "kind"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "to",
                        "label"
                      ],
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SmartContractRelationshipGraphInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "lookup",
              "bytecode"
            ],
            "default": "lookup"
          },
          "chain": {
            "title": "Chain",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "address": {
            "title": "Contract address",
            "type": "string",
            "maxLength": 42
          },
          "related": {
            "title": "Related addresses (optional)",
            "description": "One per line: \"0x… label\", e.g. a token it holds, a contract it calls or a known multisig.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12
          },
          "bytecode": {
            "title": "Runtime bytecode (offline)",
            "type": "string",
            "maxLength": 200000
          },
          "relationships": {
            "title": "Relationship list (offline)",
            "description": "One per line: \"A -> B : label\" — A/B are addresses or names; use \"this\" for the analysed contract.",
            "type": "string",
            "maxLength": 20000
          }
        },
        "required": []
      },
      "SmartContractRelationshipGraphResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "chain",
              "address",
              "kind",
              "name",
              "proxy",
              "owner",
              "admin",
              "deployment",
              "interfaces",
              "token",
              "bytecode",
              "related",
              "graph"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "lookup",
                  "bytecode"
                ]
              },
              "chain": {
                "type": "string"
              },
              "address": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "contract",
                  "eoa",
                  "eip7702-account",
                  "bytecode"
                ]
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "proxy": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "type",
                  "upgradeable",
                  "implementation",
                  "implementationName",
                  "beacon",
                  "admin",
                  "adminKind"
                ],
                "properties": {
                  "type": {
                    "type": "string"
                  },
                  "upgradeable": {
                    "type": "string"
                  },
                  "implementation": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "implementationName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "beacon": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "admin": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "adminKind": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "owner": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "admin": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "deployment": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "deployer",
                  "deployerType",
                  "txHash",
                  "block",
                  "viaFactory"
                ],
                "properties": {
                  "deployer": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "deployerType": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "txHash": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "block": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "viaFactory": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  }
                }
              },
              "interfaces": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "erc20",
                  "erc721",
                  "erc1155",
                  "ownable",
                  "accessControl"
                ],
                "properties": {
                  "erc20": {
                    "type": "boolean"
                  },
                  "erc721": {
                    "type": "boolean"
                  },
                  "erc1155": {
                    "type": "boolean"
                  },
                  "ownable": {
                    "type": "boolean"
                  },
                  "accessControl": {
                    "type": "boolean"
                  }
                }
              },
              "token": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "name",
                  "symbol",
                  "decimals",
                  "totalSupply"
                ],
                "properties": {
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "symbol": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "decimals": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "totalSupply": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              },
              "bytecode": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "size",
                  "selectors",
                  "upgradeFunctions",
                  "minimalProxyTarget",
                  "eip7702Delegate",
                  "hasDelegatecall"
                ],
                "properties": {
                  "size": {
                    "type": "integer"
                  },
                  "selectors": {
                    "type": "integer"
                  },
                  "upgradeFunctions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "minimalProxyTarget": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "eip7702Delegate": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "hasDelegatecall": {
                    "type": "boolean"
                  }
                }
              },
              "related": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "label",
                    "type",
                    "name"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "graph": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "nodes",
                  "edges"
                ],
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "label",
                        "kind"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "to",
                        "label"
                      ],
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "ContractUpgradeExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "lookup",
              "bytecode"
            ],
            "default": "lookup"
          },
          "chain": {
            "title": "Chain",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "address": {
            "title": "Contract address",
            "type": "string",
            "maxLength": 42
          },
          "bytecode": {
            "title": "Runtime bytecode",
            "type": "string",
            "maxLength": 100000
          }
        },
        "required": []
      },
      "ContractUpgradeExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "chain",
              "address",
              "proxyType",
              "upgradeable",
              "implementation",
              "beacon",
              "admin",
              "history",
              "verification",
              "bytecode",
              "findings",
              "graph"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "lookup",
                  "bytecode"
                ]
              },
              "chain": {
                "type": "string"
              },
              "address": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "proxyType": {
                "type": "string",
                "enum": [
                  "eip1967-transparent",
                  "eip1967-uups",
                  "eip1967-beacon",
                  "eip1167-minimal-proxy",
                  "safe-proxy",
                  "legacy-zeppelinos",
                  "eip7702-delegated-eoa",
                  "eoa",
                  "not-a-proxy",
                  "unknown-delegatecall"
                ]
              },
              "upgradeable": {
                "type": "string",
                "enum": [
                  "yes",
                  "no",
                  "unknown"
                ]
              },
              "implementation": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "beacon": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "admin": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "address",
                  "kind",
                  "safe",
                  "timelockDelaySeconds",
                  "owner"
                ],
                "properties": {
                  "address": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string"
                  },
                  "owner": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "timelockDelaySeconds": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "safe": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": false,
                    "required": [
                      "threshold",
                      "owners"
                    ],
                    "properties": {
                      "threshold": {
                        "type": "integer"
                      },
                      "owners": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              },
              "history": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "events",
                  "complete",
                  "range"
                ],
                "properties": {
                  "complete": {
                    "type": "boolean"
                  },
                  "range": {
                    "type": "string"
                  },
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "kind",
                        "blockNumber",
                        "txHash",
                        "value",
                        "timestamp"
                      ],
                      "properties": {
                        "kind": {
                          "type": "string"
                        },
                        "blockNumber": {
                          "type": "integer"
                        },
                        "txHash": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        },
                        "timestamp": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "verification": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "proxy",
                  "implementation"
                ],
                "properties": {
                  "proxy": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": false,
                    "required": [
                      "name",
                      "match"
                    ],
                    "properties": {
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "match": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    }
                  },
                  "implementation": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": false,
                    "required": [
                      "name",
                      "match"
                    ],
                    "properties": {
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "match": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    }
                  }
                }
              },
              "bytecode": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "size",
                  "minimalProxyTarget",
                  "eip7702Delegate",
                  "hasDelegatecall",
                  "hasSelfdestruct",
                  "selectors",
                  "upgradeFunctions",
                  "referencesSlots"
                ],
                "properties": {
                  "size": {
                    "type": "integer"
                  },
                  "minimalProxyTarget": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "eip7702Delegate": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "hasDelegatecall": {
                    "type": "boolean"
                  },
                  "hasSelfdestruct": {
                    "type": "boolean"
                  },
                  "selectors": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "upgradeFunctions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "referencesSlots": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "findings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "severity",
                    "finding"
                  ],
                  "properties": {
                    "severity": {
                      "type": "string",
                      "enum": [
                        "high",
                        "medium",
                        "low",
                        "info"
                      ]
                    },
                    "finding": {
                      "type": "string"
                    }
                  }
                }
              },
              "graph": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "nodes",
                  "edges"
                ],
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "kind",
                        "label"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "to",
                        "relation"
                      ],
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "relation": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "StablecoinFlowExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "Data source",
            "type": "string",
            "enum": [
              "live",
              "pasted"
            ],
            "default": "live"
          },
          "token": {
            "title": "Stablecoin",
            "type": "string",
            "enum": [
              "USDC",
              "USDT"
            ],
            "default": "USDC"
          },
          "supplyChains": {
            "title": "Chains for on-chain supply",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ethereum",
                "base",
                "arbitrum",
                "optimism",
                "polygon",
                "avalanche",
                "bsc"
              ]
            },
            "default": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ]
          },
          "chain": {
            "title": "Chain for transfer scan",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "transferBlocks": {
            "title": "Blocks scanned for all transfers",
            "description": "Public nodes cap response size; busy tokens produce ~1,000+ logs per 10 Ethereum blocks.",
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10
          },
          "mintBurnBlocks": {
            "title": "Blocks scanned for mints/burns",
            "type": "integer",
            "minimum": 10,
            "maximum": 5000,
            "default": 1000
          },
          "threshold": {
            "title": "Large-transfer threshold",
            "type": "number",
            "minimum": 0,
            "default": 1000000,
            "x-unit": "tokens (≈ USD)"
          },
          "defillama": {
            "title": "Include DefiLlama cross-chain circulation",
            "type": "boolean",
            "default": true
          },
          "logs": {
            "title": "Pasted logs JSON",
            "description": "eth_getLogs result (array) or {result:[…]} / {logs:[…]}.",
            "type": "string",
            "maxLength": 2000000
          },
          "decimals": {
            "title": "Token decimals (pasted mode)",
            "type": "integer",
            "minimum": 0,
            "maximum": 36,
            "default": 6
          }
        },
        "required": []
      },
      "StablecoinFlowExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "token",
              "mode",
              "supply",
              "window",
              "transfers",
              "mintBurn",
              "circulation"
            ],
            "properties": {
              "token": {
                "type": "string"
              },
              "mode": {
                "type": "string"
              },
              "supply": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "chains",
                  "total"
                ],
                "properties": {
                  "total": {
                    "type": "number"
                  },
                  "chains": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "chain",
                        "contract",
                        "decimals",
                        "totalSupply",
                        "error"
                      ],
                      "properties": {
                        "chain": {
                          "type": "string"
                        },
                        "contract": {
                          "type": "string"
                        },
                        "decimals": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "totalSupply": {
                          "type": [
                            "number",
                            "null"
                          ]
                        },
                        "error": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              },
              "window": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "chain",
                  "fromBlock",
                  "toBlock",
                  "blocks",
                  "seconds",
                  "mintBurnFromBlock"
                ],
                "properties": {
                  "chain": {
                    "type": "string"
                  },
                  "fromBlock": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "toBlock": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "blocks": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "seconds": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "mintBurnFromBlock": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                }
              },
              "transfers": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "count",
                  "volume",
                  "threshold",
                  "large",
                  "topSenders",
                  "topReceivers"
                ],
                "properties": {
                  "count": {
                    "type": "integer"
                  },
                  "volume": {
                    "type": "number"
                  },
                  "threshold": {
                    "type": "number"
                  },
                  "large": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "txHash",
                        "block",
                        "logIndex",
                        "kind",
                        "from",
                        "to",
                        "raw",
                        "amount"
                      ],
                      "properties": {
                        "txHash": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "block": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "logIndex": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "kind": {
                          "type": "string",
                          "enum": [
                            "mint",
                            "burn",
                            "transfer"
                          ]
                        },
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "raw": {
                          "type": "string"
                        },
                        "amount": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  "topSenders": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "address",
                        "amount",
                        "count"
                      ],
                      "properties": {
                        "address": {
                          "type": "string"
                        },
                        "amount": {
                          "type": "number"
                        },
                        "count": {
                          "type": "integer"
                        }
                      }
                    }
                  },
                  "topReceivers": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "address",
                        "amount",
                        "count"
                      ],
                      "properties": {
                        "address": {
                          "type": "string"
                        },
                        "amount": {
                          "type": "number"
                        },
                        "count": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                }
              },
              "mintBurn": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "mints",
                  "burns",
                  "minted",
                  "burned",
                  "netIssuance",
                  "events"
                ],
                "properties": {
                  "mints": {
                    "type": "integer"
                  },
                  "burns": {
                    "type": "integer"
                  },
                  "minted": {
                    "type": "number"
                  },
                  "burned": {
                    "type": "number"
                  },
                  "netIssuance": {
                    "type": "number"
                  },
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "txHash",
                        "block",
                        "logIndex",
                        "kind",
                        "from",
                        "to",
                        "raw",
                        "amount"
                      ],
                      "properties": {
                        "txHash": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "block": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "logIndex": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "kind": {
                          "type": "string",
                          "enum": [
                            "mint",
                            "burn",
                            "transfer"
                          ]
                        },
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "raw": {
                          "type": "string"
                        },
                        "amount": {
                          "type": "number"
                        }
                      }
                    }
                  }
                }
              },
              "circulation": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "circulating",
                  "prevDay",
                  "prevWeek",
                  "prevMonth",
                  "chains"
                ],
                "properties": {
                  "circulating": {
                    "type": "number"
                  },
                  "prevDay": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "prevWeek": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "prevMonth": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "chains": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "chain",
                        "circulating",
                        "share"
                      ],
                      "properties": {
                        "chain": {
                          "type": "string"
                        },
                        "circulating": {
                          "type": "number"
                        },
                        "share": {
                          "type": "number"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "TokenUnlockExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "enum": [
              "schedule",
              "vesting-wallet"
            ],
            "default": "schedule"
          },
          "totalTokens": {
            "title": "Total tokens",
            "type": "number",
            "minimum": 0,
            "default": 1000000
          },
          "symbol": {
            "title": "Token symbol",
            "type": "string",
            "maxLength": 20,
            "default": "TOKEN"
          },
          "startDate": {
            "title": "Start / TGE date",
            "type": "string",
            "format": "date",
            "default": "2026-01-01"
          },
          "cliffMonths": {
            "title": "Cliff",
            "type": "integer",
            "minimum": 0,
            "maximum": 120,
            "default": 12,
            "x-unit": "months"
          },
          "durationMonths": {
            "title": "Total vesting duration (from start, incl. cliff)",
            "type": "integer",
            "minimum": 1,
            "maximum": 240,
            "default": 36,
            "x-unit": "months"
          },
          "schedule": {
            "title": "Release type",
            "type": "string",
            "enum": [
              "linear",
              "monthly",
              "tranches"
            ],
            "default": "monthly"
          },
          "tgePercent": {
            "title": "Unlocked at TGE",
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "default": 10,
            "x-unit": "%"
          },
          "tranches": {
            "title": "Tranches (custom)",
            "description": "One \"date, percent of total\" per line.",
            "type": "string",
            "maxLength": 20000
          },
          "asOf": {
            "title": "As of date",
            "description": "Defaults to today.",
            "type": "string",
            "format": "date"
          },
          "chain": {
            "title": "Chain (on-chain mode)",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "vestingWallet": {
            "title": "VestingWallet address",
            "type": "string",
            "maxLength": 42
          },
          "token": {
            "title": "Token address (blank = native coin)",
            "type": "string",
            "maxLength": 42
          }
        },
        "required": []
      },
      "TokenUnlockExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "symbol",
              "total",
              "asOf",
              "schedule",
              "unlocked",
              "locked",
              "unlockedPercent",
              "next",
              "events",
              "samples",
              "onchain"
            ],
            "properties": {
              "mode": {
                "type": "string"
              },
              "symbol": {
                "type": "string"
              },
              "total": {
                "type": "number"
              },
              "asOf": {
                "type": "string"
              },
              "schedule": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "start",
                  "cliffEnd",
                  "end",
                  "tgePercent"
                ],
                "properties": {
                  "kind": {
                    "type": "string"
                  },
                  "start": {
                    "type": "string"
                  },
                  "cliffEnd": {
                    "type": "string"
                  },
                  "end": {
                    "type": "string"
                  },
                  "tgePercent": {
                    "type": "number"
                  }
                }
              },
              "unlocked": {
                "type": "number"
              },
              "locked": {
                "type": "number"
              },
              "unlockedPercent": {
                "type": "number"
              },
              "next": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "date",
                  "amount",
                  "label",
                  "daysAway"
                ],
                "properties": {
                  "date": {
                    "type": "string"
                  },
                  "amount": {
                    "type": "number"
                  },
                  "label": {
                    "type": "string"
                  },
                  "daysAway": {
                    "type": "integer"
                  }
                }
              },
              "events": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "date",
                    "label",
                    "amount",
                    "cumulative"
                  ],
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "amount": {
                      "type": "number"
                    },
                    "cumulative": {
                      "type": "number"
                    }
                  }
                }
              },
              "samples": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "date",
                    "unlocked",
                    "unlockedPercent"
                  ],
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "unlocked": {
                      "type": "number"
                    },
                    "unlockedPercent": {
                      "type": "number"
                    }
                  }
                }
              },
              "onchain": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "wallet",
                  "chain",
                  "token",
                  "beneficiary",
                  "startUnix",
                  "durationSeconds",
                  "cliffUnix",
                  "balance",
                  "released",
                  "releasable",
                  "totalAllocation",
                  "scheduledVested",
                  "consistent",
                  "unclaimed"
                ],
                "properties": {
                  "wallet": {
                    "type": "string"
                  },
                  "chain": {
                    "type": "string"
                  },
                  "token": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "beneficiary": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "startUnix": {
                    "type": "integer"
                  },
                  "durationSeconds": {
                    "type": "integer"
                  },
                  "cliffUnix": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "balance": {
                    "type": "string"
                  },
                  "released": {
                    "type": "string"
                  },
                  "releasable": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "totalAllocation": {
                    "type": "string"
                  },
                  "scheduledVested": {
                    "type": "string"
                  },
                  "consistent": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "unclaimed": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "TransactionDecoderInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "lookup",
              "calldata"
            ],
            "default": "lookup"
          },
          "chain": {
            "title": "Chain",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "txHash": {
            "title": "Transaction hash",
            "type": "string",
            "maxLength": 66
          },
          "calldata": {
            "title": "Calldata (input data)",
            "type": "string",
            "maxLength": 200000
          },
          "signature": {
            "title": "Function signature (optional)",
            "type": "string",
            "maxLength": 500
          },
          "abi": {
            "title": "Contract ABI JSON (optional)",
            "type": "string",
            "maxLength": 500000
          }
        },
        "required": []
      },
      "TransactionDecoderResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "chain",
              "transaction",
              "call",
              "logs",
              "tokenTransfers",
              "graph"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "lookup",
                  "calldata"
                ]
              },
              "chain": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id",
                  "name",
                  "chainId"
                ],
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "chainId": {
                    "type": "integer"
                  }
                }
              },
              "transaction": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "hash",
                  "status",
                  "finality",
                  "blockNumber",
                  "timestamp",
                  "confirmations",
                  "from",
                  "to",
                  "contractCreated",
                  "valueWei",
                  "value",
                  "gasUsed",
                  "effectiveGasPriceWei",
                  "feeWei",
                  "fee",
                  "nonce",
                  "type"
                ],
                "properties": {
                  "hash": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "success",
                      "reverted",
                      "pending"
                    ]
                  },
                  "finality": {
                    "type": "string",
                    "enum": [
                      "pending",
                      "unfinalized",
                      "finalized",
                      "unknown"
                    ]
                  },
                  "blockNumber": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "timestamp": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "confirmations": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "contractCreated": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "valueWei": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  },
                  "gasUsed": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "effectiveGasPriceWei": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "feeWei": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "fee": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "nonce": {
                    "type": "integer"
                  },
                  "type": {
                    "type": "integer"
                  }
                }
              },
              "call": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "selector",
                  "signature",
                  "signatureSource",
                  "args",
                  "alternatives"
                ],
                "properties": {
                  "selector": {
                    "type": "string"
                  },
                  "signature": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "signatureSource": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "alternatives": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "args": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "name",
                        "type",
                        "value"
                      ],
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              },
              "logs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "index",
                    "address",
                    "topic0",
                    "event",
                    "eventSource",
                    "indexingAssumed",
                    "args"
                  ],
                  "properties": {
                    "index": {
                      "type": "integer"
                    },
                    "address": {
                      "type": "string"
                    },
                    "topic0": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "event": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "eventSource": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "indexingAssumed": {
                      "type": "boolean"
                    },
                    "args": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "name",
                          "type",
                          "indexed",
                          "value"
                        ],
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string"
                          },
                          "indexed": {
                            "type": "boolean"
                          },
                          "value": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "tokenTransfers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "token",
                    "symbol",
                    "from",
                    "to",
                    "raw",
                    "amount"
                  ],
                  "properties": {
                    "token": {
                      "type": "string"
                    },
                    "symbol": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "from": {
                      "type": "string"
                    },
                    "to": {
                      "type": "string"
                    },
                    "raw": {
                      "type": "string"
                    },
                    "amount": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "graph": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "nodes",
                  "edges"
                ],
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "kind",
                        "label"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "to",
                        "relation"
                      ],
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "relation": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "WalletPermissionExplorerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "title": "What do you have?",
            "type": "string",
            "enum": [
              "lookup",
              "logs"
            ],
            "default": "lookup"
          },
          "chain": {
            "title": "Chain",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "owner": {
            "title": "Wallet address (owner)",
            "type": "string",
            "maxLength": 42
          },
          "extraTokens": {
            "title": "Extra ERC-20 tokens to check",
            "description": "One token address per line (added to USDC/USDT/WETH/DAI on this chain).",
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 15
          },
          "extraSpenders": {
            "title": "Extra spenders / operators to check",
            "description": "One address per line, e.g. a contract you once approved.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 15
          },
          "nftCollections": {
            "title": "NFT collections (ERC-721/1155) to check",
            "description": "One collection address per line; checked with isApprovedForAll against marketplace operators and your extra spenders.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 10
          },
          "approvalLogs": {
            "title": "Approval / ApprovalForAll logs JSON (offline)",
            "description": "Array of {address, topics, data, blockNumber?, logIndex?} as returned by eth_getLogs.",
            "type": "string",
            "maxLength": 500000
          },
          "currentAllowances": {
            "title": "Current allowance values JSON (offline, optional)",
            "description": "Array of {token, spender, allowance} overriding the log values (e.g. after partial spending).",
            "type": "string",
            "maxLength": 100000
          }
        },
        "required": []
      },
      "WalletPermissionExplorerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "mode",
              "chain",
              "owner",
              "account",
              "approvals",
              "counts",
              "checked",
              "exposureUsd",
              "graph"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "lookup",
                  "logs"
                ]
              },
              "chain": {
                "type": "string"
              },
              "owner": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "account": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "type",
                  "delegate",
                  "delegateName",
                  "delegateVerified"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "eoa",
                      "contract",
                      "eip7702-delegated"
                    ]
                  },
                  "delegate": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "delegateName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "delegateVerified": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  }
                }
              },
              "approvals": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "kind",
                    "token",
                    "tokenLabel",
                    "spender",
                    "spenderLabel",
                    "spenderType",
                    "amountRaw",
                    "amount",
                    "unlimited",
                    "expiration",
                    "balance",
                    "exposure",
                    "exposureUsd",
                    "risk",
                    "reasons"
                  ],
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "erc20",
                        "permit2",
                        "nft-operator"
                      ]
                    },
                    "token": {
                      "type": "string"
                    },
                    "tokenLabel": {
                      "type": "string"
                    },
                    "spender": {
                      "type": "string"
                    },
                    "spenderLabel": {
                      "type": "string"
                    },
                    "spenderType": {
                      "type": "string",
                      "enum": [
                        "known",
                        "eoa",
                        "eip7702-account",
                        "verified-contract",
                        "unverified-contract",
                        "unknown"
                      ]
                    },
                    "amountRaw": {
                      "type": "string"
                    },
                    "amount": {
                      "type": "string"
                    },
                    "unlimited": {
                      "type": "boolean"
                    },
                    "expiration": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "balance": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "exposure": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "exposureUsd": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "risk": {
                      "type": "string",
                      "enum": [
                        "high",
                        "medium",
                        "low"
                      ]
                    },
                    "reasons": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "counts": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "active",
                  "unlimited",
                  "high",
                  "medium",
                  "low",
                  "revokedInLogs"
                ],
                "properties": {
                  "active": {
                    "type": "integer"
                  },
                  "unlimited": {
                    "type": "integer"
                  },
                  "high": {
                    "type": "integer"
                  },
                  "medium": {
                    "type": "integer"
                  },
                  "low": {
                    "type": "integer"
                  },
                  "revokedInLogs": {
                    "type": "integer"
                  }
                }
              },
              "checked": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "tokens",
                  "spenders",
                  "pairs",
                  "collections"
                ],
                "properties": {
                  "tokens": {
                    "type": "integer"
                  },
                  "spenders": {
                    "type": "integer"
                  },
                  "pairs": {
                    "type": "integer"
                  },
                  "collections": {
                    "type": "integer"
                  }
                }
              },
              "exposureUsd": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "graph": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "nodes",
                  "edges"
                ],
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "id",
                        "label",
                        "kind"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "from",
                        "to",
                        "label"
                      ],
                      "properties": {
                        "from": {
                          "type": "string"
                        },
                        "to": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      }
    }
  }
}