← 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).
- 0xef67b4707e3bf6e8e0282669334f31496fc83f6fd936797f496ec0d5e9f47896
- 0x6d5d4e7dec55a5a8ede800bc5f2d9d9e9f580adc8a1e88a917cde517bd60ae1e
- 0x7548f8b372d9ceba75b16b8edd0f0827ba82fe8444568df23bc5cb49a5215f40
- 0xc2d9a424736dabf251578e1401e4a47a80c8dfbfb07bac337664e91cc76a0807
- 0x77f6e5302a15b8efb370532cdb6ac9e8e242f73b0b16f7f17ec9196112fe0d2c
- 0xdb0d920f26390b32f496d4d5d25436f96971ec7c948eb8a4cd8636b5df04058a
- 0xf2f901d07f72703718f95b11c760d855460e5e86ca38b7ae2c5831450278d331
- 0xc480e77bed9a492d146c23e72ecfe954d0ae1ad973a3d9b550a2b281cd5e5202
- 0x930b1fcfbe4599560c2ba785ea038c4ecb71dbfac328de203327705d7df6ca65
- 0xa2f7ee67cd3d18eb6a574f673a6de5baa7d1c805f36fc95b0d45b03af8e8f907
- 0x1b4399bae757271424da8a4da03b907adf56af6574a865598cf68ad834ce7e01
- 0xc0448a83784154aec794ac7a249e46b6f618529dfd246ef492240c5d9b62d921
- 0xe0ddf3e1c8349b7fe55d4b2a6864486a77de3e3c0e371df44d69aeb837cfd79c
- 0xce1471491ffb52101d7cd9884cca0fb37a9496f6e8250375054907d24a35d04f
- 0x56f7109d4cde42492651beb1237c13cdcbf95e6fee2b2482391a2388e04c4629
- 0x8745bd887f5ce9f7a49558fd2b04cdcd97a05ea9f8a23f62d0e80cb13d328b0f
- 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
- 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
- 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
- Day root
- 0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
- Chained
- 0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
- Published
- On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4