Skip to main content
Glama

Check what the network knows about a tool failure

check_tool_failure
Read-onlyIdempotent

Use FailEcho when another tool fails, before retrying blindly. Call this BEFORE retrying a failed tool, API or MCP call. Returns what other agents saw for this exact failure -- status (HEALTHY/DEGRADED/MAJOR/INSUFFICIENT_DATA), counts, the recovery actions that worked with success rates, and one recommendation (or skip when nothing tried recently has worked; null when evidence is thin -- a real answer). Works on your own history before anyone else joins. Free, anonymous, stores nothing, never rate limited.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
serviceYesThe MCP server's own name (serverInfo.name) or the API host, e.g. 'api.github.com'. Not your client's local alias.
verboseNoFull record (timestamps, rates, effective counts, every action). Default: the compact answer.
versionNoService/tool version, if known.
operationYesThe tool or endpoint as the server names it, e.g. 'create_issue', not 'mcp__github__create_issue'.
error_codeNoCode, e.g. '422', 'ECONNRESET'.
error_typeNoFailure class, e.g. 'validation_error', 'timeout', 'rate_limit', 'auth_error'.
reporter_idNoOptional stable agent id; hashed, never stored raw. Lets from_other_agents be answered.
schema_hashNoShort hash of the tool schema you used (separates 'API broke' from 'schema stale').
error_messageNoThe error text only; normalized server-side, not stored by this call.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changed
    • removedInput schema / properties / error_code / anyOf
      Removed value: -[
      -  {
      -    "maxLength": 32,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / error_code / default
      Removed value: -null
    • addedInput schema / properties / error_code / maxLength
      Added value: +32
    • addedInput schema / properties / error_code / type
      Added value: +"string"
    • removedInput schema / properties / error_message / anyOf
      Removed value: -[
      -  {
      -    "maxLength": 2000,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / error_message / default
      Removed value: -null
    • addedInput schema / properties / error_message / maxLength
      Added value: +2000
    • addedInput schema / properties / error_message / type
      Added value: +"string"
    • removedInput schema / properties / error_type / anyOf
      Removed value: -[
      -  {
      -    "maxLength": 64,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / error_type / default
      Removed value: -null
    • addedInput schema / properties / error_type / maxLength
      Added value: +64
    • addedInput schema / properties / error_type / type
      Added value: +"string"
    • removedInput schema / properties / reporter_id / anyOf
      Removed value: -[
      -  {
      -    "maxLength": 200,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / reporter_id / default
      Removed value: -null
    • addedInput schema / properties / reporter_id / maxLength
      Added value: +200
    • addedInput schema / properties / reporter_id / type
      Added value: +"string"
    • removedInput schema / properties / schema_hash / anyOf
      Removed value: -[
      -  {
      -    "maxLength": 64,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / schema_hash / default
      Removed value: -null
    • addedInput schema / properties / schema_hash / maxLength
      Added value: +64
    • addedInput schema / properties / schema_hash / type
      Added value: +"string"
    • removedInput schema / properties / version / anyOf
      Removed value: -[
      -  {
      -    "maxLength": 64,
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / version / default
      Removed value: -null
    • addedInput schema / properties / version / maxLength
      Added value: +64
    • addedInput schema / properties / version / type
      Added value: +"string"
  2. Changed19 schema fields changed
    • changedInput schema / properties / error_code / description
      Previous value: -"Protocol/vendor code, e.g. '422', 'ECONNRESET'."New value: +"Code, e.g. '422', 'ECONNRESET'."
    • removedInput schema / properties / error_code / title
      Removed value: -"Error Code"
    • changedInput schema / properties / error_message / description
      Previous value: -"The error text you received. Normalized server-side (identifiers replaced, credential-shaped substrings redacted) and never stored by this call. Do not include prompts, tool arguments, secrets or user content."New value: +"The error text only; normalized server-side, not stored by this call."
    • removedInput schema / properties / error_message / title
      Removed value: -"Error Message"
    • changedInput schema / properties / error_type / description
      Previous value: -"Short failure class, e.g. 'validation_error', 'timeout', 'rate_limit', 'auth_error'."New value: +"Failure class, e.g. 'validation_error', 'timeout', 'rate_limit', 'auth_error'."
    • removedInput schema / properties / error_type / title
      Removed value: -"Error Type"
    • changedInput schema / properties / operation / description
      Previous value: -"The tool or endpoint exactly as the server defines it, e.g. 'create_issue' -- without client prefixes such as 'mcp__github__'."New value: +"The tool or endpoint as the server names it, e.g. 'create_issue', not 'mcp__github__create_issue'."
    • removedInput schema / properties / operation / title
      Removed value: -"Operation"
    • changedInput schema / properties / reporter_id / description
      Previous value: -"Optional stable identifier for your agent. Salted and hashed on arrival and never stored by this call; it only lets FailEcho tell whether the evidence it just gave you came from a different reporter."New value: +"Optional stable agent id; hashed, never stored raw. Lets from_other_agents be answered."
    • removedInput schema / properties / reporter_id / title
      Removed value: -"Reporter Id"
    • changedInput schema / properties / schema_hash / description
      Previous value: -"Short hash of the tool schema you used. Lets FailEcho separate 'the API broke' from 'your tool schema is stale'."New value: +"Short hash of the tool schema you used (separates 'API broke' from 'schema stale')."
    • removedInput schema / properties / schema_hash / title
      Removed value: -"Schema Hash"
    • changedInput schema / properties / service / description
      Previous value: -"What was called, named the way other agents will name it: an MCP server's own name (the one it reports in serverInfo.name), or an HTTP API's host, e.g. 'api.github.com'. Not your client's local alias for it."New value: +"The MCP server's own name (serverInfo.name) or the API host, e.g. 'api.github.com'. Not your client's local alias."
    • removedInput schema / properties / service / title
      Removed value: -"Service"
    • changedInput schema / properties / verbose / description
      Previous value: -"Return the full record (timestamps, per-window rates, effective counts, every action). Default false: the compact answer an agent acts on, about a quarter of the tokens."New value: +"Full record (timestamps, rates, effective counts, every action). Default: the compact answer."
    • removedInput schema / properties / verbose / title
      Removed value: -"Verbose"
    • changedInput schema / properties / version / description
      Previous value: -"Version of the failing service/tool, if known."New value: +"Service/tool version, if known."
    • removedInput schema / properties / version / title
      Removed value: -"Version"
    • removedInput schema / title
      Removed value: -"check_tool_failureArguments"
  3. Changed1 schema field changed
    • addedInput schema / properties / verbose
      Added value: +{
      +  "default": false,
      +  "description": "Return the full record (timestamps, per-window rates, effective counts, every action). Default false: the compact answer an agent acts on, about a quarter of the tokens.",
      +  "title": "Verbose",
      +  "type": "boolean"
      +}
  4. Changed2 schema fields changed
    • changedInput schema / properties / operation / description
      Previous value: -"Operation/tool name that failed, e.g. 'create_issue'."New value: +"The tool or endpoint exactly as the server defines it, e.g. 'create_issue' -- without client prefixes such as 'mcp__github__'."
    • changedInput schema / properties / service / description
      Previous value: -"Tool/service identifier, e.g. 'github-mcp'."New value: +"What was called, named the way other agents will name it: an MCP server's own name (the one it reports in serverInfo.name), or an HTTP API's host, e.g. 'api.github.com'. Not your client's local alias for it."
  5. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds valuable context beyond annotations: it is anonymous, stores nothing, never rate limited, and works on personal history before others join. No contradiction with annotations.

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?

The description is dense and front-loaded, with purpose stated in the first sentence. The first two sentences are somewhat redundant ('Use FailEcho when another tool fails' and 'Call this BEFORE retrying a failed tool'), but all other content earns its place, especially the output semantics and guarantees.

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?

Given a rich output schema, 100% parameter coverage, and robust annotations, the description fully covers what the agent needs: when to call, what it returns, edge cases (skip/null), and operational guarantees. Nothing important is missing.

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 coverage is 100%, so the baseline is 3 with the schema carrying parameter meaning. The description adds context about how parameters together identify an 'exact failure' and explains output semantics, but it does not add per-parameter detail beyond the schema.

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 states a concrete action—query FailEcho about a tool failure—and clearly explains what it returns (status, counts, recovery actions, recommendation). It contrasts with the sibling report_* tools by being the check/query counterpart, so an agent can distinguish it 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.

Usage Guidelines5/5

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

Explicitly says when to use it ('when another tool fails'), the required ordering ('Call this BEFORE retrying'), and the scope (failed tool, API, or MCP call). It also clarifies the semantics of recommendation outputs ('skip' vs null) so the agent knows what to expect in different evidence conditions.

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.