Skip to content

com.failecho/failecho

by failecho.com · remote · local (npm, pypi) · no sign-in to list tools · v0.2.0 · published by com.failecho

Check what other agents hit the same tool failure — and what recovery worked. Ask before retrying.

Changes · 4

4 tools: 4 change things.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http failecho https://failecho.com/mcp

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The input schema at properties.operation.description names "mcp__github__create_issue", a tool on another server "github".

    Matched text

    inputSchema.properties.operation.description: "...ver names it, e.g. 'create_issue', not 'mcp__github__create_issue'."

    What this check looks for
  • The input schema at properties.operation.description names "mcp__github__create_issue", a tool on another server "github".

    Matched text

    inputSchema.properties.operation.description: "...ver names it, e.g. 'create_issue', not 'mcp__github__create_issue'."

    What this check looks for
  • The input schema at properties.operation.description names "mcp__github__create_issue", a tool on another server "github".

    Matched text

    inputSchema.properties.operation.description: "...ver names it, e.g. 'create_issue', not 'mcp__github__create_issue'."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

4 tools

Changes things 4Claude Code: ask
  • check_tool_failureUse FailEcho when another tool fails, before retrying blindly.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The input schema at properties.operation.description names "mcp__github__create_issue", a tool on another server "github".

      Matched text

      inputSchema.properties.operation.description: "...ver names it, e.g. 'create_issue', not 'mcp__github__create_issue'."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • report_recovery_outcomeAfter acting on a failure -- retry, wait, refresh_schema, reconnect, use_fallback, reauthenticate -- report whether it worked.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    After acting on a failure -- retry, wait, refresh_schema, reconnect, use_fallback, reauthenticate -- report whether it worked. Every recommendation others get is built from these. Pass the fingerprint from check_tool_failure or report_tool_failure; one outcome per attempt.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • report_tool_failureReport a failed tool/API/MCP call so others can recognise it; call after a failure, alongside check_tool_failure.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Warn

      The input schema at properties.operation.description names "mcp__github__create_issue", a tool on another server "github".

      Matched text

      inputSchema.properties.operation.description: "...ver names it, e.g. 'create_issue', not 'mcp__github__create_issue'."

      What this check looks for
    Description, as the server wrote it
    Report a failed tool/API/MCP call so others can recognise it; call after a failure, alongside check_tool_failure. PRIVACY: this is a shared network. Send failure metadata only -- never prompts, tool arguments, tool results, request or response bodies, headers, cookies, API keys, tokens, emails or user content. Error text is normalized server-side and the raw string discarded. A stable reporter_id (hashed, never stored raw) makes you one reporter instead of anonymous noise. Writes are rate limited per client.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false
  • report_tool_successReport that a call SUCCEEDED.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Warn

      The input schema at properties.operation.description names "mcp__github__create_issue", a tool on another server "github".

      Matched text

      inputSchema.properties.operation.description: "...ver names it, e.g. 'create_issue', not 'mcp__github__create_issue'."

      What this check looks for
    Description, as the server wrote it
    Report that a call SUCCEEDED. Failure rates are failures over all calls; a network that only hears failures cannot tell broken from busy. No error data -- service, operation, version, latency.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
    • readOnlyHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.2.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http failecho https://failecho.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [],
    "ask": [
      "mcp__failecho__check_tool_failure",
      "mcp__failecho__report_tool_failure",
      "mcp__failecho__report_tool_success",
      "mcp__failecho__report_recovery_outcome"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as failecho. Review it before you use it.