mcpbeat Sign in

Kenwea Notary MCP Server

answering

Kenwea Notary is answering right now. Last checked 14 min ago. It exposes 4 tools. Last commit 21 Oct 2026.

Signed, traced record of what an npm package or file attempts when run, network included. No key.

Uptime history 27 days of history · worst day 99%
27 days agonow
100.0%
Uptime 24h
91 of 91 checks
4
Tools
read from the server
205 ms
Response time
average over 24h
1
Stars
last commit 21 Oct 2026

What changed 28

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 8 October 2026. No other catalogue keeps this.

20 Oct a tool changed the parameters it asks for kenwea_notary_check_tree
20 Oct a tool description was rewritten kenwea_notary_check_tree
19 Oct a tool changed the parameters it asks for kenwea_notary_check
19 Oct a tool description was rewritten kenwea_notary_check
16 Oct a tool description was rewritten3 times that day kenwea_notary_check
16 Oct a tool changed the parameters it asks for kenwea_notary_check
15 Oct 3 tool descriptions were rewritten6 times that day kenwea_notary_check, kenwea_notary_check_tree, kenwea_notary_verify
15 Oct a tool appeared kenwea_notary_check_tree
15 Oct a tool changed the parameters it asks for kenwea_notary_check_tree
11 Oct 3 tools appeared kenwea_notary_check, kenwea_notary_get_public_key, kenwea_notary_verify
and 14 more, back to 8 October 2026

Tools have disappeared from this server

A tool that vanishes takes a piece of your agent with it, and the change arrives silently. Watch this server and every such change lands in your inbox.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 14 min ago.

run in your terminal
claude mcp add notary --transport http https://mcp.kenwea.com/notary/v1
Settings → Connectors → Add custom connector, then paste this address
https://mcp.kenwea.com/notary/v1
~/.codex/config.toml
[mcp_servers.notary]
url = "https://mcp.kenwea.com/notary/v1"
.cursor/mcp.json
{
  "mcpServers": {
    "notary": {
      "url": "https://mcp.kenwea.com/notary/v1"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "notary": {
      "type": "http",
      "url": "https://mcp.kenwea.com/notary/v1"
    }
  }
}

Available tools 4

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

kenwea
kenwea_notary_check
Notarize what a file or npm package does at the moment Kenwea fetches it, and get a signed record anyone can check. Input: exactly one of artifactRef, a public https URL of a single file, npm tarball or Python wheel, or package, an npm package name such as [email protected] (resolved to the exact tarball npm install would download; no version means latest), or a Python one as pypi:[email protected] (resolved on PyPI to the wheel this sandbox can import: pure Python, or musllinux for CPython 3.12), or an OpenClaw plugin on ClawHub as clawhub:name@version (the release ClawHub serves, refused unless it has the SHA-256 ClawHub publishes; no install step runs, as OpenClaw installs with --ignore-scripts, and the plugin is loaded as OpenClaw loads it, its openclaw.extensions entries imported and register() called with a stand-in OpenClaw API, decoy OpenClaw keys in its config and in ~/.openclaw). Behavior: Kenwea downloads the bytes (up to 32 MiB) and runs executable content in isolation: no route out (a stand-in network inside the sandbox answers lookups and connections on ports 80, 443, 8080 and 8443 and records them), all capabilities dropped, read-only filesystem, not as root, 15 seconds for a file and 55 for a package. For a package it runs the install steps npm would run (preinstall, install, postinstall, and the node-gyp step npm adds for a binding.gyp) with decoy credentials where a developer machine or CI runner keeps real ones (an npm token in ~/.npmrc and NPM_TOKEN, a GitHub token, AWS keys, an SSH key, CI variables), each traced for the network connections, DNS lookups and programs it attempts, the credential files it opens and any decoy it puts into what it sends or starts; a single file and a Python package run with the same decoys (plus a PyPI token for Python) and are traced the same way; a PyPI wheel (package pypi:name) is imported with its dependencies installed, resolved as pip would for CPython 3.12 on Linux x86_64 and each checked against PyPI's sha256. After its install a registry npm package is also loaded once, as an application would require or import it, and onLoad says what loading it did; a load that reaches the network or a credential is its own finding (load_tried_network, load_read_credentials, load_sent_credentials). For a registry package that runs something at install, the dependency tree npm would install goes in first, each tarball checked against the registry's integrity hash, and every install step in the tree runs, the dependencies' first; a package that declares none is checked when a dependency does (dependencies.installSteps names them). Returns: level, one word for what the record means (nothing_runs, quiet, network, reads_credentials, sends_credentials, unfinished), and summary, one sentence; installSteps (what runs at install; empty means nothing does) and observed (what the steps attempted, with credentialsRead and credentialsSent when a decoy was touched, and requests: what a step sent to the stand-in network, plain HTTP in full and TLS by server name and size, never decrypted); for an npm package, sincePrevious, which install steps were added, removed or changed since the previous published version (from the registry, not signed); a verdict and a reasonCode, the sha256 of what was read, and signedAttestation, an Ed25519 signature over the facts. quiet (verdict approved) means everything that ran finished, was traced whole and touched nothing watched; a step that tried the network, read a credential file, failed or could not be observed is manual_review with the reason; rejected is for a step that tried to send a decoy credential, and for files carrying a provider-formatted credential. A URL that cannot be fetched returns checked false with the reason instead of a verdict; a limit of our runner comes back as manual_review stated as ours. Limits: no key or signup; 20 checks per hour per network address (an IPv6 /64 counts as one address) within a shared hourly ceiling, refused with rate_limited and the reset time. A Kenwea API key sent as a Bearer token uses that key's own quota. At most four checks run at once; one that gets no slot within 10 seconds comes back manual_review with reasonCode runner_busy and nothing run, so retry. The same bytes at the same address under the same checker version get the record issued the first time, marked cached, and nothing is run again. Keeps no copy of the artifact; a finished record is held in memory for up to 24 hours to answer repeats, and a rate counter and a log line keep a short hash of your address. Not for: checking a record you already have (use kenwea_notary_verify, which runs nothing and does not spend your quota).
kenwea_notary_check_tree
Answer for every package in a project's npm dependency tree at once, from records the notary already holds. Input: lockfile, the text of a package-lock.json (lockfileVersion 2 or 3, or its JSON), a pnpm-lock.yaml (v5, v6, v9), a yarn.lock (v1 or berry) or a project's package.json (its ranges resolved as npm would today, devDependencies included); or packages, a list of {name, version, hasInstallScript}, with directs, the project's own dependencies as {name, version}. Behavior: the lockfile says which packages run something at install (hasInstallScript, or requiresBuild in pnpm up to v6), and where it does not (pnpm v9, yarn) the registry is asked for each version (usually a few percent run something); the rest run nothing of their own and are only counted. A step runs inside the project, under the package that pulled it in (@scarf/scarf reports telemetry only for the package that depends on it), so the tree is checked through the project's direct dependencies: each one under which something runs at install is answered by its own record, made with its whole tree installed, and the packages under it come back as covered, with coveredBy naming it. A yarn.lock does not say which packages are direct, so there each package that runs something is checked on its own, and checkedThrough says which way it went. Each record is a stored signed record, made by kenwea_notary_check's sandbox run with decoy credentials; one that has none yet is queued and checked in the background, about two a minute, so ask again later with the same tree to collect it. Nothing runs during the call and it does not spend the per-address check quota (60 tree calls an hour per address). Returns: summary, counts (total, runNothing, runSomething, answered, queued), findings (packages whose level is network, reads_credentials or sends_credentials), checkedThrough (direct_dependencies or each_package), and packages, each with status (answered, queued, not_queued, covered) and, for a direct dependency, covers; when answered, level, summary, verdict, reasonCode, observed and signedAttestation. Verify each record with kenwea_notary_verify or your own Ed25519 code; the tree summary itself is not signed. Not for: one package you want checked now (use kenwea_notary_check). A lockfileVersion 1 file has no hasInstallScript flags and is refused with a reason.
kenwea_notary_get_public_key
Return Kenwea's published Ed25519 notary key, so a signed record can be verified with your own code instead of kenwea_notary_verify. Input: none. Behavior: reads Kenwea's published key list (https://www.kenwea.com/.well-known/kenwea-attestation-keys.json) and caches it for an hour. Runs nothing, read-only, never counts against the check quota. Fails with key_unavailable if the list cannot be fetched. Returns: the active key's keyId, algorithm ed25519, the key as base64 (32 raw bytes) and as PEM, keyUrl and keysUrl, and keys, every published key with its status (active, retired or revoked). To verify, check signedAttestation.signature (base64) over the exact bytes of signedAttestation.payload with the key whose keyId the payload names, and treat a revoked key as no signature. Not for: checking an artifact (use kenwea_notary_check) or having the check done for you (use kenwea_notary_verify).
kenwea_notary_verify
Check a signed record produced by kenwea_notary_check: whether its signature is valid under Kenwea's published Ed25519 key, what it attests, and whether it is in Kenwea's public transparency log (log.included, proven with an inclusion proof against a checkpoint signed by the same key), so it was shown to everyone and not only to you. Input: payload and signature exactly as they appear in the record's signedAttestation. payload is a JSON string and must be passed byte for byte; re-serialising it (reordering keys, changing spacing) breaks the signature. signature is standard base64 with padding. Optionally contentSha256, the hex sha256 of bytes you hold, compared without regard to letter case. Behavior: runs nothing and makes no request except fetching Kenwea's published key list (https://www.kenwea.com/.well-known/kenwea-attestation-keys.json), which it caches for an hour and reads again when a record names a key it does not hold. A record names its key inside the signed payload (format 2) and is checked against that key; an older record is tried against every published key. A record signed with a key Kenwea has revoked returns valid false and says so. Read-only and idempotent; it never counts against the check quota. Returns: valid, the keyId and its status, and the signed facts (verdict, reasonCode, installSteps, observed, contentSha256, issuedAt and the rest); with contentSha256, also matchesContentSha256. An altered or re-serialised record returns valid false with the reason, not an error. If the key list cannot be fetched the call fails with key_unavailable and says why. Not for: learning what an artifact does (use kenwea_notary_check). To verify without this tool, take the key from kenwea_notary_get_public_key and use any Ed25519 library.

Tools removed

Tools this server used to expose. Anything built against them stopped working on the day they went.

kenwea.notary.check
removed 12 Oct 2026
kenwea.notary.getPublicKey
removed 12 Oct 2026
kenwea.notary.verify
removed 12 Oct 2026

Endpoints

URLTransportStateLatencyChecked
https://mcp.kenwea.com/notary/v1 streamable-http answering 174 ms 14 min ago

Alternatives to Kenwea Notary

same job, measured the same way
Rokha
by rokha

Search a registry of agent skills and MCP servers, then run them for real. No install, traced.

291 tools answering
Signal Bureau
by evolutionlabs-dev

SigB (Signal Bureau): maintained, source-traced record of entities and events in your named domain.

29 tools answering
Agent Incident Classification Notification
by textforagents

Signed agent-incident classification vs PP-26-4396, with third-party notification receipts.

3 tools answering
three.ws Provenance
by nirholas

Append-only, signed, on-chain-verifiable agent action log — record and audit what agents did.

26 installs/wk local only
Verify SCITT receipts from Forestrie transparency logs, offline
by forestrie

Verify a SCITT receipt under a trust root you hold — offline, no backend, no key, no network

385 installs/wk local only
Globalping
by mcparmory

Run network tests (ping, traceroute, DNS) from probes worldwide

227 installs/wk local only
EvalGate
by evalgate

Create and run AI evaluations, record traces, and inspect results with scoped organization access.

12 tools answering
Netmon (demo)
by netmon

Public read-only demo of Netmon's network monitoring tools over a recorded snapshot.

36 tools answering

Kenwea Notary — questions

Answers built from our own checks of this server.

What can Kenwea Notary do?
It exposes 4 tools, read directly from the server on our last check. Among them: kenwea_notary_check, kenwea_notary_check_tree, kenwea_notary_get_public_key, kenwea_notary_verify. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Kenwea Notary working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 205 ms. The bar chart above shows every period we have measured.
Did Kenwea Notary ever remove tools?
Yes. kenwea.notary.check, kenwea.notary.getPublicKey, kenwea.notary.verify are no longer exposed — we recorded the date each one disappeared. A tool vanishing usually means a breaking change for anything that depended on it.
How do I connect Kenwea Notary?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Kenwea Notary need an API key?
No. Kenwea Notary completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 4 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Kenwea Notary?
It answers our handshake in 205 ms on average, which is faster than 77% of all working MCP servers we measure. That puts it in the quick quarter of the ecosystem. The comparison comes from our own checks across the whole registry, every 15 minutes.
Is Kenwea Notary open source?
The code is open source: it is published under the MIT licence, written in Go and 1 stars on GitHub. The licence covers the code in the repository, not the hosted service at mcp.kenwea.com, which runs on its operator's own terms.