addrbookFor publishers
← The evidence ledger

Evidence row 577288

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 1b46af2a-25b8-4cc1-8df8-fa18ba4054ff
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
713ddd500ecc6fdfcdeef8935bdc170d15a18545d3cef6c331541811c244d995
Leaf
0x53b9cbf23f82ffda1e504ff52934c64bda91e9ef8e1f27d43d66acc29b85ddf5

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 all available context souls.",
      "inputSchema": {
        "properties": {},
        "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. Returns matching lines only (token-efficient).",
      "inputSchema": {
        "properties": {
          "query": {
            "description": "Text to search for",
            "type": "string"
          },
          "soul": {
            "description": "Specific soul (optional, searches all 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":"713ddd500ecc6fdfcdeef8935bdc170d15a18545d3cef6c331541811c244d995","id":577288,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793142555660198,"prev":null,"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 (273461 rows).

  1. 0x53ba069753f3f38a3d7ed97f7eec4cfa92cab7e18048457389d6a6826575320f
  2. 0xdb7ddeef9ecfeb3a3e5acd99acffd81eeb709995fa4731cfa82ae77221f18a0c
  3. 0x0c8beffad1c28ba6a9330c36ad2abe61e8881c5e66b5d3e24fe4fac886be862f
  4. 0x5cb5c97d7506897661f53eb2b2df068445aa6082a06fe17fffe457c28e76c8dc
  5. 0xf4cc78f85b9f8d13601106f2c6b82a21f62a090ba20111efa4d727ab1900dc6e
  6. 0xff8183ff22bc85ff89ba340e21704db2ab4b410a521b32d2ac732f884d061863
  7. 0xc737ad93ebea0550d72e3c7fc31c35d97930942831a6303e609695272ac033ce
  8. 0x5b3edbded7d86a541790443ebb23eca8150404eb502b5e06a4684e58a4f1b354
  9. 0x6d2e34f141f5fcdb2843d218ea314b9b126336961d0e2dcec3c6ac0f01bfb743
  10. 0x22573d9b75262eb50d649722235079bebf5a524ae094ebf39c4458d8898f7213
  11. 0x64281736f78eb01af3a70566cf7e4fb98158dc598b5edcaf617b2e0560a28c6d
  12. 0xf8587b476357dd9dd2bdcf36df59b8f5ada3a7d06a3872295a01a0dd6b9e36d1
  13. 0x996f3d89f9508378f3c194c9828b500725dd599c52fd040349190982338d96f2
  14. 0x9ea0c6a53f80a30b6f13671109f98a000cf98e581875129f4be4b57131d06364
  15. 0xb78ea6a255dd06e2f402a1a733bca392fa6243920bcba95e8b80bdfc6ce5f553
  16. 0x3ed50f053eca72dfd3a9d45a11935240bfe691e57835c367ddebe2cbc49efe9d
  17. 0x0e01aa9525097570a6edaf32bfc959de57bf5c24317cf10c0716affea85ca60d
  18. 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON