{"id":3355209,"recorded_at":"2026-11-05T03:33:42.409738Z","observed_at":"2026-11-05T03:33:42.409575Z","subject_kind":"endpoint","subject":"1b46af2a-25b8-4cc1-8df8-fa18ba4054ff","kind":"mcp.tools","method":"probe.mcp/1","body":{"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"}]},"body_sha256":"3efcc54a4e6ab8067eb475726ab583ddf6c9daf27b46c7d25dcc562926dd4311","prev_id":577288,"leaf":"0x26b16e0bc16c6a0b2a3716b6eb9933f98208eb3abcaab2398bf621d74ad0d80d","leaf_text":"{\"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\"}","day":{"day":"2026-11-05","leaves":322504,"root":"0x9f0215efb0252701dc86d5600ce95f276cccc716759bf112525ae863f698d128","chained":"0xc54ddff800630c6cd9656f99e7d6a61adce99bf1cea37121600598b0a9a720d2","anchor_chain":"eip155:5042002","anchor_tx":"0x88f612ad94ca63af4e4e9faab9f34b665b41f03828afac1571ad013cc62bba94","anchor_block":70942081},"proof":["0x26b15413f3f363c907171c6ea8d43e981417820a88760f6d54bc543ad458e23b","0xeff0a22ddb6e6087bcc2eec013304dcd79ecec2628c1d55cdebee99f801b91bd","0xe89805ad4f61f342e81b67d803a4696b2be192c54de42f2a7def285dad94eed8","0xf12349c86a5c5f127ba4099b8a0db684516fa8472f5fdc1e86d6fdaf5819f205","0x651be84f82843b097d1b8bd08dbbb95c1d61c836ef99dc3218260d28a0db7aa2","0x384b14d8c822411cdb5f932839847f5400687654e51b588b5db9b1e81a38b1af","0x9468c266f069549e9f08488ab279a114c36bc66c876040ff79d755f43fc4741a","0x7855694775cd29b4e8549ee045aad340b055ed42c3b6585f2d1f2fe301b1e328","0x0d099decdb7ba63d76032e8a1164c8779c75b327279efc0cb92ebbd431098767","0x687868f09d6c60bf1c3e8974e2dd3acde9cafbfea1cd678d48776cb79ed663d4","0x4c816c3d970fc183abbc44fc68623cb4801ca2fe829bbfc4d2b3bc4cc9ee7cd3","0x5a2a95a10b6e84c5869da530c7764660122fea4be0af8e4fdd3d823277185b16","0xf881b2fb6613a30f4570fa246abbc6d3a5224df3e6758a80cf8c77228624523a","0x492a5126036ee8aafa91dc608819dbc168a2d5480dc97bd15c3ed39b7796b0bd","0x7c0ecb381cdd978337dc5ff40a1a1db43aaef42628e17d5c85ef5bf173d90fbe","0x0009f1567d5c3f52d167d3c95d53c71fb66114fc26e83679b452d6db2f1d0b95","0x0cdf39687556f127f9de2f03ec7df8e10e613bf9487760cbe3eaaaa02d8d48b4","0xa9caf228b42660818160afb416ff04cb014f57c4d8ee75ea3452fb76c3d8c645","0xf72fe7c4860b9addb17aac4a00b8afc2f8085836173f10f31697c3d192df119b"]}