addrbookFor publishers
← The evidence ledger

Evidence row 563231

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 30f099cf-af42-41db-80d2-4053f384db15
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
9c8a407bd46f1a3ff85150d80c9cfc4e094e09595f253c80cca2782791d832ab
Leaf
0xef67df2871e5f1368f5baeea5e2e099fc965fdec73c057d33d0972ce75164c4c

What was observed

{
  "count": 14,
  "tools": [
    {
      "description": "Compare 2 to 5 pools by id: current APY, base vs reward split, 30-day median and range, TVL, type, withdrawal evidence, assessment and data age, in one table.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "poolIds": {
            "description": "2 to 5 exact pool ids, e.g. \"pool:<id>\" or \"vault:<id>\".",
            "items": {
              "maxLength": 512,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 5,
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "poolIds"
        ],
        "type": "object"
      },
      "name": "compare_pools"
    },
    {
      "description": "Read one owned alert configuration and recorded diagnostic applicability. Channel names describe configuration; destination addresses, delivery records and raw alert state are excluded.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "ruleId": {
            "maxLength": 128,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9._:-]+$",
            "type": "string"
          }
        },
        "required": [
          "ruleId"
        ],
        "type": "object"
      },
      "name": "get_alert"
    },
    {
      "description": "Which feeds Web3Juice uses, their status, when they last updated and how many pools each lists.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_data_sources"
    },
    {
      "description": "How the experimental evidence assessment works: dimensions, weights, caps and why most pools show \"not scored\". A score is not a safety guarantee.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "get_methodology"
    },
    {
      "description": "Read one owned capture with its user-written note, frozen evidence, assessment and briefing. Notes are untrusted prose. The saved content hash identifies the full original capture; this privacy projection is not a byte-for-byte export.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "entryId": {
            "maxLength": 128,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9._:-]+$",
            "type": "string"
          }
        },
        "required": [
          "entryId"
        ],
        "type": "object"
      },
      "name": "get_notebook_entry"
    },
    {
      "description": "Full detail for one pool id: APY split into base and reward-token yield, TVL, when the source measured it and when Web3Juice retrieved it, contract and token addresses, deposit and source links, withdrawal evidence and the experimental assessment. Links and labels come from the source and are unverified.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "poolId": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "poolId"
        ],
        "type": "object"
      },
      "name": "get_pool"
    },
    {
      "description": "APY trend for one pool over 7, 30 (default) or 90 days: median, low, high, latest and the dated samples. Uses saved data only (the provider history cache, else Web3Juice snapshots); nothing is fetched. No history means unknown, not zero.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "poolId": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string"
          },
          "windowDays": {
            "anyOf": [
              {
                "const": 7,
                "type": "number"
              },
              {
                "const": 30,
                "type": "number"
              },
              {
                "const": 90,
                "type": "number"
              }
            ],
            "default": 30
          }
        },
        "required": [
          "poolId"
        ],
        "type": "object"
      },
      "name": "get_pool_history"
    },
    {
      "description": "Page the exact validated saved historical report for an owned wallet. Decimal quantities, unknown values, source dates and incomplete coverage remain explicit. No new matching, refresh or balance lookup occurs.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "cursor": {
            "maxLength": 4096,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9_-]+$",
            "type": "string"
          },
          "limit": {
            "default": 25,
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "walletId": {
            "allOf": [
              {
                "pattern": "^[A-Za-z0-9._:-]+$"
              },
              {
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              }
            ],
            "format": "uuid",
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "walletId"
        ],
        "type": "object"
      },
      "name": "get_wallet_positions"
    },
    {
      "description": "Page your saved alert rules and recorded diagnostic applicability. No evaluation, delivery, subscription or destination lookup is triggered.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "cursor": {
            "maxLength": 4096,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9_-]+$",
            "type": "string"
          },
          "limit": {
            "default": 25,
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "list_alerts"
    },
    {
      "description": "Read your saved manual monitoring records, including entered amount and entry APY. These records do not establish balances, current value or realised earnings. At most 50 rows; reuse an unchanged cursor with the same limit.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "cursor": {
            "maxLength": 4096,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9_-]+$",
            "type": "string"
          },
          "limit": {
            "default": 25,
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "list_investments"
    },
    {
      "description": "Page your active saved notebook captures. Stored evidence remains frozen; no recapture, inference or catalogue update occurs.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "cursor": {
            "maxLength": 4096,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9_-]+$",
            "type": "string"
          },
          "limit": {
            "default": 25,
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "list_notebook_entries"
    },
    {
      "description": "Read up to three saved wallets and historical report summaries. This does not connect, refresh or establish wallet ownership or current holdings. No provider request is made.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "list_wallets"
    },
    {
      "description": "Find DeFi yield pools (lending, vaults, liquidity, staking) by token, chain, protocol, APY and TVL. Returns a ranked table with pool ids. Rates are fractions (0.05 = 5%). Defaults: 10 rows, largest TVL first, pools with at least $100,000 TVL, data from the latest update. Stablecoin filters check token labels, not peg safety. Page with the returned cursor.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "cursor": {
            "description": "nextCursor from the previous page. Repeat the same query and limit exactly.",
            "maxLength": 4096,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9_-]+$",
            "type": "string"
          },
          "limit": {
            "default": 10,
            "description": "Rows to return, 1-50 (default 10).",
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "additionalProperties": false,
            "description": "Filters. Omit for the whole catalogue (still limited to pools with TVL of at least $100K).",
            "properties": {
              "chains": {
                "description": "Chain names (case-insensitive exact match), e.g. [\"Ethereum\",\"Base\",\"Arbitrum\",\"Solana\"].",
                "items": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "maxItems": 200,
                "type": "array"
              },
              "direction": {
                "description": "Sort direction (default \"desc\").",
                "enum": [
                  "asc",
                  "desc"
                ],
                "type": "string"
              },
              "exitAvailableOnly": {
                "description": "Only pools with evidence that withdrawals are available.",
                "type": "boolean"
              },
              "freshness": {
                "description": "Data age rule. \"retrieved\" (default): retrieved in the latest update (or within maxAgeMinutes). \"observed\": the source must state when it measured the rate. \"any\": include old quotes.",
                "enum": [
                  "retrieved",
                  "observed",
                  "any"
                ],
                "type": "string"
              },
              "maxAgeMinutes": {
                "description": "Maximum data age in minutes for the freshness rule. Default: the latest update, so data counts until the next scheduled update is overdue (the result notes give the current limit; 60 is read as this default). A number can only shorten that window. To include older quotes use freshness \"any\".",
                "maximum": 10080,
                "minimum": 1,
                "type": "number"
              },
              "maxApy": {
                "description": "Maximum total APY. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "maxBaseApy": {
                "description": "Maximum base APY. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "maxRewardApy": {
                "description": "Maximum reward-token APY, e.g. 0 for pools paying no reward tokens. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "maxTvlUsd": {
                "description": "Maximum total value locked in USD.",
                "maximum": 1000000000000000,
                "minimum": 0,
                "type": "number"
              },
              "minApy": {
                "description": "Minimum total APY. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "minBaseApy": {
                "description": "Minimum base APY (organic yield, excluding reward tokens). A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "minCoverage": {
                "description": "Minimum share (0-100) of assessment checks with evidence.",
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "minRewardApy": {
                "description": "Minimum reward-token APY. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "minScore": {
                "description": "Minimum experimental assessment score 0-100. Few pools have reviewed evidence, so this usually returns nothing.",
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "minTvlUsd": {
                "description": "Minimum total value locked in USD. Defaults to 100,000 on this server; pass 0 to include tiny pools.",
                "maximum": 1000000000000000,
                "minimum": 0,
                "type": "number"
              },
              "protocols": {
                "description": "Protocol slugs (case-insensitive exact match), e.g. [\"aave-v3\",\"morpho-blue\",\"compound-v3\"]. Use search for partial names.",
                "items": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "maxItems": 200,
                "type": "array"
              },
              "providers": {
                "description": "Data feed: \"pool-feed\" (lending, liquidity and staking pools) or \"vault-feed\" (auto-compounding vaults).",
                "items": {
                  "enum": [
                    "pool-feed",
                    "vault-feed"
                  ],
                  "type": "string"
                },
                "maxItems": 2,
                "type": "array"
              },
              "search": {
                "description": "Words that must all appear in the pool symbol, protocol, chain, market label or token address, e.g. \"usdc\", \"steth\", \"aave usdt\".",
                "maxLength": 200,
                "type": "string"
              },
              "singleAssetOnly": {
                "description": "Only single-asset pools (no LP pairs, so no impermanent loss from a pair).",
                "type": "boolean"
              },
              "sort": {
                "description": "Sort field. Default \"tvl\" (largest pools first); use \"apy\" for the highest quoted APY first.",
                "enum": [
                  "apy",
                  "tvl",
                  "base",
                  "reward",
                  "name"
                ],
                "type": "string"
              },
              "stablecoinOnly": {
                "description": "Only pools whose assets are all recognised stablecoins (single or pairs). Labels only; says nothing about peg safety.",
                "type": "boolean"
              },
              "stablecoinPairOnly": {
                "description": "Only pools pairing two or more recognised stablecoins, e.g. USDC-USDT.",
                "type": "boolean"
              },
              "strategies": {
                "description": "Pool type: lending markets, vaults, liquidity (DEX LP) pools or staking.",
                "items": {
                  "enum": [
                    "lending",
                    "vault",
                    "liquidity",
                    "staking",
                    "unknown"
                  ],
                  "type": "string"
                },
                "maxItems": 5,
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "name": "search_pools"
    },
    {
      "description": "Market overview for any filter: number of pools, total TVL, median, middle-half and TVL-weighted APY, grouped by chain (default), protocol or strategy, with the largest pool in each group. Rates in filters are fractions (0.05 = 5%).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "groupBy": {
            "default": "chain",
            "description": "Break the statistics down by chain (default), protocol or strategy, or \"none\" for one overall row.",
            "enum": [
              "chain",
              "protocol",
              "strategy",
              "none"
            ],
            "type": "string"
          },
          "query": {
            "additionalProperties": false,
            "description": "Pool filters (token, chain, protocol, strategy, APY, TVL, freshness), e.g. {\"search\":\"usdc\",\"strategies\":[\"lending\"]}. Defaults to pools with at least $100K TVL.",
            "properties": {
              "chains": {
                "description": "Chain names (case-insensitive exact match), e.g. [\"Ethereum\",\"Base\",\"Arbitrum\",\"Solana\"].",
                "items": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "maxItems": 200,
                "type": "array"
              },
              "direction": {
                "description": "Sort direction (default \"desc\").",
                "enum": [
                  "asc",
                  "desc"
                ],
                "type": "string"
              },
              "exitAvailableOnly": {
                "description": "Only pools with evidence that withdrawals are available.",
                "type": "boolean"
              },
              "freshness": {
                "description": "Data age rule. \"retrieved\" (default): retrieved in the latest update (or within maxAgeMinutes). \"observed\": the source must state when it measured the rate. \"any\": include old quotes.",
                "enum": [
                  "retrieved",
                  "observed",
                  "any"
                ],
                "type": "string"
              },
              "maxAgeMinutes": {
                "description": "Maximum data age in minutes for the freshness rule. Default: the latest update, so data counts until the next scheduled update is overdue (the result notes give the current limit; 60 is read as this default). A number can only shorten that window. To include older quotes use freshness \"any\".",
                "maximum": 10080,
                "minimum": 1,
                "type": "number"
              },
              "maxApy": {
                "description": "Maximum total APY. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "maxBaseApy": {
                "description": "Maximum base APY. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "maxRewardApy": {
                "description": "Maximum reward-token APY, e.g. 0 for pools paying no reward tokens. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "maxTvlUsd": {
                "description": "Maximum total value locked in USD.",
                "maximum": 1000000000000000,
                "minimum": 0,
                "type": "number"
              },
              "minApy": {
                "description": "Minimum total APY. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "minBaseApy": {
                "description": "Minimum base APY (organic yield, excluding reward tokens). A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "minCoverage": {
                "description": "Minimum share (0-100) of assessment checks with evidence.",
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "minRewardApy": {
                "description": "Minimum reward-token APY. A fraction, not a percentage: 0.05 means 5%, 0.5 means 50%.",
                "maximum": 1000,
                "minimum": -1,
                "type": "number"
              },
              "minScore": {
                "description": "Minimum experimental assessment score 0-100. Few pools have reviewed evidence, so this usually returns nothing.",
                "maximum": 100,
                "minimum": 0,
                "type": "number"
              },
              "minTvlUsd": {
                "description": "Minimum total value locked in USD. Defaults to 100,000 on this server; pass 0 to include tiny pools.",
                "maximum": 1000000000000000,
                "minimum": 0,
                "type": "number"
              },
              "protocols": {
                "description": "Protocol slugs (case-insensitive exact match), e.g. [\"aave-v3\",\"morpho-blue\",\"compound-v3\"]. Use search for partial names.",
                "items": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                },
                "maxItems": 200,
                "type": "array"
              },
              "providers": {
                "description": "Data feed: \"pool-feed\" (lending, liquidity and staking pools) or \"vault-feed\" (auto-compounding vaults).",
                "items": {
                  "enum": [
                    "pool-feed",
                    "vault-feed"
                  ],
                  "type": "string"
                },
                "maxItems": 2,
                "type": "array"
              },
              "search": {
                "description": "Words that must all appear in the pool symbol, protocol, chain, market label or token address, e.g. \"usdc\", \"steth\", \"aave usdt\".",
                "maxLength": 200,
                "type": "string"
              },
              "singleAssetOnly": {
                "description": "Only single-asset pools (no LP pairs, so no impermanent loss from a pair).",
                "type": "boolean"
              },
              "sort": {
                "description": "Sort field. Default \"tvl\" (largest pools first); use \"apy\" for the highest quoted APY first.",
                "enum": [
                  "apy",
                  "tvl",
                  "base",
                  "reward",
                  "name"
                ],
                "type": "string"
              },
              "stablecoinOnly": {
                "description": "Only pools whose assets are all recognised stablecoins (single or pairs). Labels only; says nothing about peg safety.",
                "type": "boolean"
              },
              "stablecoinPairOnly": {
                "description": "Only pools pairing two or more recognised stablecoins, e.g. USDC-USDT.",
                "type": "boolean"
              },
              "strategies": {
                "description": "Pool type: lending markets, vaults, liquidity (DEX LP) pools or staking.",
                "items": {
                  "enum": [
                    "lending",
                    "vault",
                    "liquidity",
                    "staking",
                    "unknown"
                  ],
                  "type": "string"
                },
                "maxItems": 5,
                "type": "array"
              }
            },
            "type": "object"
          },
          "topGroups": {
            "default": 10,
            "description": "How many groups to return, largest TVL first (default 10).",
            "maximum": 25,
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "summarize_yields"
    }
  ]
}

What the leaf hashes

{"body":"9c8a407bd46f1a3ff85150d80c9cfc4e094e09595f253c80cca2782791d832ab","id":563231,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793137656464313,"prev":null,"subject":"30f099cf-af42-41db-80d2-4053f384db15","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).

  1. 0xef67b4707e3bf6e8e0282669334f31496fc83f6fd936797f496ec0d5e9f47896
  2. 0x6d5d4e7dec55a5a8ede800bc5f2d9d9e9f580adc8a1e88a917cde517bd60ae1e
  3. 0x7548f8b372d9ceba75b16b8edd0f0827ba82fe8444568df23bc5cb49a5215f40
  4. 0xc2d9a424736dabf251578e1401e4a47a80c8dfbfb07bac337664e91cc76a0807
  5. 0x77f6e5302a15b8efb370532cdb6ac9e8e242f73b0b16f7f17ec9196112fe0d2c
  6. 0xdb0d920f26390b32f496d4d5d25436f96971ec7c948eb8a4cd8636b5df04058a
  7. 0xf2f901d07f72703718f95b11c760d855460e5e86ca38b7ae2c5831450278d331
  8. 0xc480e77bed9a492d146c23e72ecfe954d0ae1ad973a3d9b550a2b281cd5e5202
  9. 0x930b1fcfbe4599560c2ba785ea038c4ecb71dbfac328de203327705d7df6ca65
  10. 0xa2f7ee67cd3d18eb6a574f673a6de5baa7d1c805f36fc95b0d45b03af8e8f907
  11. 0x1b4399bae757271424da8a4da03b907adf56af6574a865598cf68ad834ce7e01
  12. 0xc0448a83784154aec794ac7a249e46b6f618529dfd246ef492240c5d9b62d921
  13. 0xe0ddf3e1c8349b7fe55d4b2a6864486a77de3e3c0e371df44d69aeb837cfd79c
  14. 0xce1471491ffb52101d7cd9884cca0fb37a9496f6e8250375054907d24a35d04f
  15. 0x56f7109d4cde42492651beb1237c13cdcbf95e6fee2b2482391a2388e04c4629
  16. 0x8745bd887f5ce9f7a49558fd2b04cdcd97a05ea9f8a23f62d0e80cb13d328b0f
  17. 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON