attest-mcp-remote
RemoteAbout attest-mcp-remote
attest-mcp-remote is a hosted MCP server for Spazio Genesi’s digital-work attestation service. It lets clients verify fingerprints and create attestations without transferring files.
Key features
- 01Check service and Bitcoin anchor status
- 02Verify attestation signatures
- 03Find certificates by fingerprint
- 04Authorize with a browser device flow
- 05Attest fingerprints and create PDF certificates
Use cases
- 01Check whether a fingerprint has an OpenTimestamps proof
- 02Verify a signed attestation
- 03Record a work fingerprint with a server timestamp
- 04Generate and retrieve a certificate PDF
MCP support
It exposes eight tools to MCP clients over Streamable HTTP. Tools operate on SHA-256 fingerprints, so files are not sent to the server.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://attest-mcp-remote.it-e3f.workers.dev/mcpclaude mcp add --transport http spazio-genesi-attest-mcp-remote https://attest-mcp-remote.it-e3f.workers.dev/mcp{"mcpServers":{"spazio-genesi-attest-mcp-remote":{"type":"http","url":"https://attest-mcp-remote.it-e3f.workers.dev/mcp"}}}Open in Cursor{"servers":{"spazio-genesi-attest-mcp-remote":{"type":"http","url":"https://attest-mcp-remote.it-e3f.workers.dev/mcp"}}}Open in VS Code{"mcpServers":{"spazio-genesi-attest-mcp-remote":{"type":"http","url":"https://attest-mcp-remote.it-e3f.workers.dev/mcp"}}}{"mcpServers":{"spazio-genesi-attest-mcp-remote":{"serverUrl":"https://attest-mcp-remote.it-e3f.workers.dev/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
8This tool takes no parameters.
Details
From the project READMEattest-mcp-remote
Listed on the official MCP Registry as
io.github.SPAZIO-GENESI/attest-mcp-remote.
Remote MCP server (Streamable HTTP) for the Spazio Genesi digital-work attestation service. Zero install: add the URL as a connector in your MCP client and start verifying and attesting.
No file ever transits — by design. MCP has no reliable client→server file
channel, and this service doesn't want one: every tool works on the SHA-256
fingerprint of the work. Agents with code execution compute it locally
(sha256sum <file>), so the file never leaves the machine it lives on — not
even through this server. For local-file tooling use the stdio package
@spazio-genesi/attest-mcp;
for humans, the website (in-browser
hashing, full privacy) or the Telegram bot @SGAttestBot.
Status
In production. Live at https://attest-mcp-remote.it-e3f.workers.dev/mcp.
All 8 tools implemented, tested, and validated end-to-end against production,
including a real zero-install run from claude.ai (connector by URL, human
Turnstile approval, certificate PDF issued and archived).
Tools
| Tool | Auth | What it does |
|---|---|---|
service_status | none | Health of worker / archive / signer / Bitcoin anchor |
check_anchor | none | OpenTimestamps proof lookup for a fingerprint |
verify_attestation | none | Verify the server HMAC signature of an attestation |
lookup_certificate | none | Archive lookup + permanent links for a fingerprint |
authorize | starts device flow | User approves once in the browser (anti-bot check) |
complete_authorization | device flow | Claims the 24h session token (kept in session state, never echoed) |
attest_hash | session token or API key header | Bind a fingerprint to a signed server timestamp |
create_certificate_pdf | session-scoped | Generate + archive the certificate PDF, returns permanent links |
Credentials: either the zero-config device flow above, or an
Authorization: Bearer sg_k_… header on the connection (e.g. Claude Code:
claude mcp add --transport http attest <url> --header "Authorization: Bearer sg_k_…").
Self-service keys: https://imgauth.spaziogenesi.org/developer/keys
Develop
npm install
npm run dev # wrangler dev (default port 8787)
node test/smoke.mjs http://127.0.0.1:8787
test/smoke.mjs drives the Streamable HTTP transport end-to-end (initialize →
tools/list → tools/call) against real, public production data (read-only).
test/smoke-auth.mjs covers the credentialed flow and is a local-only
harness: it needs an isolated imgauth wrangler dev (own --persist-to
state, SIGNER_URL emptied) because the user-approval step is simulated by
writing the local D1 directly — see the header comment in the file.
⚠️ When bumping the version
This server is also advertised through an MCP Server Card published by the web interface, which repeats this server's name, version and endpoint:
https://attestazione.spaziogenesi.org/.well-known/mcp/server-card.json
→ file: imgauthweb/.well-known/mcp/server-card.json
That file is not generated from this repository, so a version bump here
silently makes it wrong. When you change version in package.json and
server.json, update serverInfo.version in the card too — same release, same
day. (Publishing a card that misstates the version is the same class of problem
as an openapi.json left behind: a descriptor that lies is worse than none.)
Security
Report vulnerabilities → /sicurezza/
(responsible disclosure policy, safe harbor for good-faith research) — this
repo has no security.txt of its own (Worker with no static assets), but
the policy covers the whole project, including this workers.dev service.
License
MIT — © Spazio Genesi ETS. This is a pure client of the public imgauth API; it defines no API contract of its own.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.