addrbookFor publishers
← The evidence ledger

Evidence row 276041

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint a82a2c5d-290e-406a-aff4-ed5efd6864e7
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
6d5ec98ef6fde8e6fc22a6cc1631ce885952659b171098a15d3138b82983feac
Leaf
0xc083c4da1165a9b9d0bad6aafdd2b6cc1a46c5e234acd04f5bf2b3120d0a193a

What was observed

{
  "count": 5,
  "tools": [
    {
      "description": "Call a ReefAPI engine action — POST /<engine>/v1/<action> with `params`. Returns the uniform\n    { ok, data, meta, error } envelope. Get param names from get_engine_schema first. Needs YOUR\n    ReefAPI key. The local server reads REEFAPI_KEY; the hosted server accepts an OAuth access token\n    (connect with OAuth and paste your key once on the consent screen — this is what ChatGPT uses),\n    an `Authorization: Bearer <key>` header, `x-reefapi-key`, or the key in the connection URL\n    (`https://api.reefapi.com/mcp?key=<key>`). Get a key at https://reefapi.com. Failed calls cost no\n    credits.",
      "inputSchema": {
        "properties": {
          "action": {
            "description": "The action to run on that engine (e.g. 'search'), as listed by get_engine_schema.",
            "title": "Action",
            "type": "string"
          },
          "engine": {
            "description": "The engine's name to call (e.g. 'zillow'), as returned by search_engines or get_catalog.",
            "title": "Engine",
            "type": "string"
          },
          "params": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "The action's parameters as a JSON object, e.g. {'query': 'NYC'}. Get the valid param names and values from get_action_schema first. Omit or pass null for actions that take none.",
            "title": "Params"
          }
        },
        "required": [
          "engine",
          "action"
        ],
        "title": "call_engineArguments",
        "type": "object"
      },
      "name": "call_engine"
    },
    {
      "description": "FULL detail for ONE engine action: every parameter (type, required, description, allowed_values\n    dropdown, default, example, min/max), what it returns, pricing, and a ready-to-run example_params.\n    Call this right before call_engine so you send valid params — invalid enum values are rejected with\n    the allowed list.",
      "inputSchema": {
        "properties": {
          "action": {
            "description": "The action's name on that engine (from get_engine_schema, e.g. 'search'). Returns the full param detail (type, required, allowed_values, default, example, min/max), what it returns, pricing, and ready-to-run example_params.",
            "title": "Action",
            "type": "string"
          },
          "engine": {
            "description": "The engine's name (e.g. 'zillow'), as returned by search_engines or get_catalog.",
            "title": "Engine",
            "type": "string"
          }
        },
        "required": [
          "engine",
          "action"
        ],
        "title": "get_action_schemaArguments",
        "type": "object"
      },
      "name": "get_action_schema"
    },
    {
      "description": "The FULL ReefAPI catalog — EVERY engine with its one-line title, grouped by category. This is the\n    whole menu (≈ a few thousand tokens); SCAN IT AND PICK THE BEST ENGINE YOURSELF. You are an LLM, so\n    you match the user's intent semantically — across ANY language, typo, or phrasing — far better than a\n    keyword search can. Use this whenever search_engines didn't surface the right engine (or to be sure\n    you didn't miss a better one). After you pick: get_engine_schema(engine) -> get_action_schema -> call_engine.",
      "inputSchema": {
        "properties": {},
        "title": "get_catalogArguments",
        "type": "object"
      },
      "name": "get_catalog"
    },
    {
      "description": "COMPACT overview of ONE engine: every action with its description, required params and what it\n    returns — but NOT the full param detail (kept lean so a 90-action engine stays token-cheap). Call\n    this after search_engines to pick the right ACTION, then get_action_schema(engine, action) for that\n    action's full params before call_engine.",
      "inputSchema": {
        "properties": {
          "engine": {
            "description": "The engine's name (the `engine`/`name` field from search_engines or get_catalog, e.g. 'zillow', 'amazon'). Returns each action with its description, required params, and what it returns.",
            "title": "Engine",
            "type": "string"
          }
        },
        "required": [
          "engine"
        ],
        "title": "get_engine_schemaArguments",
        "type": "object"
      },
      "name": "get_engine_schema"
    },
    {
      "description": "Find the right ReefAPI engine for a task — pass ENGLISH keywords or a short natural-language\n    use-case (\"detect a website's tech stack\", \"company reviews\", \"check a package for vulnerabilities\",\n    \"is this domain available\"). The catalog is in English: if the end-user asked in another language,\n    translate their INTENT into English keywords first (you are an LLM — do this inline). Ranks engines by\n    how well the query matches each engine's name/title/category/ACTION descriptions (stem-matched, so\n    plurals/word-forms still hit). Empty query = list all. Returns name/title/category/actions + match\n    score. Call this FIRST, then get_engine_schema(engine) to pick an action. This is a fast keyword\n    pre-filter — if the right engine isn't in the results (or you want to be sure), call get_catalog and\n    pick from the full list YOURSELF (you semantically match any language/phrasing better than keywords).",
      "inputSchema": {
        "properties": {
          "query": {
            "default": "",
            "description": "English keywords or a short use-case, e.g. 'company reviews', 'detect a website's tech stack', or 'is this domain available'. Translate non-English intent to English first. Empty = list all engines.",
            "title": "Query",
            "type": "string"
          }
        },
        "title": "search_enginesArguments",
        "type": "object"
      },
      "name": "search_engines"
    }
  ]
}

What the leaf hashes

{"body":"6d5ec98ef6fde8e6fc22a6cc1631ce885952659b171098a15d3138b82983feac","id":276041,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793041009743084,"prev":null,"subject":"a82a2c5d-290e-406a-aff4-ed5efd6864e7","subject_kind":"endpoint"}

Proof

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

  1. 0xc083e141ff114c80f5fe534f7052c922fe9b1e524076092117c53eb05853f587
  2. 0xc88e58bde92537568e0790f5ab31a477cbc04c124a37877b8ccf54c80475fa23
  3. 0x324d325b0cc66c51737616b5b2f6843f3e2483440a729065a34c82726cd9e36f
  4. 0xfe736a31260985b4713d5d5c4e232469bb0c0a5126bebc5af1919a6008ec725b
  5. 0x1d2aa0096e2ec182a8f23bb0bd33341d19f77062ad49075c3513e1f5d90cbbab
  6. 0xac37df36a31a98d96501b38b493f440ccaab63c1b8a9f84bbc90d785467f2dfb
  7. 0x254861ca77c7b2b3defbea7e2210a8a44a469cc3ba6942e0e07d208a8cd9dcf6
  8. 0xd37340f1b1301d529845c282e3c8b82d559485270f3ef1b2970a1fbdf7da1ca8
  9. 0x0a81f10f7313b4a6fa9317dd0e554bee65423e60826e4aceb124208492ba5ad9
  10. 0x343d0268ee761fc75a6a2e122bfc9b5163976d93349116a894c382a544ac7916
  11. 0x1ee01b339a84463f4b1d9b89cf58bd877e8b7f91bd1aa7bb362bc554f4a1cae7
  12. 0xc520305226daa0caf1c2416854f726ec072c950c1903497b2a1e88b0c6f406da
  13. 0x96eae331a78c1c9248bc58130ff83d31b884760a51fe7191de2a39105ae7c072
  14. 0xdbe2e8dd65ea1248b2936612538f18268abd5cf27ebdab3737694571ad496004
  15. 0x9f68b5e15459cb62b8c0cd4c124fa61c74147b4a5755a200fbecd21a581635d1
  16. 0x123ec8bee20ddc55223eeef5a4f4d6c4b6416515adbb911c56759f5cde56e452
  17. 0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40
  18. 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON