← FailMemory home · Dashboard · Quickstart
Install the FailMemory MCP Server
fail-memory-mcp connects an MCP-compatible agent host to FailMemory. It
provides two tools:
fail_memory_lookup— check for a known failure before an external call.fail_memory_report— contribute evidence after an external call fails.
Both tools require a FailMemory API key. Create a free account and generate your key before configuring your host. The key is shown once, so save it when it appears.
The package defaults to https://failmemory.dev. The examples set
FAIL_MEMORY_API_URL explicitly so the endpoint and environment variable are
unambiguous.
Claude Desktop
Edit your Claude Desktop configuration:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Replace fm_live_your_key_here, then add:
{
"mcpServers": {
"fail-memory": {
"command": "npx",
"args": ["-y", "fail-memory-mcp"],
"env": {
"FAIL_MEMORY_API_URL": "https://failmemory.dev",
"FAIL_MEMORY_API_KEY": "fm_live_your_key_here"
}
}
}
}
Fully quit and relaunch Claude Desktop. Start a new chat and confirm
fail_memory_lookup and fail_memory_report appear in the tool list.
Cursor
Open Cursor's MCP settings, or edit ~/.cursor/mcp.json directly. Replace
fm_live_your_key_here, then add:
{
"mcpServers": {
"fail-memory": {
"command": "npx",
"args": ["-y", "fail-memory-mcp"],
"env": {
"FAIL_MEMORY_API_URL": "https://failmemory.dev",
"FAIL_MEMORY_API_KEY": "fm_live_your_key_here"
}
}
}
}
Restart Cursor and ask its agent to list available tools.
Cline
Open the Cline MCP settings from the VS Code command palette. Replace
fm_live_your_key_here, then add:
{
"mcpServers": {
"fail-memory": {
"command": "npx",
"args": ["-y", "fail-memory-mcp"],
"env": {
"FAIL_MEMORY_API_URL": "https://failmemory.dev",
"FAIL_MEMORY_API_KEY": "fm_live_your_key_here"
}
}
}
}
Reload the VS Code window. Cline should discover both FailMemory tools.
Tool reference
fail_memory_lookup
Call before an external API request.
Input:
method(string, required) — HTTP method, case-insensitive.url(string, required) — full URL; normalized server-side.payload(JSON, optional) — request body used locally to calculate a value-free structural fingerprint. Body values are never sent to FailMemory.api_key(string, optional) — overridesFAIL_MEMORY_API_KEYfor this call.
On a hit, inspect provenance: organic means three or more independent
signers corroborated the failure; seeded means a first-party probe observed
it without that independent corroboration.
fail_memory_report
Call after an external API request fails.
Input:
method(string, required) — method of the failed call.url(string, required) — URL of the failed call.status_code(number, optional) — returned HTTP status, if any.error_message(string, optional) — short failure description.payload(JSON, optional) — failed request body used locally to calculate the same value-free structural fingerprint as lookup. Values are not sent.api_key(string, optional) — overridesFAIL_MEMORY_API_KEYfor this call.
The report is authenticated by the configured API key and contributes one signer of evidence for that normalized pattern. Repeated reports from the same key update the existing evidence rather than creating extra signers.
When a call has a JSON body, pass the same body structure to payload on the
lookup and report tools. The MCP server reduces it to field names and JSON
types, hashes that descriptor locally, and sends only the digest. Two bodies
with the same shape match even when every value differs.
Current access
Authenticated lookups and reports are free and unlimited during Seeding. No card, prepaid balance, or credit deposit is required. Paid Checkout is not currently live.
Environment variables
| Variable | Default | Purpose |
|---|---|---|
FAIL_MEMORY_API_URL |
https://failmemory.dev |
API base URL. Override only for a self-hosted or local server. |
FAIL_MEMORY_API_KEY |
unset | Default key used by both MCP tools. Get one at failmemory.dev/signup. |