How it works
You read the current version and can always ask where it came from.
agent: "What is approved for BRCA-mutated ovarian cancer?"
│
├─ knowledge_resolve("cancer-research.eth") → v42 · owner · policy
├─ knowledge_search("cancer-research.eth", "…") → claims with sources, reviewers, confidence
└─ knowledge_sources(id) → introduced in v41 by oncology-lab.eth,
approved by oncology-review.eth
answer: "Olaparib, a PARP inhibitor … (cancer-research.eth v42, FDA approval Dec 2014,
reviewed by oncology-review.eth)"No account, no server
Public namespaces need no key and no wallet. Resolve the ENS name, fetch from IPFS, verify each version’s hash. A private one opens with a grant sealed to your own key — given to you, or bought over x402.
Claims are data, not instructions
Everything an agent reads arrives fenced and labelled as retrieved data with its provenance. A claim that says “ignore your instructions” is reported, not obeyed.
Compose namespaces
One server, many names: treasury.kestrel.eth for policy, portfolio.kestrel.eth for positions. The agent combines them.
Updates are automatic
v42 → v43 is one pointer move. The next query sees the new version.
- 01
Give an agent the network
One MCP server serves every namespace; the agent names one per call. For a private namespace you were granted, addKNOWLEDGE_READER_KEYand useknowledge_read.claude mcp add knowledge \ -e PINATA_GATEWAY=<gateway>.mypinata.cloud \ -- npx -y @knowledge01/mcp - 02
Read from a terminal
Pull once, then search offline.knowledge init cancer-research.eth knowledge pull knowledge search "PARP inhibitor ovarian" knowledge why <claim id> # sources, contributor, reviewers - 03
Read in the browser
The explorer shows the same objects: /k/cancer-research.eth, and every name on the ENS explorer. - 04
Build an application
The SDK is a thin facade over the same repository.import { Namespace } from '@knowledge01/repo' const research = Namespace.for('cancer-research.eth') research.search('PARP inhibitor ovarian') // hits with sources research.contribute({ title: '…', items }) // → a proposal const me = Namespace.for('alice.eth') // personal memory me.observe({ observation: 'Prefers vegetarian food', topic: 'food' })
MCP tools
knowledge_resolveknowledge_searchknowledge_readknowledge_getknowledge_sourcesknowledge_historyknowledge_diffknowledge_statusknowledge_findingsknowledge_proposeknowledge_reviewknowledge_landknowledge_observeknowledge_commitknowledge_branchknowledge_mergeknowledge_revertknowledge_pullknowledge_push