Server data from the Official MCP Registry
Fetches receipts, genesis and accumulator snapshots for @forestrie/mcp-verify and labels provenance
About
Fetches receipts, genesis and accumulator snapshots for @forestrie/mcp-verify and labels provenance
Security Report
Valid MCP server (3 strong, 1 medium validity signals). 1 known CVE in dependencies (0 critical, 1 high severity) Package registry verified. Imported from the Official MCP Registry. Trust signals: trusted author (3/3 approved).
5 files analyzed · 2 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
What You'll Need
Set these up before or after installing:
Environment variable: FORESTRIE_BASE_URL
Environment variable: FORESTRIE_RPC_URL
How to Install
Add this to your MCP configuration file:
{
"mcpServers": {
"dev-forestrie-resolve": {
"env": {
"FORESTRIE_RPC_URL": "your-forestrie-rpc-url-here",
"FORESTRIE_BASE_URL": "your-forestrie-base-url-here"
},
"args": [
"-y",
"@forestrie/mcp-resolve",
"-y"
],
"command": "npx"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
@forestrie/mcp-resolve
An MCP server that fetches the material
@forestrie/mcp-verify
verifies: a receipt, a genesis document, an accumulator snapshot, a
registration status, a service configuration. Every result says where its
bytes came from and which of the four questions of the trust model they can
support. Listed in the MCP registry as dev.forestrie/resolve.
The verifier runs entirely in your process with no network, no account, no key and no backend, and its own rule is that installing it can never imply a network dependency. So anything that fetches lives here.
Use
{
"mcpServers": {
"forestrie-resolve": {
"command": "npx",
"args": ["-y", "@forestrie/mcp-resolve"],
"env": {
"FORESTRIE_BASE_URL": "https://api-a.forest-2.forestrie.dev",
"FORESTRIE_RPC_URL": "https://<your-chain-rpc-endpoint>"
}
}
}
}
Both environment variables are optional and both are yours. baseUrl is
any SCRAPI base URL and rpcUrl is your own chain access; a call may pass
either explicitly, and the environment values are used only when a call
omits them. The package ships no default operator and no default chain
provider, and names none.
Two public lanes exist and are examples, not defaults:
| Lane | Base URL | Service id |
|---|---|---|
| A | https://api-a.forest-2.forestrie.dev | canopy-dev-1 |
| B | https://api-b.forest-2.forestrie.dev | canopy-prod-1 |
Requires Node 20.11 or later.
The seven tools
| Tool | Provenance | What it does | Supports |
|---|---|---|---|
fetch_scitt_configuration | fetched | GET {baseUrl}/.well-known/scitt-configuration | none |
query_registration | fetched | one registration-status request for a statement; never polls | none |
fetch_receipt | fetched | fetches a receipt, decodes it, and reports the log its certificate names | none on its own |
fetch_genesis | fetched | fetches the forest's genesis document, with its chain binding and bootstrap key | sealing, only for a copy you keep |
fetch_accumulator | chain-read | reads the log's published accumulator; looks back through history for a buried peak | split-view, sealing, append-authority |
fetch_checkpoint_history | chain-read | reads published checkpoints back, newest first, within your block budget | as fetch_accumulator |
verify_fetched_receipt | fetched, plus supplied or chain-read | fetches a receipt and verifies it under a root you supply or read from the chain | the verifier's own answers, unaltered |
Every tool is annotated read-only, idempotent and open-world, because every
one of them talks to something outside your process. What each supports
entry means, and why, is in
docs/what-fetching-proves.md.
What a fetched thing proves
A receipt fetched from the operator is the operator's claim until it is
verified under a trust root you hold. The public trust model,
spec/receipt-trust-model.md
in forestrie/protocol, names four questions a receipt can answer
(sealing, split-view, append-authority, attribution) and four trust roots a
caller can verify under (genesis, known-log-key, known-accumulator,
checkpoint-chain). The roots are not ordered. Which one is right depends
on what you hold, and fetching changes what you hold.
That is why every result here carries provenance (for each artefact:
fetched from a URL, read from a chain, or supplied by you, and when) and
supports (which questions the material can serve as evidence for, under
which root, with a one-line note). The notes are fixed strings the tests
assert verbatim; they are listed and explained in
docs/what-fetching-proves.md.
Three consequences are built into the tool surface rather than left to documentation:
- A fetched genesis is never a root.
verify_fetched_receipttakes its root as bytes you supply or as an accumulator read from the chain; its schema has no form that fetches a genesis and verifies under it in the same call. A genesis obtained from the operator at check time makes the operator the supplier of both the receipt and the root, which proves consistency with a document the operator chose to serve today and nothing more.fetch_genesisexists so you can obtain the document once, keep it, and pass it as bytes from then on. - The chain binding is the forest's, never the operator's. The
univocity contract address and chain id are bound in a forest's genesis
document.
fetch_accumulatorand the chain path ofverify_fetched_receipttake them from a genesis you hold, or explicitly, never from a default, never from a genesis fetched inside the call, and never from an environment variable. - Buried peaks are answered from published history, under the same
root. When later growth has folded a receipt's peak into a bigger one,
the chain path looks back through published checkpoints, within the block
budget you set, and says so (
root_read_from_chain_history). It never scans without a bound.
The verifier's own TRANSPARENCY.md
(shipped in its tarball) explains what a transparency log is and what a
receipt contains; this package does not repeat it. Its
docs/trust-roots.md
explains the roots in depth.
What this package never does
- Never writes: no registration, no grants, no keys.
- Never polls:
query_registrationis one request, and you decide whether to call it again. An HTTP 429 comes back as a structuredproblemwithretryAfterMs, not as an error. - Never chooses an operator or a chain provider for you.
- Never caches a fetched genesis or accumulator across calls: every result
carries a fresh
at. - Never edits the verifier's answers.
verify_fetched_receiptreturns the verifier'sstages,questionsanddiagnosticsunaltered and appends two diagnostics of its own that say where the bytes came from.not_answered_by_this_rootis a real answer and reaches you unchanged.
Layout and gates
src/core/ pure over bytes: URL construction, response classification,
provenance and supports labelling, the compose logic.
No node:*, no fetch, no fs. Exported as ".".
src/net/ the ONLY place fetch is called; every function takes fetchImpl.
Exported as "./net".
src/node/ the MCP adapter: SDK, stdio, {path}/base64 inputs, env defaults.
Exported as "./server".
CI blocks on the purity and packaging gates described in
AGENTS.md. Unit tests run under a fetch that throws and replay
exchanges recorded under test/fixtures/. A live project against a real lane
exists, is opt-in, and is never a required check.
pnpm test # purity gates + unit tests
pnpm typecheck
pnpm build
pnpm test:live # FORESTRIE_LIVE=1 plus FORESTRIE_BASE_URL, FORESTRIE_RPC_URL, UNIVOCITY_ADDRESS, CHAIN_ID and GENESIS_CBOR_B64
Conventions, invariants and the release path are in AGENTS.md.
Dependencies
Exact pins in package.json, bumped deliberately. Of
@forestrie/mcp-verify, only the "." core export is used. Every request,
the chain reads included, goes through an injected fetchImpl.
License
MIT.
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Paperclip
Freeby Paperclipai · Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
mcp-creator-python
Freeby mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
