← 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).
- 0x26b15413f3f363c907171c6ea8d43e981417820a88760f6d54bc543ad458e23b
- 0xeff0a22ddb6e6087bcc2eec013304dcd79ecec2628c1d55cdebee99f801b91bd
- 0xe89805ad4f61f342e81b67d803a4696b2be192c54de42f2a7def285dad94eed8
- 0xf12349c86a5c5f127ba4099b8a0db684516fa8472f5fdc1e86d6fdaf5819f205
- 0x651be84f82843b097d1b8bd08dbbb95c1d61c836ef99dc3218260d28a0db7aa2
- 0x384b14d8c822411cdb5f932839847f5400687654e51b588b5db9b1e81a38b1af
- 0x9468c266f069549e9f08488ab279a114c36bc66c876040ff79d755f43fc4741a
- 0x7855694775cd29b4e8549ee045aad340b055ed42c3b6585f2d1f2fe301b1e328
- 0x0d099decdb7ba63d76032e8a1164c8779c75b327279efc0cb92ebbd431098767
- 0x687868f09d6c60bf1c3e8974e2dd3acde9cafbfea1cd678d48776cb79ed663d4
- 0x4c816c3d970fc183abbc44fc68623cb4801ca2fe829bbfc4d2b3bc4cc9ee7cd3
- 0x5a2a95a10b6e84c5869da530c7764660122fea4be0af8e4fdd3d823277185b16
- 0xf881b2fb6613a30f4570fa246abbc6d3a5224df3e6758a80cf8c77228624523a
- 0x492a5126036ee8aafa91dc608819dbc168a2d5480dc97bd15c3ed39b7796b0bd
- 0x7c0ecb381cdd978337dc5ff40a1a1db43aaef42628e17d5c85ef5bf173d90fbe
- 0x0009f1567d5c3f52d167d3c95d53c71fb66114fc26e83679b452d6db2f1d0b95
- 0x0cdf39687556f127f9de2f03ec7df8e10e613bf9487760cbe3eaaaa02d8d48b4
- 0xa9caf228b42660818160afb416ff04cb014f57c4d8ee75ea3452fb76c3d8c645
- 0xf72fe7c4860b9addb17aac4a00b8afc2f8085836173f10f31697c3d192df119b
- Day root
- 0x9f0215efb0252701dc86d5600ce95f276cccc716759bf112525ae863f698d128
- Chained
- 0xc54ddff800630c6cd9656f99e7d6a61adce99bf1cea37121600598b0a9a720d2
- Published
- On Arc Testnet, block 70942081: 0x88f612ad94ca63af4e4e9faab9f34b665b41f03828afac1571ad013cc62bba94