About landed
landed independently re-fetches a public URL after an agent writes to the web and returns a signed, timestamped receipt showing whether expected content is present. It is for agents and others who need a verifiable record of a post, comment, or filing.
Key features
- 01Independent URL re-fetch
- 02Signed, timestamped receipts
- 03Ed25519 receipt verification
- 04Fresh receipt re-checks
- 05Recent receipt log
Use cases
- 01Confirming a published post is visible
- 02Checking that a submitted comment landed
- 03Verifying a web filing after submission
MCP support
The MCP endpoint exposes `verify_write`, `get_receipt`, and `read_log` to MCP clients without authentication.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://landed.wirt.ee/mcpclaude mcp add --transport http ee-wirt-landed https://landed.wirt.ee/mcp{"mcpServers":{"ee-wirt-landed":{"type":"http","url":"https://landed.wirt.ee/mcp"}}}Open in Cursor{"servers":{"ee-wirt-landed":{"type":"http","url":"https://landed.wirt.ee/mcp"}}}Open in VS Code{"mcpServers":{"ee-wirt-landed":{"type":"http","url":"https://landed.wirt.ee/mcp"}}}{"mcpServers":{"ee-wirt-landed":{"serverUrl":"https://landed.wirt.ee/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
3| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | The exact http(s) URL you wrote to — the page the write should be visible on. |
| note | string | No | Optional human-readable context stored with the receipt. |
| agent | string | Yes | Your stable agent name, e.g. 'fleetname/agent-7'. Receipts are filed under it. |
| action | string | Yes | What you did, short, e.g. 'posted-comment' or 'edited-wiki-page'. |
| expect | string | No | Substring that must appear on the fetched page for the receipt to say found=true. Use a unique fragment of your write. |
Details
From the project READMElanded — did your write actually land?
read-after-write receipts for software agents. You post, publish,
comment, or file something on the web. The moment after, the doubt:
did it actually land, or die quietly? landed re-fetches your URL
independently, right now, and returns a signed, timestamped receipt
stating whether the content you expected is really there.
Live (free, no accounts, no keys): https://landed.wirt.ee
Machine-readable docs for agents: https://landed.wirt.ee/llms.txt
MCP endpoint (one paste, no auth): https://landed.wirt.ee/mcp
— gives any MCP-capable agent (Claude, Cursor, frameworks) a native
verify_write tool, plus get_receipt and read_log. See
MCP_README.md for client setup.
curl -s -X POST https://landed.wirt.ee/v1/verify \
-H 'Content-Type: application/json' \
-d '{"agent":"your-name","action":"posted fix comment",
"url":"https://example.com/your-post",
"expect":"the exact substring you wrote"}'
returns
{"ok": true, "found": true, "checked_at": "...",
"receipt_id": "...", "digest": "sha256 of the fetched bytes",
"sig": "hmac-sha256 (operator-verifiable)",
"sig_ed25519": "ed25519 — verify it yourself with GET /v1/pubkey"}
GET /v1/pubkey— the Ed25519 public key: anyone can verify a receipt'ssig_ed25519themselves; the canonical form is documented with the key. (sigis HMAC and proves the operator signed — nothing more, nothing less.)digestcommits to the bytes the service observed atchecked_at, so a reader can tell "landed at t0" apart from "still visible at t1".GET /v1/receipt/<id>— the stored receipt plus a fresh re-verification right now (independent re-fetch), persisted as a timestamped RECHECKED event: later checks append, they never rewrite the first observationGET /v1/log/<agent-name>— last 100 receipts for that name, each re-checkable against the live web
Why trust it
You don't have to. Every claim in a receipt is about a public object — anyone can fetch the URL themselves and compare. The service only supplies what a notary supplies: an independent look and a timestamp. Verifiability replaces trust; a fabricated receipt is exposed by the first person who re-checks it.
Limits: 60 verifications per agent name per hour. Targets are fetched politely (honest User-Agent, robots.txt respected, 10s timeout, 256KB cap, ≤3 redirects). Private/localhost addresses are refused. Requester IPs are never stored.
This very README
The service's first public announcement (an agent message board, 2026-10-12) carries a receipt issued by the service itself — the ad proves the product:
https://landed.wirt.ee/v1/receipt/c0c9b52345f0a78c
Self-hosting
One file of Python stdlib, one SQLite database, no dependencies.
See DEPLOY.md (systemd recipe, hardening notes,
Cloudflare-tunnel steps). Tests: python3 test_receipts.py
(32 checks, fully offline, includes deliberately hostile SSRF
attempts that must be refused).
Status & disclaimer
Operated by wirt.ee — named, not anonymous. This is an early experiment in mapping demand for agent infrastructure; the public API may change or vanish. Free tier only for now; nothing is sold.
MIT license — see LICENSE.
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.