Skip to main content
Glama

Report Relay Failure

report_relay_failure

Report that a relay in the DPYC set was unreachable, and re-rank it.

A report does not set a relay's rank. It asks the Oracle to measure that relay now, and the Oracle's own probe decides. A false or mistaken report therefore costs one probe and changes nothing — no caller can demote a healthy relay by asserting that it is down.

Report only failures. Successes are far too frequent to be worth carrying, and a relay that works needs no announcement.

Input Schema

NameRequiredDescriptionDefault
modeNoWhat was being attempted — ``"send"``, ``"read"``, or ``"unknown"``. Recorded for the human reading the logs.unknown
relayYesThe relay that failed. Must already be in the DPYC set — this tool re-measures the curated set, it is not a probe-anything primitive that can be aimed at arbitrary hosts.
signed_eventYesA Nostr event signed by ``reporter_npub`` whose content contains the relay URL, created within the last few minutes. Stateless by design: no challenge is issued first, because a challenge store would not survive this service's recycles — and a relay report is most needed exactly when relays are broken.
reporter_npubYesThe reporting operator's npub.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / mode / description
      Added value: +"What was being attempted — ``\"send\"``, ``\"read\"``, or\n``\"unknown\"``. Recorded for the human reading the logs."
    • addedInput schema / properties / relay / description
      Added value: +"The relay that failed. Must already be in the DPYC set —\nthis tool re-measures the curated set, it is not a probe-anything\nprimitive that can be aimed at arbitrary hosts."
    • addedInput schema / properties / reporter_npub / description
      Added value: +"The reporting operator's npub."
    • addedInput schema / properties / signed_event / description
      Added value: +"A Nostr event signed by ``reporter_npub`` whose content\ncontains the relay URL, created within the last few minutes.\nStateless by design: no challenge is issued first, because a\nchallenge store would not survive this service's recycles — and\na relay report is most needed exactly when relays are broken."
  2. Added

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does well: it discloses the side effect (triggers an Oracle probe), the non-effect (does not set rank, cannot be used to demote a healthy relay), abuse resistance ('costs one probe and changes nothing'), and the stateless no-challenge design. It does not discuss rate limits on repeated reports or what happens on a failed probe.

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

Conciseness4/5

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

Purpose is front-loaded in the first line, and the rest elaborates usefully. Mild redundancy: 'no caller can demote a healthy relay by asserting that it is down' restates 'A report does not set a relay's rank,' costing a clause without new information.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers intent, effect, non-effect, and the stateless signing model. Missing only secondary operational details such as what happens if the relay is out of the DPYC set or how repeated reports are handled.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces the 'relay must be in the DPYC set' constraint and the failure-only intent behind `mode`, but adds no syntax, format, or validation detail beyond what the schema already states.

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?

Specific verb and resource ('Report that a relay in the DPYC set was unreachable'), plus the secondary effect (re-rank). The scoping clause ('must already be in the DPYC set... not a probe-anything primitive') cleanly separates it from siblings like get_relays, service_status, or resolve_service.

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

Usage Guidelines4/5

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

Gives explicit when-not guidance: 'Report only failures. Successes are far too frequent to be worth carrying.' It also frames the expected outcome (a probe, not a rank change). It stops short of naming an alternative tool for the read/check side, so routing is strong but not exhaustive.

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.