landed
Server Details
Read-after-write receipts for agents: did your write actually land? Free, signed, re-checkable.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
- Repository
- wirt-ee/landed
- GitHub Stars
- 0
TDQS
Scored across 3 tools
The three tools have clearly distinct roles: verify_write creates a receipt by fetching a URL, get_receipt rechecks a single receipt by ID with a fresh fetch, and read_log lists past receipts by agent. While both get_receipt and read_log retrieve receipts, their different identifiers (receipt_id vs agent name) and purposes prevent confusion.
All names follow a consistent snake_case verb_noun pattern: verify_write, get_receipt, read_log. The verbs vary appropriately by action, but the convention is predictable throughout with no mixing of styles.
Three tools fit the narrow scope of write verification and receipt auditing perfectly. Every tool earns its place, and the count avoids both redundancy and thinness.
The surface covers the core lifecycle: create a verification receipt, retrieve/recheck one, and list receipts by agent. Minor gaps exist—such as bulk verification or searching receipts by URL—but agents can work around these without failure.
Available Tools
3 toolsget_receiptAInspect
Fetch a receipt you (or someone) got from verify_write, plus a FRESH recheck: a new fetch of the target URL performed right now. Use it when your write was still propagating when you first verified (CDN caches, eventual consistency) and you want to confirm it landed now — or when an operator asks you to prove a past write. Receipts are public-by-id: anyone holding the receipt_id can re-check it.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt_id | Yes | The receipt_id hex string returned by verify_write. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a non-obvious behavioral trait: the call performs a NEW live fetch of the target URL right now, not just a replay of stored data. It also discloses the access model ('public-by-id: anyone holding the receipt_id can re-check it'), which is a meaningful privacy/sharing property. It still doesn't state whether the fresh fetch can fail or cost anything, or how failures surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary action and the fresh-recheck twist before the usage guidance. Every sentence contributes, though the parenthetical about CDN caches and the final sharing sentence make it slightly denser than needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, triggering conditions, the live-recheck behavior, and the sharing model — good coverage for a one-parameter tool with no annotations. With no output schema, however, the description never says what a receipt actually contains or what the recheck result looks like, which an agent reasoning about the return value would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's format ('hex string returned by verify_write') is already documented in the schema. The description reinforces the provenance of the ID but adds no new syntax or constraint beyond it, so the baseline 3 for schema-documented params applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Fetch a receipt ... plus a FRESH recheck') and explains what the receipt is and where it came from (verify_write), which cleanly separates it from the sibling verify_write that produces receipts. An agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete triggering conditions — the write was still propagating (CDN caches, eventual consistency), or an operator asks for proof of a past write. It names the producing tool but never says when this is the wrong choice (e.g., no receipt exists yet, or when to just re-run verify_write instead), so the when-not side is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_logAInspect
Read the last receipts filed under an agent name (newest first). Use it to audit yourself before reporting success, or to review what another agent claimed it verified. Returns up to 100 signed receipts with their statuses.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | Yes | The agent name whose receipts you want. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers meaningful traits: results are newest-first, capped at 100, and consist of signed receipts with statuses. It omits permission/auth requirements and what happens when a log is longer than 100 entries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: scope first, then use cases, then return shape. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description covers scope, ordering, cap, and content type of the return. The remaining gap is truncation/pagination behavior beyond the 100-receipt cap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'agent' parameter, so the schema already documents it. The description's 'under an agent name' only restates that, adding no new semantics such as format or matching rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('read the last receipts filed under an agent name') plus ordering ('newest first'), which is far more than the name alone conveys. It is distinguishable from the singular sibling get_receipt by explicitly scoping to a list of receipts per agent, though it never names the siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage contexts: audit yourself before reporting success, or review what another agent claimed it verified. That is clear when-to-use guidance. It stops short of naming alternatives or stating exclusions (e.g., when to prefer get_receipt instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_writeAInspect
Did your write actually land? You just performed a write on the web (post, comment, edit, upload, deploy) and your tool said 'success' — but success messages lie: caches, moderation queues, auth walls, failed propagation and soft-failing backends all eat writes silently. This tool fetches the URL RIGHT NOW from an independent server and returns a signed receipt with the fresh HTTP status and whether the page really contains what you wrote. Call it ONCE, after the write. Do not poll. Give 'expect' a unique substring of what you wrote — without it the receipt only proves the page loads. The receipt is public-by-id and re-checkable later with get_receipt. Limits: 60 calls per agent name per hour; the target must be public http(s); robots.txt is respected; fetches identify themselves honestly.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The exact http(s) URL you wrote to — the page the write should be visible on. | |
| note | No | Optional human-readable context stored with the receipt. | |
| agent | Yes | Your stable agent name, e.g. 'fleetname/agent-7'. Receipts are filed under it. | |
| action | Yes | What you did, short, e.g. 'posted-comment' or 'edited-wiki-page'. | |
| expect | No | Substring that must appear on the fetched page for the receipt to say found=true. Use a unique fragment of your write. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses the independent-server fetch, signed receipt, public-by-id re-checkability, 60-calls-per-agent-per-hour rate limit, public http(s) requirement, robots.txt compliance, and honest fetch identification. It also warns that soft-failing backends, caches, and moderation queues can silently eat writes, which explains the tool's existence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and then structured into core behavior, call rules, parameter advice, receipt details, and limits. It is dense and largely earns its length, though the opening rhetorical question and dramatized success-message sentence could be trimmed slightly without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema tool with five parameters, the description covers the behavior, call discipline, return semantics (signed receipt with fresh HTTP status and content match), and operational constraints thoroughly. An agent has enough information to invoke it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful nuance for the expect parameter: it must be a unique substring and without it the receipt only proves page loads, not that the write is present. It does not add equivalent depth for the other four parameters, but the expect guidance is operationally important.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action—fetching the written URL from an independent server to verify a write actually landed—and distinguishes itself from get_receipt by positioning that sibling as the later re-check mechanism. An agent can tell what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call it once after a write and not to poll, gives the intended trigger context (post, comment, edit, upload, deploy), and names get_receipt as the alternative for later re-checking. This is clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
get_receipt - First observed
read_log - First observed
verify_write
Related MCP Connectors
Did it really happen? Independent signed receipts for AI agents: page, domain, email, heartbeat.
Post-quantum, tamper-evident receipts for agent actions. Ed25519 + ML-DSA-65, offline verify.
Issue signed receipts for AI agent actions; verify any receipt offline - free, no account.
Signed-quality-receipt micro-services for agents; verify before you pay (x402/USDC).
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceTamper-evident receipts for AI agent actions. The notary layer for agent-to-agent transactions.22 npm1MIT- AlicenseNot gradedqualityBmaintenanceIssue and verify signed receipts for agent actions, enabling durable, independently checkable proof of policy decisions. Supports offline verification via get_keyset and verify_receipt tools without an account.0Inno Setup
- AlicenseNot gradedqualityDmaintenanceVerifiable action receipts for AI agents — agents sign claims locally, an independent witness countersigns and timestamps, anyone can verify offline.16 npmMIT

emilia-mcp-serverofficial
AlicenseAqualityAmaintenanceThe accountability layer for AI agents — a named human's signed yes before an agent does anything irreversible (payment, record change, deploy), then an offline-verifiable Trust Receipt. Apache-2.0, formally verified.3611Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.