← The evidence ledger
Evidence row 2518832
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 1e8a73ee-fc0b-4372-8d42-577d1c28e572
- Recorded
- Previous row
- #264725
- Body SHA-256
- 477e8290c1b087c9d03209ff8416505309821e0087b1807b1d531b5b797df26e
- Leaf
- 0xbf0c2a3b8382bccdf8302f4eafc16661894682427ae57716542554c671df2cdf
What was observed
{
"count": 7,
"tools": [
{
"description": "Search nifra's framework documentation and get back ONLY the matching sections - auth, uploads, ISR, WebSockets, loaders, deployment, anything. Call with no query for the cheap section index; pass query (e.g. \"isr revalidate\") for the top matching sections. Use this instead of reading llms-full.txt (~150 KB) whole. For the EXACT TypeScript of a type/interface/function, call nifra_types instead (don't read .d.ts files).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max sections to return (default 3, max 5).",
"type": "number"
},
"query": {
"description": "Keywords to match against doc sections (omit for the index).",
"maxLength": 256,
"type": "string"
}
},
"type": "object"
},
"name": "nifra_docs"
},
{
"description": "Get a verified, copy-pasteable Nifra code example for a task - auth route, file upload, ISR page, loader/action, typed client, SSE, deployment, and more. Every snippet is typechecked against the installed Nifra version, so it compiles as-is. Returns code as text for direct use. Call with no query for the grouped index; pass query (e.g. \"protected route\", \"upload\", \"isr revalidate\") for matching snippets.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max examples to return (default 3, max 5).",
"type": "number"
},
"query": {
"description": "What you want an example of (omit for the index).",
"maxLength": 256,
"type": "string"
}
},
"type": "object"
},
"name": "nifra_example"
},
{
"description": "Diagnose a client-side Nifra problem by symptom across every adapter (React, Preact, Solid, Vue, Svelte, and vanilla). Returns the likely cause, a concrete fix, and how to verify it. Covers the Nifra server/client seam, hydration mismatches, duplicated framework runtimes, loader-data typing, and adapter-specific reactivity guidance. Call with no args for the index; pass `symptom` (e.g. \"hydration mismatch\", \"value stopped updating\") and/or `adapter` to filter.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"adapter": {
"description": "Filter to one adapter's entries (plus the adapter-independent seam entries).",
"enum": [
"react",
"preact",
"solid",
"vue",
"svelte",
"vanilla"
],
"type": "string"
},
"limit": {
"description": "Max entries to return (default 3, max 5).",
"type": "number"
},
"symptom": {
"description": "What you observe (omit for the index).",
"maxLength": 256,
"type": "string"
}
},
"type": "object"
},
"name": "nifra_frontend"
},
{
"description": "Open an interactive, filterable gallery of ALL of nifra's verified code examples (MCP Apps widget) - for browsing and discovering what exists. NOT for fetching one snippet as text: use nifra_example for that. Pass query to pre-filter; the widget also filters client-side.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"description": "Pre-filter examples by keyword.",
"type": "string"
}
},
"type": "object"
},
"name": "nifra_gallery"
},
{
"description": "Walk the guided path to build a nifra app end to end - an ORDERED sequence (create → page route → loader → typed API → typed client → auth → background jobs → deploy), not the random-access search of nifra_docs/nifra_example. Call with no args for the step index; pass `step: N` for that step's goal, how to do it (which tool emits the correct artifact), and how to verify it. Use it when scaffolding a new app or learning nifra's flow - each step composes the other nifra_* tools.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"step": {
"description": "1-based step number to expand (omit for the index).",
"type": "number"
}
},
"type": "object"
},
"name": "nifra_learn"
},
{
"description": "Explain a behavior that differs between Bun, Node, Deno and Cloudflare Workers by symptom. These are runtime behaviors, not Nifra's: request-target and Host handling, pipelining, JSON content-type, engine error messages, recursion depth, .env loading, and runtime-specific APIs. Returns what each runtime does, the fix (and the Nifra option that decides it when there is one), how to verify it, and the versions it was measured on. Call with no args for the index; pass `symptom` (e.g. \"path guard skipped\", \"env var undefined\") and/or `runtime` to filter.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max entries to return (default 3, max 5).",
"type": "number"
},
"runtime": {
"description": "Filter to one runtime's entries.",
"enum": [
"bun",
"node",
"deno",
"workerd"
],
"type": "string"
},
"symptom": {
"description": "What you observe (omit for the index).",
"maxLength": 256,
"type": "string"
}
},
"type": "object"
},
"name": "nifra_runtime"
},
{
"description": "Get the exact TypeScript declaration of any exported @nifrajs/* symbol - interface, type, class, function, or const. Each signature is generated from the package's built .d.ts and returns the complete declaration rather than prose. Pass `name` for an exact symbol (e.g. \"RateLimitStore\", \"RouteSchema\", \"Context\", \"rateLimit\"); pass `query` to search by keyword; omit both for the per-package index of names. A `name` lookup is always the complete declaration; a `query` returns a one-line summary plus the signature, collapsing an oversized body - pass `full: true` to override.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"full": {
"description": "Query mode only: return whole declarations instead of collapsed ones. Off by default - a search is for picking a symbol, and one match can be tens of thousands of characters.",
"type": "boolean"
},
"limit": {
"description": "Max results for a query/search (default 5, max 8).",
"type": "number"
},
"name": {
"description": "Exact symbol name - returns its literal declaration (e.g. RateLimitStore).",
"type": "string"
},
"query": {
"description": "Keyword search over names + signatures (when you don't know the exact name).",
"maxLength": 256,
"type": "string"
}
},
"type": "object"
},
"name": "nifra_types"
}
]
}What the leaf hashes
{"body":"477e8290c1b087c9d03209ff8416505309821e0087b1807b1d531b5b797df26e","id":2518832,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793678243650289,"prev":264725,"subject":"1e8a73ee-fc0b-4372-8d42-577d1c28e572","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (425475 rows).
- 0xbf0c226e7392435dd003a8a5d447fd894a66404f6da72d969ea9508ddedad5bf
- 0xe61fa14a932a84756b2c1c9ac05ae3ef19d0fea47ca71ed1339ab90fc1014375
- 0x6f5c63ff2d6e23a4482dfdc7f31259244a0c7c49b254a830a6974d2c47ac42c4
- 0x10532341faf900e73dcdeff6b80d8bd73d6cdf7742f23c51c67da929ed41f035
- 0x9fa86ec8b402838828c99b0ba0fd37fec2c8344bb218e22ce66ee727d9b7ef28
- 0xef8b2ec5750aa8846d1f54bc400c7424932b591b7566c1037d02890597e1f1cf
- 0x27493bca0f141c31b46bc6968349c9a91f3e3dba09d3b8115f79783903c2e094
- 0xc4a64138acad9cda4576bfe5c4dfa127df1b5839b57e46811ac50b566c280b14
- 0xb5088173816ae9ee45322a24e117de27f08b44ecc353677e87d7befb760fa969
- 0xe2e47b338021f1697df3ba076a3ae024c89b207d54b84ab596dfe5e3676d4075
- 0x127b0e955e1b470371ee4138616cd5658e0d65c53960e48c283c3be14724edcd
- 0x2fe3e767a6f063f1532455519e42e1c3f246e86f332f9400b049370483ce0f55
- 0x7e57bf3ad9e8414c054c7472c2f2892726935ecc1f17cf00d0654a401e9650da
- 0xe48dd050d36f1a75a7d005677c3e962435e7b5ad246de637e9e1fc9be7665b0a
- 0xfeca812d56a4bb476433459149c92fcd8a270bdbf2bbbce1949fb4bf7848f5ed
- 0xf8c1a0cdf4ba2eb105bc3e83d2f2b121cab4a34fb5a3846fa592909906f7fdaa
- 0x39dab39081985bbfffe23b080399a9d1a9cb9c2c8960102350c4212113cb2cba
- 0xac5402954216dc6c7020a6405675c8fc3b0828c2ab02943d80de52677a2f1fc3
- 0x85f3a27c16056a361d9ba33355a575ca7123f86de901b204c88953c4b8ea441a
- Day root
- 0xb646ffa569e24bf8336b0a15a9d98d0a2f1239f58e10c2b18a9d22e43343566a
- Chained
- 0x35e926359fd19031c6b5e08fb3b44f2524386a57c8fdd353336c185603f53d43
- Published
- On Arc Testnet, block 70601990: 0xa5f9dadba13cde129126b950e64b815e6833cb8ff53b75026c9dbe769c3768c7