addrbookFor publishers
← The evidence ledger

Evidence row 570638

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 9dd47681-6f8c-457c-b525-8cd01eeb8cc1
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
08ae1d5c5d161bcd6c0c3f10f74b0572401076775234cfe687bdd7e98428eca6
Leaf
0x1a3e344d072199f6af6b97035410aa5ef95d36f2a385d1334560fcefb93db75c

What was observed

{
  "count": 21,
  "tools": [
    {
      "description": "Follow a dataset by id (from search_catalog). The user gets alerts when it updates. Respects the plan's watchlist limit.",
      "inputSchema": {
        "properties": {
          "dataset_id": {
            "description": "Dataset id (main.id) from search_catalog.",
            "type": "integer"
          }
        },
        "required": [
          "dataset_id"
        ],
        "type": "object"
      },
      "name": "add_to_watchlist"
    },
    {
      "description": "Follow up to 100 datasets in one call. Skips duplicates and stops at the plan limit (reported in skipped_limit).",
      "inputSchema": {
        "properties": {
          "dataset_ids": {
            "description": "Dataset ids (main.id).",
            "items": {
              "type": "integer"
            },
            "type": "array"
          }
        },
        "required": [
          "dataset_ids"
        ],
        "type": "object"
      },
      "name": "add_watchlist_batch"
    },
    {
      "description": "Create a REST API key (mon_…) for /api endpoints. The raw key is returned once. Limit: 3 (Essential) / 10 (Pro).",
      "inputSchema": {
        "properties": {
          "name": {
            "description": "Label (max 100 chars).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "create_api_key"
    },
    {
      "description": "Create another MCP key (mcpk_…), e.g. for a second client. The raw key is returned once.",
      "inputSchema": {
        "properties": {
          "name": {
            "description": "Label (max 100 chars).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "create_mcp_key"
    },
    {
      "description": "Revoke a REST API key by id. The last remaining key cannot be deleted.",
      "inputSchema": {
        "properties": {
          "key_id": {
            "description": "Key id (uuid) from the list call.",
            "type": "string"
          }
        },
        "required": [
          "key_id"
        ],
        "type": "object"
      },
      "name": "delete_api_key"
    },
    {
      "description": "Revoke an MCP key by id. The key used for the current session cannot be revoked here.",
      "inputSchema": {
        "properties": {
          "key_id": {
            "description": "Key id (uuid) from the list call.",
            "type": "string"
          }
        },
        "required": [
          "key_id"
        ],
        "type": "object"
      },
      "name": "delete_mcp_key"
    },
    {
      "description": "Run a read-only SELECT (or WITH … SELECT) against tables main and data only. Use after search_catalog + inspect_dataset to pull the time series for a known data.id / main_id.",
      "inputSchema": {
        "properties": {
          "query": {
            "description": "SQL SELECT against main / data only.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "execute_sql"
    },
    {
      "description": "Return a CSV download URL for a dataset, optionally filtered by countries and dimension values (dim1…dim8 from inspect_dataset).",
      "inputSchema": {
        "properties": {
          "countries": {
            "description": "Country names, e.g. ['Poland','Germany'].",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dataset_id": {
            "description": "Dataset id (main.id) from search_catalog.",
            "type": "integer"
          },
          "dimensions": {
            "description": "Dimension filters, e.g. {\"dim1\": [\"Annual\"], \"dim2\": [\"Percentage\"]}.",
            "type": "object"
          }
        },
        "required": [
          "dataset_id"
        ],
        "type": "object"
      },
      "name": "export_dataset"
    },
    {
      "description": "Get one dataset metadata row from main by id (includes dimensions, default_view, geos).",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "Dataset id (main.id).",
            "type": "integer"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "get_dataset"
    },
    {
      "description": "Current plan of the key owner: name, status, period end and limits (API/day, MCP/month, watchlist, API keys).",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_plan"
    },
    {
      "description": "MCP queries this billing period, REST API requests today and watchlist slots — used, limit, remaining.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_usage"
    },
    {
      "description": "Peek one dataset by main.id: default slice, whether a country is in the series, dataId, and the last few values. Uses indexed main_id lookup — do not scan the data table yourself for discovery.",
      "inputSchema": {
        "properties": {
          "country": {
            "description": "Optional country to resolve in the format header (e.g. 'Germany').",
            "type": "string"
          },
          "id": {
            "description": "Dataset id (main.id) from search_catalog.",
            "type": "integer"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "inspect_dataset"
    },
    {
      "description": "Active REST API keys (mon_…) of the account: id, name, prefix, created/last used.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "list_api_keys"
    },
    {
      "description": "Active MCP keys (mcpk_…). The key used for this session is marked current=true.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "list_mcp_keys"
    },
    {
      "description": "List Monitly plans (Essential, Pro, Enterprise) with prices and limits.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "list_plans"
    },
    {
      "description": "Datasets the user follows (watchlist) with source, latest period and alert status. Paginate with limit/offset.",
      "inputSchema": {
        "properties": {
          "limit": {
            "description": "Max rows (default 20).",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "offset": {
            "description": "Pagination offset (default 0).",
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "list_watchlist"
    },
    {
      "description": "Unfollow a dataset by id.",
      "inputSchema": {
        "properties": {
          "dataset_id": {
            "description": "Dataset id (main.id) from search_catalog.",
            "type": "integer"
          }
        },
        "required": [
          "dataset_id"
        ],
        "type": "object"
      },
      "name": "remove_from_watchlist"
    },
    {
      "description": "Find statistical datasets in the catalog (Eurostat, World Bank, OECD, etc.). Index-backed hybrid search (name/code + embeddings). Optional country and source_name filters. Use this instead of SELECT … FROM main ILIKE. Returns compact cards, not series values.",
      "inputSchema": {
        "properties": {
          "country": {
            "description": "Optional country name to prefer datasets that include this geo (e.g. 'Germany').",
            "type": "string"
          },
          "limit": {
            "description": "Max cards (default 8, max 16).",
            "maximum": 16,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "description": "What to find, e.g. 'GDP annual current prices' or 'unemployment rate'.",
            "type": "string"
          },
          "source_name": {
            "description": "Optional source filter, e.g. 'Eurostat', 'World Bank' (World Development Indicators), 'OECD', 'IMF'.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_catalog"
    },
    {
      "description": "Alias of search_catalog. Find statistical datasets by query, optional country and source_name.",
      "inputSchema": {
        "properties": {
          "country": {
            "description": "Optional country name (e.g. 'Germany').",
            "type": "string"
          },
          "limit": {
            "description": "Max cards (default 8, max 16).",
            "maximum": 16,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "description": "What to find, e.g. 'GDP annual current prices'.",
            "type": "string"
          },
          "source_name": {
            "description": "Optional source filter, e.g. 'Eurostat'.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_datasets"
    },
    {
      "description": "action='get' returns e-mail/Slack alert settings. action='set' changes email_notifications / slack_notifications, or turns alerts for one followed dataset on/off (dataset_id + dataset_notifications).",
      "inputSchema": {
        "properties": {
          "action": {
            "description": "'get' or 'set'.",
            "enum": [
              "get",
              "set"
            ],
            "type": "string"
          },
          "dataset_id": {
            "description": "Followed dataset to change.",
            "type": "integer"
          },
          "dataset_notifications": {
            "description": "Alerts for that dataset on/off.",
            "type": "boolean"
          },
          "email_notifications": {
            "description": "E-mail alerts for followed datasets.",
            "type": "boolean"
          },
          "slack_notifications": {
            "description": "Slack alerts (webhook is configured in Settings).",
            "type": "boolean"
          }
        },
        "required": [
          "action"
        ],
        "type": "object"
      },
      "name": "set_notification_preferences"
    },
    {
      "description": "Create a Stripe Checkout session for the Pro plan and return checkout_url. Open it in the browser for the user to pay.",
      "inputSchema": {
        "properties": {
          "plan_id": {
            "description": "Target plan (default 'pro').",
            "enum": [
              "pro"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "upgrade_plan"
    }
  ]
}

What the leaf hashes

{"body":"08ae1d5c5d161bcd6c0c3f10f74b0572401076775234cfe687bdd7e98428eca6","id":570638,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793139851302318,"prev":null,"subject":"9dd47681-6f8c-457c-b525-8cd01eeb8cc1","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. 0x1a3e1d2802b562ab0643a2efc4ed496b6b1892f6c1dd81647bf911de601d8a34
  2. 0xf22520d4a9224d2c526f6cf9350dbc2d86ab4abdb4c54489b230709c105b2de5
  3. 0x69ff262251fbcc6bf2727fc2b99615521654515b0ae4d725ab25fa52c5585c07
  4. 0xd5cff447aa6f516807752f40ad4625fc9ad5b5a64c181bfbec4ecfa10c70916a
  5. 0xc258db91948f3844d2bdef898b445753a2d5d5905dd4aeb23bae238b92c6f09f
  6. 0x63a137fb440e5e44d95bb84306a9820d361adbabbd0ffa685b2c4f42dfc75701
  7. 0xbdab67fd9cd57ac8e1eff2e7e70f376efa106f7abdc74d135551868d1ac216f2
  8. 0xe39ad471ba57ee0a8698bbc92c43eb79ebc38e464d35be2a6540b50aeaf5a05b
  9. 0xd0c9bbcbedf93dbd7738df5e71de22bb7e52e522a790d0aaab2d180665c2598b
  10. 0x18dcc8ec5d08dda2711d07822e8776945073f8a3a9911b47a3fd93f1d5a1b403
  11. 0x939c306fccf6f9ecd4e13859e2994a9f95dde80f56072b4b7be22ed4cc49b483
  12. 0x864874d7fe156494acebcd974fb0ea64b6d7d6ef442b90a07ce8adbc57f7d75b
  13. 0xca0b37bb3b043ccf0f24c50fccd9c2f22b7e5290df49886008fc2ff55380fdd1
  14. 0x2064e3a2b01d0d12d5079bf720a0d0125e9703c55e92de54ad40c302469ec047
  15. 0x6913cb48392acb8dc5c940dcdb6e6fc889d544f85dff11da249551a5f027e688
  16. 0x518b93854db03dc9fc938883abf30da6eaae5ae0d4336903968fd32a7df8c71b
  17. 0x22c1fb9487ee0b9732fa017a0cc321eb27a60c08450d112f755089796e12cb1c
  18. 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON