verify_url — MCP server for the verification endpoint ("the atom")
Gives any MCP-compatible agent a verify_url tool: POST a URL, get back a
cryptographically signed proof packet (HTTP status, page title, body SHA-256,
DNS resolution, TLS certificate — timestamped and Ed25519-signed).
Every call hits the live public endpoint, so every tool result is a real proof packet whose signature anyone can verify independently.
Run it
From a checkout (no install needed):
VRF_BASE_URL=https://asheraistudios.duckdns.org python3 mcp_server.py
Or install it as a package (console script verify-atom-mcp):
pip install ./mcp # from the repo root
VRF_BASE_URL=https://asheraistudios.duckdns.org verify-atom-mcp
(PyPI publication is pending — after that, pip install verify-atom-mcp
or uvx verify-atom-mcp will work directly.)
(VRF_BASE_URL defaults to the public deployment. stdio transport, zero
third-party dependencies — the MCP handshake is plain JSON-RPC 2.0.)
Register it (Claude Code / Claude Desktop)
{
"mcpServers": {
"verify-atom": {
"command": "python3",
"args": ["/path/to/mcp_server.py"],
"env": { "VRF_BASE_URL": "https://asheraistudios.duckdns.org" }
}
}
}
The tool
- Name:
verify_url - Input:
{ "url": "https://example.com" } - Output: human-readable summary + the full proof packet as
structuredContent(+isErrorwhen the observation itself failed). - Trust model: the packet carries an Ed25519 signature and the signer's
public key. Fetch the canonical public key from
https://asheraistudios.duckdns.org/keyand verify offline — you never have to trust the server, the transport, or this wrapper.
Honesty notes
- Free while the operator is learning what people use it for. No payments, no accounts, no API keys in v1.
- Rate limit: 30
POST /verifyper minute per IP (429 +Retry-After). - Cost to the operator per verification is a small fraction of a cent; abuse will get rate-limited, not billed to you.
Test it
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
'{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"verify_url","arguments":{"url":"https://example.com"}}}' \
| VRF_BASE_URL=https://asheraistudios.duckdns.org python3 mcp_server.py
The last response's structuredContent is a real signed packet — verify its
signature against the public key to prove the whole chain.
Release files for verify-atom-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| verify_atom_mcp-0.1.0.tar.gz | 5.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| verify_atom_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.0 kB
Release files / verify_atom_mcp-0.1.0.tar.gz
| Download URL | verify_atom_mcp-0.1.0.tar.gz |
|---|---|
| Size | 5.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a80c889e65a3da0c3b741ec1f7615941ee9255475a2de02c8427dab77de8198d
|
|
BLAKE2b-256 checksum How to use checksums |
012642c8c2ac7ff75fc0cc2f157bf7f1901f461a6d919eb016b88cac93c3d3e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / verify_atom_mcp-0.1.0-py3-none-any.whl
| Download URL | verify_atom_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 6.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
af755f08852137ded6fe304b9b2ddef0da61b74d6cdfd7ff3b11857cddde8531
|
|
BLAKE2b-256 checksum How to use checksums |
3db207835ce4c2e562cffe558fc97eb3eb0d0ab01c0121213c85de5863178d8f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|