addrbookFor publishers
← The evidence ledger

Evidence row 3355209

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 1b46af2a-25b8-4cc1-8df8-fa18ba4054ff
Recorded
Previous row
#577288
Body SHA-256
3efcc54a4e6ab8067eb475726ab583ddf6c9daf27b46c7d25dcc562926dd4311
Leaf
0x26b16e0bc16c6a0b2a3716b6eb9933f98208eb3abcaab2398bf621d74ad0d80d

What was observed

{
  "count": 20,
  "tools": [
    {
      "description": "Determine if a topic needs FULL, DELTA, or X-DELTA soul.",
      "inputSchema": {
        "properties": {
          "topic": {
            "description": "Topic to check",
            "type": "string"
          }
        },
        "required": [
          "topic"
        ],
        "type": "object"
      },
      "name": "delta_check"
    },
    {
      "description": "One-call composite — returns score, tier-ready, valid, and engine identifier. Two WASM calls, sub-millisecond total.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "Raw .faf YAML content to analyze.",
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "faf_analyze"
    },
    {
      "description": "Print a business card for an agent from its own name, description, colour and picture. Returns the agent's .fafa (FAF Agent file) and a link that opens its card. Nothing is stored: the .fafa travels in the link. The card says \"self-declared\" because nothing is checked against a repo.",
      "inputSchema": {
        "properties": {
          "accent": {
            "description": "The card colour as a hex, e.g. \"#7c3aed\". Optional; none means ink (black or white).",
            "type": "string"
          },
          "description": {
            "description": "What the agent does, in one line, up to 140 characters. Optional.",
            "type": "string"
          },
          "icon": {
            "description": "An https link to a picture for the logo spot, e.g. \"https://example.com/me.png\". Optional; none means the monogram. A square PNG (256 x 256, transparent background) or an SVG looks best.",
            "type": "string"
          },
          "name": {
            "description": "The agent's name, up to 100 characters.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "faf_business_card"
    },
    {
      "description": "Phase III (FRC §7b) — semantic search over a Grok Collection at the edge, KV-cached (1h TTL). Returns matched chunks (content, score, file). Requires the XAI_API_KEY secret; composes with faf_section (structural) for hybrid retrieval. Handled env-aware in the MCP handler (needs the key + KV).",
      "inputSchema": {
        "properties": {
          "collection_id": {
            "description": "The Grok Collection id to search.",
            "type": "string"
          },
          "limit": {
            "description": "Max chunks to return (default 5).",
            "type": "number"
          },
          "query": {
            "description": "The search query.",
            "type": "string"
          }
        },
        "required": [
          "query",
          "collection_id"
        ],
        "type": "object"
      },
      "name": "faf_collections_search"
    },
    {
      "description": "Estimate token count for arbitrary content via the Zig WASM engine. Sub-millisecond, zero allocations. Useful for context-budget planning.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "Content to estimate tokens for.",
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "faf_estimate_tokens"
    },
    {
      "description": "Phase III (FRC) — pre-promotion quality gate. Scores .faf content (edge Mk4) + estimates tokens and returns a deterministic promote/hold verdict BEFORE it goes to a Grok Collection. Promote IFF score >= min_score AND tokens <= max_tokens (defaults 85/8000). Edge parity with the local gate; the hold-hint can't list empty slots at the edge.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "Raw .faf YAML content to gate.",
            "type": "string"
          },
          "max_tokens": {
            "description": "Maximum tokens to promote (default 8000).",
            "type": "number"
          },
          "min_score": {
            "description": "Minimum score to promote (default 85).",
            "type": "number"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "faf_gate"
    },
    {
      "description": "Resolve the FAF tier for a given numeric score. Returns the tier symbol (Trophy/Gold/Silver/Bronze/etc.) per the canonical tier-table.",
      "inputSchema": {
        "properties": {
          "score": {
            "description": "Numeric score 0-100.",
            "type": "number"
          }
        },
        "required": [
          "score"
        ],
        "type": "object"
      },
      "name": "faf_get_tier"
    },
    {
      "description": "Phase III (FRC) — query the durable .fafm model by type/tag/priority/text. Omit filters for a structured summary. .fafm is NOT scored: this SELECTS facts (provenance preserved), never grades them.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "Raw .fafm YAML content.",
            "type": "string"
          },
          "priority": {
            "description": "Filter by priority (e.g. \"critical\").",
            "type": "string"
          },
          "query": {
            "description": "Case-insensitive substring match on fact text.",
            "type": "string"
          },
          "tag": {
            "description": "Filter by a tag.",
            "type": "string"
          },
          "type": {
            "description": "Filter by fact type (e.g. \"feedback\").",
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "faf_memory"
    },
    {
      "description": "Takes raw content strings (`.faf`, `.fafm`, and optionally `package.json`/`CHANGELOG.md`/`README.md`) and runs deterministic drift + contradiction signals across the FAF substrate. Returns a structured `Recommendation` (recommend, severity, reason, summary) with `hints` containing the current `effective_policy` and `partial[]` for any stateful signals unavailable on the current surface. Light-lane execution (hosted) is WASM-pure with no filesystem access. Heavy-lane execution (local via bunx/rust-faf-mcp) has full FS + persisted state. Advisory only — never auto-fires.",
      "inputSchema": {
        "properties": {
          "changelog": {
            "description": "Raw CHANGELOG.md content. Enables changelog cross-stamp checks.",
            "type": "string"
          },
          "faf": {
            "description": "Raw .faf YAML content (project DNA). Required for any meaningful analysis.",
            "type": "string"
          },
          "fafm": {
            "description": "Raw .fafm YAML content (memory layer). Enables drift detection.",
            "type": "string"
          },
          "packageJson": {
            "description": "Raw package.json content. Enables version cross-stamp checks (.faf vs pkg).",
            "type": "string"
          },
          "readme": {
            "description": "Raw README.md content. Enables README arch-tree cross-stamp checks.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "faf_orchestrate_recommendation"
    },
    {
      "description": "Score .faf YAML content with the always-33 faf-kernel (WASM). Returns 0-100 (capped). The same score faf-cli and every FAF MCP give. Runs at the edge.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "Raw .faf YAML content. Souls with a [faf] section have it extracted automatically.",
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "faf_score"
    },
    {
      "description": "Phase III (FRC) — returns an EXACT, WHOLE .faf section by dotted path (e.g. \"stack\", \"human_context\"), structure preserved — the deterministic complement to blind chunking. Omit \"section\" to list every path.",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "Raw .faf YAML content.",
            "type": "string"
          },
          "section": {
            "description": "Dotted path to retrieve (e.g. \"stack.backend\"). Omit to list all paths.",
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "faf_section"
    },
    {
      "description": "Validate .faf YAML content: true if mission-ready (always-33 score of 100).",
      "inputSchema": {
        "properties": {
          "content": {
            "description": "Raw .faf YAML content to validate.",
            "type": "string"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "faf_validate"
    },
    {
      "description": "Generate a .faf file from any public GitHub repository WITHOUT cloning. Extracts 6 Ws from README, analyzes stack from languages and package.json, and generates Championship-grade AI context. Returns .faf content, quality score, and metadata.",
      "inputSchema": {
        "properties": {
          "repo": {
            "description": "GitHub repository URL or owner/repo format (e.g., \"facebook/react\" or \"https://github.com/facebook/react\")",
            "type": "string"
          }
        },
        "required": [
          "repo"
        ],
        "type": "object"
      },
      "name": "generate_faf_from_github"
    },
    {
      "description": "Fetch a context soul by name. Returns structured AI context.",
      "inputSchema": {
        "properties": {
          "soul": {
            "description": "Soul identifier (e.g., \"spacex\", \"wolfe\", \"grok\")",
            "type": "string"
          }
        },
        "required": [
          "soul"
        ],
        "type": "object"
      },
      "name": "get_soul"
    },
    {
      "description": "List context souls: showcase souls first, then claimed souls. Paged: pass the returned cursor for more.",
      "inputSchema": {
        "properties": {
          "cursor": {
            "description": "Cursor from the previous page",
            "type": "string"
          },
          "limit": {
            "description": "Souls per page (default 50, max 100)",
            "type": "number"
          }
        },
        "type": "object"
      },
      "name": "list_souls"
    },
    {
      "description": "List all unique tags used in a soul, with counts.",
      "inputSchema": {
        "properties": {
          "soul": {
            "description": "Soul identifier",
            "type": "string"
          }
        },
        "required": [
          "soul"
        ],
        "type": "object"
      },
      "name": "list_tags"
    },
    {
      "description": "Re-ground on .faf content — re-score with the always-33 faf-kernel (33 slots; slotignored slots drop out), report drift vs an optional baseline score, and return a stamped re-ground. The explicit re-grounding primitive for long sessions: drift → refresh → re-grounded. Built for Grok, by request.",
      "inputSchema": {
        "properties": {
          "baseline": {
            "description": "Optional last-known score (0-100). When provided, the drift delta (current - baseline) is reported.",
            "type": "number"
          },
          "content": {
            "description": "Raw .faf YAML content to re-ground on.",
            "type": "string"
          },
          "verbatim": {
            "description": "When true, return the full .faf content verbatim with the stamp. Default false (stamped delta + summary).",
            "type": "boolean"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "name": "refresh_faf"
    },
    {
      "description": "Find all entries in a soul with a specific tag.",
      "inputSchema": {
        "properties": {
          "soul": {
            "description": "Soul identifier",
            "type": "string"
          },
          "tag": {
            "description": "Tag to search for",
            "type": "string"
          }
        },
        "required": [
          "soul",
          "tag"
        ],
        "type": "object"
      },
      "name": "search_by_tag"
    },
    {
      "description": "Full-text search across souls (showcase first, then claimed souls; [private] sections are never searched). Returns matching lines only. Searches a page of souls per call: pass the returned cursor for more.",
      "inputSchema": {
        "properties": {
          "cursor": {
            "description": "Cursor from the previous call",
            "type": "string"
          },
          "limit": {
            "description": "Souls searched per call (default 25, max 50)",
            "type": "number"
          },
          "query": {
            "description": "Text to search for",
            "type": "string"
          },
          "soul": {
            "description": "Specific soul (optional, searches a page of all souls if omitted)",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_context"
    },
    {
      "description": "Discover tag patterns, co-occurrence, candidates, and merge suggestions across all namepoints. Optionally suggest tags for a specific handle.",
      "inputSchema": {
        "properties": {
          "handle": {
            "description": "Optional: suggest tags for this specific namepoint",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "tag_intel"
    }
  ]
}

What the leaf hashes

{"body":"3efcc54a4e6ab8067eb475726ab583ddf6c9daf27b46c7d25dcc562926dd4311","id":3355209,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793849622409575,"prev":577288,"subject":"1b46af2a-25b8-4cc1-8df8-fa18ba4054ff","subject_kind":"endpoint"}

Proof

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

  1. 0x26b15413f3f363c907171c6ea8d43e981417820a88760f6d54bc543ad458e23b
  2. 0xeff0a22ddb6e6087bcc2eec013304dcd79ecec2628c1d55cdebee99f801b91bd
  3. 0xe89805ad4f61f342e81b67d803a4696b2be192c54de42f2a7def285dad94eed8
  4. 0xf12349c86a5c5f127ba4099b8a0db684516fa8472f5fdc1e86d6fdaf5819f205
  5. 0x651be84f82843b097d1b8bd08dbbb95c1d61c836ef99dc3218260d28a0db7aa2
  6. 0x384b14d8c822411cdb5f932839847f5400687654e51b588b5db9b1e81a38b1af
  7. 0x9468c266f069549e9f08488ab279a114c36bc66c876040ff79d755f43fc4741a
  8. 0x7855694775cd29b4e8549ee045aad340b055ed42c3b6585f2d1f2fe301b1e328
  9. 0x0d099decdb7ba63d76032e8a1164c8779c75b327279efc0cb92ebbd431098767
  10. 0x687868f09d6c60bf1c3e8974e2dd3acde9cafbfea1cd678d48776cb79ed663d4
  11. 0x4c816c3d970fc183abbc44fc68623cb4801ca2fe829bbfc4d2b3bc4cc9ee7cd3
  12. 0x5a2a95a10b6e84c5869da530c7764660122fea4be0af8e4fdd3d823277185b16
  13. 0xf881b2fb6613a30f4570fa246abbc6d3a5224df3e6758a80cf8c77228624523a
  14. 0x492a5126036ee8aafa91dc608819dbc168a2d5480dc97bd15c3ed39b7796b0bd
  15. 0x7c0ecb381cdd978337dc5ff40a1a1db43aaef42628e17d5c85ef5bf173d90fbe
  16. 0x0009f1567d5c3f52d167d3c95d53c71fb66114fc26e83679b452d6db2f1d0b95
  17. 0x0cdf39687556f127f9de2f03ec7df8e10e613bf9487760cbe3eaaaa02d8d48b4
  18. 0xa9caf228b42660818160afb416ff04cb014f57c4d8ee75ea3452fb76c3d8c645
  19. 0xf72fe7c4860b9addb17aac4a00b8afc2f8085836173f10f31697c3d192df119b
Day root
0x9f0215efb0252701dc86d5600ce95f276cccc716759bf112525ae863f698d128
Chained
0xc54ddff800630c6cd9656f99e7d6a61adce99bf1cea37121600598b0a9a720d2
Published
On Arc Testnet, block 70942081: 0x88f612ad94ca63af4e4e9faab9f34b665b41f03828afac1571ad013cc62bba94

How to check it · This row as JSON