failecho
Server Details
Check what other agents hit the same tool failure — and what recovery worked. Ask before retrying.
- Status
- Healthy
- Uptime
- 99.9% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- FailEcho/failecho
- GitHub Stars
- 2
- Server Listing
- FailEcho
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: check_tool_failure queries shared failure intelligence, report_tool_failure submits a failure, report_tool_success submits a success, and report_recovery_outcome records the result of a recovery attempt. The descriptions explicitly separate when each should be called, so an agent should not confuse them.
All tool names follow the same verb_noun snake_case pattern: check_tool_failure, report_tool_failure, report_tool_success, and report_recovery_outcome. The report_* prefix creates a clear family while check_tool_failure stands apart as the read operation, making the interface predictable.
Four tools is well-scoped for a focused failure-intelligence service. Each tool covers a distinct necessary operation: querying, failure reporting, success reporting, and recovery outcome reporting, with no redundant or filler tools.
The tool surface forms a complete cycle for the domain: agents can query known failure intelligence, contribute new failures, report successes to keep statistics meaningful, and log recovery outcomes to improve future recommendations. No obvious dead ends or missing operations are apparent.
Available Tools
4 toolscheck_tool_failureCheck what the network knows about a tool failureARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | The MCP server's own name (serverInfo.name) or the API host, e.g. 'api.github.com'. Not your client's local alias. | |
| verbose | No | Full record (timestamps, rates, effective counts, every action). Default: the compact answer. | |
| version | No | Service/tool version, if known. | |
| operation | Yes | The tool or endpoint as the server names it, e.g. 'create_issue', not 'mcp__github__create_issue'. | |
| error_code | No | Code, e.g. '422', 'ECONNRESET'. | |
| error_type | No | Failure class, e.g. 'validation_error', 'timeout', 'rate_limit', 'auth_error'. | |
| reporter_id | No | Optional stable agent id; hashed, never stored raw. Lets from_other_agents be answered. | |
| schema_hash | No | Short hash of the tool schema you used (separates 'API broke' from 'schema stale'). | |
| error_message | No | The error text only; normalized server-side, not stored by this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
report_recovery_outcomeReport whether a recovery action workedAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | What you tried, e.g. 'refresh_schema' ([a-z0-9_.-]). | |
| successful | Yes | True when the action resolved the failure. | |
| fingerprint | Yes | From check_tool_failure or report_tool_failure (32 hex chars). | |
| reporter_id | No | Optional stable agent id; hashed, never stored raw. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only show all hints false, so the description adds value by explaining that 'Every recommendation others get is built from these'—indicating the report feeds a recommendation system. It also adds the 'one outcome per attempt' constraint. It doesn't disclose side effects like rate limits, but the added context is meaningful.
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?
Two tightly written sentences: the first front-loads the trigger condition and action, the second explains the importance and the fingerprint requirement. No wasted words or repetition of schema details.
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?
The description covers when to use, what to report, and where to get the fingerprint, which is sufficient for a tool with 3 required parameters and a full output schema. The output schema already covers return values, so nothing critical is missing.
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%, with each parameter already described including patterns (fingerprint hex) and maximum lengths. The description reinforces fingerprint provenance and adds the 'one outcome per attempt' rule, but this is usage guidance rather than new parameter meaning. Baseline of 3 is appropriate.
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?
The description states the exact action and resource: 'report whether it worked' after acting on a failure, with a specific list of recovery actions (retry, wait, refresh_schema, etc.). It clearly distinguishes this tool from siblings by focusing on recovery outcomes rather than initial failure reporting.
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?
It explicitly says when to use: 'After acting on a failure... report whether it worked,' and instructs to pass the fingerprint from check_tool_failure or report_tool_failure, with one outcome per attempt. It does not explicitly name alternatives to avoid or state when-not, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_tool_failureReport a failed tool call to the networkAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | The MCP server's own name (serverInfo.name) or the API host, e.g. 'api.github.com'. Not your client's local alias. | |
| version | No | Version of the service/tool. | |
| operation | Yes | The tool or endpoint as the server names it, e.g. 'create_issue', not 'mcp__github__create_issue'. | |
| error_code | No | Protocol/vendor code, e.g. '422'. | |
| error_type | No | Short failure class, e.g. 'validation_error'. | |
| latency_ms | No | Observed call latency in milliseconds. | |
| reporter_id | No | Optional stable identifier for your agent. Salted and hashed on arrival; never stored raw. | |
| schema_hash | No | Short hash of the tool schema used. | |
| error_message | No | Error text. Normalized before storage; no secrets please. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The privacy paragraph adds substantial behavioral context beyond the sparse annotations: shared network, metadata-only policy, server-side normalization, hashed reporter_id, and per-client rate limiting. This is critical operational information that helps the agent use the tool safely and would not be derivable from the schema or annotations.
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?
Two tight paragraphs: the purpose is front-loaded in one sentence, and the privacy/behavior block is densely packed with essential exceptions. No filler, though the privacy section is long enough that it could be considered slightly heavy or combined.
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?
With an output schema present and 100% parameter coverage, the description provides the missing operational context: when to call, privacy boundaries, rate limiting, and identity hashing. It does not explain the response shape, but the output schema covers that. Overall adequate for a side-effectful reporting tool.
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%, so the baseline is 3. The description reinforces privacy constraints (e.g., no secrets in error_message) and the hashing behavior of reporter_id, but these are already present in the schema descriptions. It adds no new per-parameter semantics beyond the schema.
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 ('Report a failed tool/API/MCP call so others can recognise it') and gives clear context ('call after a failure'). It names a sibling (check_tool_failure) but does not explicitly contrast with report_tool_success or report_recovery_outcome, so it stops short of full differentiation.
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 when to call it ('after a failure') and suggests a companion call ('alongside check_tool_failure'). However, it provides no guidance on when NOT to use it versus the other sibling tools, leaving some routing decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_tool_successReport a successful tool call to the networkAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | The MCP server's own name (serverInfo.name) or the API host, e.g. 'api.github.com'. Not your client's local alias. | |
| version | No | Version of the service/tool. | |
| operation | Yes | The tool or endpoint as the server names it, e.g. 'create_issue', not 'mcp__github__create_issue'. | |
| latency_ms | No | Observed call latency in milliseconds. | |
| reporter_id | No | Optional stable agent id; hashed, never stored raw. | |
| schema_hash | No | Short hash of the tool schema used. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate no readOnly or idempotent hints, so the description must convey the behavioral impact. It states what to report (latency, service, operation) and what not to report (error data), adding context about the network's aggregation, which is beyond the annotation schema.
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 a single, tightly packed sentence followed by a short exclusion list. It front-loads the core purpose and adds critical context without unnecessary fluff. Every sentence earns its place.
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?
Given the tool has an output schema and high schema coverage, the description covers the necessary context for calling it. It explains the rationale for reporting successes and what to exclude (error data), but could have been more explicit about when to use it versus report_tool_failure. Minor gap.
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%, so baseline is 3. The description adds extra guidance on the 'service' (server's own name vs client alias) and 'operation' (server naming), which enriches the parameter meanings. This extra semantic guidance justifies a 4.
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?
The description clearly states the verb 'Report' and the resource 'a call SUCCEEDED', and explicitly contrasts with failure reporting. It distinguishes from siblings like report_tool_failure by defining the success event and what data to exclude.
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?
The description explicitly frames the network's failure-rate logic, saying a network that only hears failures cannot tell broken from busy, which guides when to call this tool to report successes. It does not name siblings directly but the context makes the usage clear.
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.
4 tool updates
- Changed
check_tool_failure24 fields changed- removed
Input schema / properties / error_code / anyOfRemoved value: -[ - { - "maxLength": 32, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / error_code / defaultRemoved value: -null - added
Input schema / properties / error_code / maxLengthAdded value: +32 - added
Input schema / properties / error_code / typeAdded value: +"string" - removed
Input schema / properties / error_message / anyOfRemoved value: -[ - { - "maxLength": 2000, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / error_message / defaultRemoved value: -null - added
Input schema / properties / error_message / maxLengthAdded value: +2000 - added
Input schema / properties / error_message / typeAdded value: +"string" - removed
Input schema / properties / error_type / anyOfRemoved value: -[ - { - "maxLength": 64, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / error_type / defaultRemoved value: -null - added
Input schema / properties / error_type / maxLengthAdded value: +64 - added
Input schema / properties / error_type / typeAdded value: +"string" - removed
Input schema / properties / reporter_id / anyOfRemoved value: -[ - { - "maxLength": 200, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / reporter_id / defaultRemoved value: -null - added
Input schema / properties / reporter_id / maxLengthAdded value: +200 - added
Input schema / properties / reporter_id / typeAdded value: +"string" - removed
Input schema / properties / schema_hash / anyOfRemoved value: -[ - { - "maxLength": 64, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / schema_hash / defaultRemoved value: -null - added
Input schema / properties / schema_hash / maxLengthAdded value: +64 - added
Input schema / properties / schema_hash / typeAdded value: +"string" - removed
Input schema / properties / version / anyOfRemoved value: -[ - { - "maxLength": 64, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / version / defaultRemoved value: -null - added
Input schema / properties / version / maxLengthAdded value: +64 - added
Input schema / properties / version / typeAdded value: +"string"
- Changed
report_recovery_outcome4 fields changed- removed
Input schema / properties / reporter_id / anyOfRemoved value: -[ - { - "maxLength": 200, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / reporter_id / defaultRemoved value: -null - added
Input schema / properties / reporter_id / maxLengthAdded value: +200 - added
Input schema / properties / reporter_id / typeAdded value: +"string"
- Changed
report_tool_failure28 fields changed- removed
Input schema / properties / error_code / anyOfRemoved value: -[ - { - "maxLength": 32, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / error_code / defaultRemoved value: -null - added
Input schema / properties / error_code / maxLengthAdded value: +32 - added
Input schema / properties / error_code / typeAdded value: +"string" - removed
Input schema / properties / error_message / anyOfRemoved value: -[ - { - "maxLength": 2000, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / error_message / defaultRemoved value: -null - added
Input schema / properties / error_message / maxLengthAdded value: +2000 - added
Input schema / properties / error_message / typeAdded value: +"string" - removed
Input schema / properties / error_type / anyOfRemoved value: -[ - { - "maxLength": 64, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / error_type / defaultRemoved value: -null - added
Input schema / properties / error_type / maxLengthAdded value: +64 - added
Input schema / properties / error_type / typeAdded value: +"string" - removed
Input schema / properties / latency_ms / anyOfRemoved value: -[ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / latency_ms / defaultRemoved value: -null - added
Input schema / properties / latency_ms / minimumAdded value: +0 - added
Input schema / properties / latency_ms / typeAdded value: +"integer" - removed
Input schema / properties / reporter_id / anyOfRemoved value: -[ - { - "maxLength": 200, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / reporter_id / defaultRemoved value: -null - added
Input schema / properties / reporter_id / maxLengthAdded value: +200 - added
Input schema / properties / reporter_id / typeAdded value: +"string" - removed
Input schema / properties / schema_hash / anyOfRemoved value: -[ - { - "maxLength": 64, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / schema_hash / defaultRemoved value: -null - added
Input schema / properties / schema_hash / maxLengthAdded value: +64 - added
Input schema / properties / schema_hash / typeAdded value: +"string" - removed
Input schema / properties / version / anyOfRemoved value: -[ - { - "maxLength": 64, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / version / defaultRemoved value: -null - added
Input schema / properties / version / maxLengthAdded value: +64 - added
Input schema / properties / version / typeAdded value: +"string"
- Changed
report_tool_success16 fields changed- removed
Input schema / properties / latency_ms / anyOfRemoved value: -[ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / latency_ms / defaultRemoved value: -null - added
Input schema / properties / latency_ms / minimumAdded value: +0 - added
Input schema / properties / latency_ms / typeAdded value: +"integer" - removed
Input schema / properties / reporter_id / anyOfRemoved value: -[ - { - "maxLength": 200, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / reporter_id / defaultRemoved value: -null - added
Input schema / properties / reporter_id / maxLengthAdded value: +200 - added
Input schema / properties / reporter_id / typeAdded value: +"string" - removed
Input schema / properties / schema_hash / anyOfRemoved value: -[ - { - "maxLength": 64, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / schema_hash / defaultRemoved value: -null - added
Input schema / properties / schema_hash / maxLengthAdded value: +64 - added
Input schema / properties / schema_hash / typeAdded value: +"string" - removed
Input schema / properties / version / anyOfRemoved value: -[ - { - "maxLength": 64, - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / version / defaultRemoved value: -null - added
Input schema / properties / version / maxLengthAdded value: +64 - added
Input schema / properties / version / typeAdded value: +"string"
4 tool updates
- Changed
check_tool_failure19 fields changed- changed
Input schema / properties / error_code / descriptionPrevious value: -"Protocol/vendor code, e.g. '422', 'ECONNRESET'."New value: +"Code, e.g. '422', 'ECONNRESET'." - removed
Input schema / properties / error_code / titleRemoved value: -"Error Code" - changed
Input schema / properties / error_message / descriptionPrevious 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." - removed
Input schema / properties / error_message / titleRemoved value: -"Error Message" - changed
Input schema / properties / error_type / descriptionPrevious 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'." - removed
Input schema / properties / error_type / titleRemoved value: -"Error Type" - changed
Input schema / properties / operation / descriptionPrevious 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'." - removed
Input schema / properties / operation / titleRemoved value: -"Operation" - changed
Input schema / properties / reporter_id / descriptionPrevious 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." - removed
Input schema / properties / reporter_id / titleRemoved value: -"Reporter Id" - changed
Input schema / properties / schema_hash / descriptionPrevious 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')." - removed
Input schema / properties / schema_hash / titleRemoved value: -"Schema Hash" - changed
Input schema / properties / service / descriptionPrevious 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." - removed
Input schema / properties / service / titleRemoved value: -"Service" - changed
Input schema / properties / verbose / descriptionPrevious 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." - removed
Input schema / properties / verbose / titleRemoved value: -"Verbose" - changed
Input schema / properties / version / descriptionPrevious value: -"Version of the failing service/tool, if known."New value: +"Service/tool version, if known." - removed
Input schema / properties / version / titleRemoved value: -"Version" - removed
Input schema / titleRemoved value: -"check_tool_failureArguments"
- Changed
report_recovery_outcome7 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"What you tried, e.g. 'refresh_schema'. Lowercase, [a-z0-9_.-], spaces become underscores."New value: +"What you tried, e.g. 'refresh_schema' ([a-z0-9_.-])." - removed
Input schema / properties / action / titleRemoved value: -"Action" - changed
Input schema / properties / fingerprint / descriptionPrevious value: -"Fingerprint from check_tool_failure or report_tool_failure (32 lowercase hex characters)."New value: +"From check_tool_failure or report_tool_failure (32 hex chars)." - removed
Input schema / properties / fingerprint / titleRemoved value: -"Fingerprint" - removed
Input schema / properties / reporter_id / titleRemoved value: -"Reporter Id" - removed
Input schema / properties / successful / titleRemoved value: -"Successful" - removed
Input schema / titleRemoved value: -"report_recovery_outcomeArguments"
- Changed
report_tool_failure12 fields changed- removed
Input schema / properties / error_code / titleRemoved value: -"Error Code" - removed
Input schema / properties / error_message / titleRemoved value: -"Error Message" - removed
Input schema / properties / error_type / titleRemoved value: -"Error Type" - removed
Input schema / properties / latency_ms / titleRemoved value: -"Latency Ms" - changed
Input schema / properties / operation / descriptionPrevious 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'." - removed
Input schema / properties / operation / titleRemoved value: -"Operation" - removed
Input schema / properties / reporter_id / titleRemoved value: -"Reporter Id" - removed
Input schema / properties / schema_hash / titleRemoved value: -"Schema Hash" - changed
Input schema / properties / service / descriptionPrevious 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." - removed
Input schema / properties / service / titleRemoved value: -"Service" - removed
Input schema / properties / version / titleRemoved value: -"Version" - removed
Input schema / titleRemoved value: -"report_tool_failureArguments"
- Changed
report_tool_success9 fields changed- removed
Input schema / properties / latency_ms / titleRemoved value: -"Latency Ms" - changed
Input schema / properties / operation / descriptionPrevious 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'." - removed
Input schema / properties / operation / titleRemoved value: -"Operation" - removed
Input schema / properties / reporter_id / titleRemoved value: -"Reporter Id" - removed
Input schema / properties / schema_hash / titleRemoved value: -"Schema Hash" - changed
Input schema / properties / service / descriptionPrevious 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." - removed
Input schema / properties / service / titleRemoved value: -"Service" - removed
Input schema / properties / version / titleRemoved value: -"Version" - removed
Input schema / titleRemoved value: -"report_tool_successArguments"
1 tool update
- Changed
check_tool_failure1 field changed- added
Input schema / properties / verboseAdded 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" +}
3 tool updates
- Changed
check_tool_failure2 fields changed- changed
Input schema / properties / operation / descriptionPrevious 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__'." - changed
Input schema / properties / service / descriptionPrevious 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."
- Changed
report_tool_failure2 fields changed- changed
Input schema / properties / operation / descriptionPrevious value: -"Operation that failed."New value: +"The tool or endpoint exactly as the server defines it, e.g. 'create_issue' -- without client prefixes such as 'mcp__github__'." - changed
Input schema / properties / service / descriptionPrevious value: -"Tool/service identifier."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."
- Changed
report_tool_success2 fields changed- changed
Input schema / properties / operation / descriptionPrevious value: -"Operation that succeeded."New value: +"The tool or endpoint exactly as the server defines it, e.g. 'create_issue' -- without client prefixes such as 'mcp__github__'." - changed
Input schema / properties / service / descriptionPrevious value: -"Tool/service identifier."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."
4 tool updates
- First observed
check_tool_failure - First observed
report_recovery_outcome - First observed
report_tool_failure - First observed
report_tool_success
Publisher details
- Operator
- FailEcho · Publisher source
- Operator website
- https://failecho.com
- Vendor relationship
- First-party
- Documentation
- https://failecho.com/setup
- Trust center
- Not available
- Restrictions
- None. No account, no API key, no OAuth app, no paid plan, no admin approval, no regional limits. Reads are unauthenticated and never rate limited; writes are rate limited to 120 per minute per IP. MIT licensed and self-hostable if you would rather not use the shared endpoint.
Related MCP Connectors
Never let your agent repeat a bug or linger on a known issue. Search 385+ failure lessons to skip known errors instantly.
Find shared agent issues, sourced context and capabilities, or plan recovery from a constraint.
Structured failure knowledge for AI agents — dead ends, workarounds, error chains
What other agents already tried against your build error, which attempt worked, and the dead ends
Related MCP Servers
- FlicenseAqualityCmaintenancePrevents coding agents from repeatedly attempting the same failed fix by tracking attempts and blocking further fixes until the agent uses its own web search tool.4-
- AlicenseAqualityAmaintenanceAgent failure memory network. Search 235+ verified debugging lessons from real engineering sessions. Includes guided prompts for failure triage and release auditing.101,118 npm738 PyPI518Apache 2.0
- AlicenseAqualityCmaintenanceIt enables AI agents to recover from failures by diagnosing issues, refocusing broad tasks, restoring session context, and managing retries safely with bounded memory and credential redaction.61MIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to query a registry of documented AI-agent failures for debugging incidents, deployable on Cloudflare Workers.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.