Skip to main content
ClaudeWave

NENRIN: tree rings for AI facing services. Bitcoin-anchored public ledger, open witnessing, and an MCP server for verifiable Japanese construction estimates. The operator cannot delete a valid record.

MCP ServersOfficial Registry1 stars1 forksHTMLMITUpdated today
ClaudeWave Trust Score
87/100
Trusted
Passed
  • Open-source license (MIT)
  • Actively maintained (<30d)
  • Clear description
  • Topics declared
  • Documented (README)
Flags
  • !Install pipes a remote script into a shell (curl | sh)
Last scanned: 9/14/2026
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/ogasurfproject-jpg/horizon-shield
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/ogasurfproject-jpg/horizon-shield and follow its README for install instructions.
Use cases

MCP Servers overview

<div align="center">

# 🛡️ HORIZON SHIELD

### Verifiable construction estimate auditing for AI agents

**Don't trust the estimate. Verify it.**

An [MCP](https://modelcontextprotocol.io) server that lets AI agents check whether a Japanese construction or renovation estimate is fair, against open data, and returns a result **anyone can verify against Bitcoin** (OpenTimestamps). No account, no key.

[![MCP Registry](https://img.shields.io/badge/MCP-Registry-2f6feb)](https://registry.modelcontextprotocol.io/v0.1/servers?search=horizon-shield)
[![Transport: streamable-http](https://img.shields.io/badge/transport-streamable--http-2ea043)](https://mcp.horizonshield.dev)
[![Open data: JCCDB 95,403 · CC BY 4.0](https://img.shields.io/badge/open%20data-JCCDB%2095%2C403%20%C2%B7%20CC--BY%204.0-e36209)](https://github.com/ogasurfproject-jpg/japan-construction-cost-database)
[![Anchored: Bitcoin / OpenTimestamps](https://img.shields.io/badge/anchored-Bitcoin%20%2F%20OpenTimestamps-f7931a)](https://ledger.horizonshield.dev/ledger)
[![Auth: none](https://img.shields.io/badge/auth-none-6e7681)]()
[![GitHub stars](https://img.shields.io/github/stars/ogasurfproject-jpg/horizon-shield?style=social)](https://github.com/ogasurfproject-jpg/horizon-shield/stargazers)
[![HORIZON SHIELD KIRA on Glama](https://glama.ai/mcp/servers/ogasurfproject-jpg/horizon-shield/badges/score.svg)](https://glama.ai/mcp/servers/ogasurfproject-jpg/horizon-shield)
[![Smithery](https://img.shields.io/badge/Smithery-listed-e35f34)](https://smithery.ai/servers/oga-surf-project/horizon-shield)

</div>

---

## NENRIN: tree rings for AI facing services

> A tree adds one ring a year. Nobody can paint one in afterwards. NENRIN gives that property to software services.

In one thirty day window, measured 2026-08-17, this server appeared in **93,983** AI search results. How many of those became a call from outside, we cannot say. The usage counter deliberately stores no IP addresses, so it cannot separate our own automated checks from external traffic. An earlier version of this paragraph said the answer was **0**. This instrument cannot establish that, so the claim is withdrawn here rather than quietly deleted. Discovery is solved. Choice is not. An agent picking between 90,000 servers can only read what each vendor wrote about itself. NENRIN adds the missing layer: records of conduct that the vendor did not author and cannot delete.

How it works, in three lines:

1. **Open witnessing.** Anyone can measure any endpoint and submit the walk to the public ledger under their own name and vantage. The operator holds no veto: acceptance is mechanical schema checking, and the code that enforces this is in this repository.
2. **Discrepancies are the product.** When two witnesses report incompatible observations of the same target, the disagreement itself becomes a permanent, citable record. The founding one is real: [NENRIN_DISCREPANCY_0001](workers/hs-ledger/nenrin/NENRIN_DISCREPANCY_0001.md), two honest witnesses, one target, both correct.
3. **Rings.** Each month the accepted records bundle into a ring that carries the hash of the previous ring, timestamped to Bitcoin. Eighteen months of rings cannot be created in an afternoon, by anyone, including us.

The specification is anchored on the public ledger as entry 19
(`sha256 9ccba2e325fd2a555fcdb2dec519b8c6bf7a669064674846aea98ecfff824e3d`):
[NENRIN_SPEC_v1.md](workers/hs-ledger/nenrin/NENRIN_SPEC_v1.md). It names its own prior art (Certificate Transparency, Rekor, in-toto, SLSA, OpenTimestamps), states exactly which combination is claimed as new, and invites refutation into the same ledger.

**The witness intake is live.** Start here:

```
curl -s https://ledger.horizonshield.dev/witness
```

We are the first test subject under our own rules. The ledger keeps the record of our gate failing its own test, and the full 522 incident that started all of this. Unflattering records stay.

**If a register that cannot delete criticism of its own operator is infrastructure you want to exist, star this repository.** Stars are how researchers and agent platforms find it. The rings accumulate either way. They accumulate faster with witnesses.

## Repository map

| Path | What it is |
|------|------------|
| `workers/hs-verify-gate` | The verification gate: nightly sweeps, on demand checks, `probed_via` route disclosure, `gate_commit` pinning, surface change tracking |
| `workers/hs-ledger` | The JIDEC append only ledger and the NENRIN witness intake |
| `workers/hs-ledger/nenrin/agreement-v0` | The agreement record: two agents, two signatures, one set of bytes. Verifier written twice, in Python and JavaScript, and proved to agree |
| `workers/hs-verify-relay` | The public edge relay born from the 522 incident (documented in the discrepancy record) |
| `verify-directory` | The public register page: every listed server, our own included, with its live verdict |
| everything else | The GitHub Pages site for the human facing service at the-horizons-innovation.com |

## The agreement record: the other half of a measurement

A conduct record is one sided. Somebody measured somebody. Nothing in it records the other half of
commerce: that **two** agents agreed on terms, and that **both** said so.

`a2a-agreement-v1.1` is that record. At time T, party A and party B both signed the same canonical
bytes describing terms, and each of them pinned, by sha256, a conduct record about the OTHER party
written by somebody who is neither of them.

What it refuses to be is as load bearing as what it is. **No custody. No matching. No editorial
step.** The recorder must not hold funds, must not decide whether a deal happens, and must not
charge a fee that varies with the amount or the outcome. A record whose fee moves with the number
is refused by name. Refusal is mechanical, and none of the terms are ever judged by anyone in this
layer.

The claim is not a new primitive. It is the combination: two mandatory signatures, the
counterparty's measured conduct pinned by sha at the moment of signing, an intake that judges
nothing, and an external anchor nobody here operates. Prior art is named in the draft rather than
left for a reader to find: AP2, x402, ACP, MPP, Cedulon, the 1F916 Agent Record, and SCITT.

**The verifier is written twice.** Once in Python, once in JavaScript, by design and not by
accident: two implementations that disagree are the exact seam this project measures everywhere
else, and building one into this layer on purpose would be a poor joke. 5,286 frozen cases, and
the two produce the same report byte for byte, including every refusal code and the English
sentence attached to it. Proving that moved the Python once, when the JavaScript disagreed on two
cases and the check that settled it was running the Python against its own frozen fixture, where
it failed the same two.

Then the rules were broken on purpose, 77 ways in Python and 36 in JavaScript, to find out whether
the 5,286 cases could tell. Six breakages survived, and not one was a defect in either
implementation. They were holes in the test set. All six are closed.

- The record: [`ops/AGREEMENT_EXT_v0_1_DRAFT.md`](ops/AGREEMENT_EXT_v0_1_DRAFT.md).
  v0 is anchored as [JIDEC entry 39](https://ledger.horizonshield.dev/ledger/39) and does not move.
- The verifiers, the adversary and the contract:
  [`workers/hs-ledger/nenrin/agreement-v0`](workers/hs-ledger/nenrin/agreement-v0)
- What an intake may and may not do, written before one exists:
  [`ops/AGREEMENT_INTAKE_v0_BOUNDARY.md`](ops/AGREEMENT_INTAKE_v0_BOUNDARY.md)

There is no intake yet, and that is deliberate. A record layer built before it has two parties is
an empty exchange, and an empty exchange is worse than none.

## The register, as a repository

The same measurements are published as a standalone, machine generated repository:
**[mcp-conduct-register](https://github.com/ogasurfproject-jpg/mcp-conduct-register)**.

Nobody selects the rows there either. A script rebuilds the table from the public API once a day,
and the same run writes a
[`register.json`](https://raw.githubusercontent.com/ogasurfproject-jpg/mcp-conduct-register/main/register.json)
snapshot so an agent can read the register without parsing Markdown. It carries a `CITATION.cff`,
so the register can be cited the way a dataset is cited, and an
[`llms.txt`](https://raw.githubusercontent.com/ogasurfproject-jpg/mcp-conduct-register/main/llms.txt)
that states in plain words what the register is and, more importantly, what it is not.

## Three ways in, none of which need us

Since 2026-09-04 the gate can be used without asking anyone at HORIZON SHIELD.

**For the server you operate.** Put `{"allow_tool_call": true}` at `/.well-known/mcp-conduct.json` on your
origin. Only the owner of an origin can place a file there, so the gate takes it as consent, measures
determinism on the public register with it, and writes into every verdict where it read it (gate 0.2.4).
Add a `compensation` block to your agent card (`paid_by`, `referral_fee`, `listing_fee`; the content is not
judged, only its absence) and `POST /watch` once. A row can then reach `verified` with no hand of ours involved.

**For your CI.** One step measures the server on every push and recomputes the verdict hash on the runner,
so the gate is never trusted:
[wedjat-check-action](https://github.com/ogasurfproject-jpg/wedjat-check-action)
(`uses: ogasurfproject-jpg/wedjat-check-action@v1`). It fails the job on a measured failure and leaves
unmeasured conditions unmeasured; `require` and `must_pass` decide how strict that is.

**For the agent that connects.** [`mcp-conduct`](https://www.npmjs.com/package/mcp-conduct) on npm
(zero dependencies) reads `/is-verified` before an MCP client connects and applies a policy you choose:
`warn`, `measured` (block only what was measured and did not pass), `verified-only`, or `off`.
`verified` is `true` or `null`, never `false`; not measured is never failed. Source:
a2aai-agentsbitcoingemini-cli-extensionmcpmcp-servermodel-context-protocolopentimestampstransparency-log

What people ask about horizon-shield

What is ogasurfproject-jpg/horizon-shield?

+

ogasurfproject-jpg/horizon-shield is mcp servers for the Claude AI ecosystem. NENRIN: tree rings for AI facing services. Bitcoin-anchored public ledger, open witnessing, and an MCP server for verifiable Japanese construction estimates. The operator cannot delete a valid record. It has 1 GitHub stars and its last recorded update is dated 2026-09-14.

How do I install horizon-shield?

+

You can install horizon-shield by cloning the repository (https://github.com/ogasurfproject-jpg/horizon-shield) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is ogasurfproject-jpg/horizon-shield safe to use?

+

Our security agent has analyzed ogasurfproject-jpg/horizon-shield and assigned a Trust Score of 87/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.

Who maintains ogasurfproject-jpg/horizon-shield?

+

ogasurfproject-jpg/horizon-shield is maintained by ogasurfproject-jpg. The last recorded GitHub activity is dated 2026-09-14, with 8 open issues.

Are there alternatives to horizon-shield?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy horizon-shield to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: ogasurfproject-jpg/horizon-shield
[![Featured on ClaudeWave](https://claudewave.com/api/badge/ogasurfproject-jpg-horizon-shield)](https://claudewave.com/repo/ogasurfproject-jpg-horizon-shield)
<a href="https://claudewave.com/repo/ogasurfproject-jpg-horizon-shield"><img src="https://claudewave.com/api/badge/ogasurfproject-jpg-horizon-shield" alt="Featured on ClaudeWave: ogasurfproject-jpg/horizon-shield" width="320" height="64" /></a>

More MCP Servers

horizon-shield alternatives