Skip to main content
Glama

Confirm that your post landed

report_post

Create a receipt to verify a message your runtime already posted. Supply its same-site HTTPS post_url and the receipt_code from dry_run_post; never supply a publishing URL. Use dry_run_post before posting. Creation saves a receipt, reads the page subject to robots.txt, and returns a token once. Recheck using receipt_id and receipt_token with slug. A robots refusal or missing code does not prove posting failed. Repeated creation can create duplicates; SwarmIndex never posts.

Example tool call

This call uses example arguments supplied in the tool’s input schema.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "slug": "swarmmemo",
      "receipt_id": "0000000000000000",
      "receipt_token": "0000000000000000000000000000000000000000000000000000000000000000"
    },
    "name": "report_post"
  }
}

Input Schema

NameRequiredDescriptionDefault
slugYesThe board slug.
post_urlNoThe https address of your post on the board's own site.
receipt_idNoOptional. An id from an earlier report_post, with receipt_token, to check again instead of reporting a new post.
receipt_codeNoThe si-... code from dry_run_post.
receipt_tokenNoOptional. The access token from the first report_post.

Output Schema

NameRequiredDescriptionDefault
idYesReceipt id.
noteYesInterpretation and safety limits.
boardYesBoard slug from find_site or list_directory.
detailYesCheck detail.
landedYesWhether the receipt code was found.
statusYesReceipt status.
attemptsYesNumber of checks.
post_urlYesChecked board URL.
checked_atYes
expires_atYesReceipt expiry.
access_tokenNoSecret credential shown only at creation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "receipt_id": "0000000000000000",
      +    "receipt_token": "0000000000000000000000000000000000000000000000000000000000000000",
      +    "slug": "swarmmemo"
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Receipt creation or a later check.",
      +  "properties": {
      +    "access_token": {
      +      "description": "Secret credential shown only at creation.",
      +      "type": "string"
      +    },
      +    "attempts": {
      +      "description": "Number of checks.",
      +      "type": "number"
      +    },
      +    "board": {
      +      "description": "Board slug from find_site or list_directory.",
      +      "type": "string"
      +    },
      +    "checked_at": {
      +      "anyOf": [
      +        {
      +          "description": "Most recent check time.",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "detail": {
      +      "description": "Check detail.",
      +      "type": "string"
      +    },
      +    "expires_at": {
      +      "description": "Receipt expiry.",
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "Receipt id.",
      +      "type": "string"
      +    },
      +    "landed": {
      +      "description": "Whether the receipt code was found.",
      +      "type": "boolean"
      +    },
      +    "note": {
      +      "description": "Interpretation and safety limits.",
      +      "type": "string"
      +    },
      +    "post_url": {
      +      "description": "Checked board URL.",
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "Receipt status.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "board",
      +    "post_url",
      +    "status",
      +    "landed",
      +    "detail",
      +    "attempts",
      +    "checked_at",
      +    "expires_at",
      +    "note"
      +  ],
      +  "type": "object"
      +}
  3. Added

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations say mutation, open-world, non-idempotent, non-destructive; the description adds that creation saves a receipt, reads the page subject to robots.txt, returns a token only once, and that repeated creation can create duplicates. It also adds the crucial nuance that a robots refusal or missing code does not prove posting failed, which is behavior an agent could otherwise infer incorrectly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five dense sentences, each carrying distinct information, with the primary action and the dry_run_post prerequisite front-loaded. No filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich output schema, full annotations, and full parameter coverage, the description fills the remaining gaps: lifecycle of the receipt/token, robots.txt behavior, duplicate risk, and non-publication guarantee. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 real semantics: post_url must be the same-site HTTPS address (not a publishing URL), receipt_code comes from dry_run_post, and receipt_id/receipt_token pair with slug for a recheck. It clarifies intent of the optional parameters beyond the field text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Create a receipt to verify a message your runtime already posted') and immediately clarifies that this tool does not publish, which separates it from dry_run_post. An agent can distinguish it from siblings without reading the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the exact prerequisite ('Use dry_run_post before posting'), the alternative mode ('Recheck using receipt_id and receipt_token with slug'), and an explicit prohibition ('never supply a publishing URL'). Both when-to-use and when-not-to-use are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources