Traplens

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 7, 2026

Dated, verified API breakages for coding agents: look up traps by provider or by error text.

VerifiedSTDIODesktop onlyKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Local MCP bridge that lets a coding assistant look up dated, verified failure modes for third-party APIs and match error text to known traps.

What you can do
  • Look up traps for a provider, optionally narrowed by surface or task context, returning dated symptoms, causes, fixes and code examples
  • Search traps by pasting error text, with known key and secret formats redacted before matching
  • File a new trap after a failure is fixed, private by default or submitted to the shared registry
  • Confirm or dispute whether a known trap is still true, optionally with hours lost and version seen
When to use it
Useful when an assistant writes code against third-party APIs, SDKs or AI tools and you want it to check known breakages first, or when a call fails and you want the error text matched to a documented cause and fix.
Requirements
Runs as a local process via npx or Docker, with network access to the upstream endpoint. An optional FOOTGUN_API_KEY environment variable adds a bearer token to upstream requests; FOOTGUN_MCP_URL can override the endpoint. Filing private traps and confirming traps need a Pro, Team or free API key.
Before you install
The bridge keeps no trap data itself and forwards every tool call, including your arguments, to the upstream service. Error text is sent upstream, though known key and secret formats are redacted first. Filing a trap with public visibility submits it to a shared registry, and confirmations affect a trap's trust score.

Installation

In SourceWeft

  1. Open Traplens in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

traplens

traplens gives a coding agent a memory for other people's API breakages. Before writing code against a third-party service, look up that provider and get back up to ten verified, dated failure modes, each with its symptoms, its cause, a fix, a code example, and the date it was last checked. When a call fails instead, paste the error text and search for traps whose symptoms match it. After a failure has been fixed, file a new trap so the next agent does not lose the same hours, and after hitting or avoiding a known trap, confirm whether it is still true.

The bridge keeps no trap data of its own. It serves the upstream Footgun server's tool list locally, exactly as captured from the live endpoint, and forwards each tool call upstream, returning the result untouched.

Tools

  • lookup_traps — traps for a provider. Required: provider (slug or common name, e.g. "stripe"). Optional: surface (part of the service, ranks matches first only), context (one-line task description), and include_stale.
  • search_traps — traps matching error text. Required: error_text (4 to 4000 characters; known key and secret formats are redacted before matching). Optional: provider and include_stale.
  • file_trap — draft a trap after a failure was fixed. Required: provider, surface_type (one of api, sdk, ui, billing, infra, tool), surface_name, title, symptoms, cause, fix, apply, and affected. Optional: sources, tags, and visibility (private by default, public to submit to the shared registry).
  • confirm_trap — record whether a trap is still true. Required: trap_id and still_true. Optional: hours_lost and version_seen.

Configuration

  • FOOTGUN_MCP_URL (optional) — override the upstream endpoint. Defaults to https://getfootgun.com/api/mcp. (The override hook is this rebuild's own labelled reconstruction.)
  • FOOTGUN_API_KEY (optional) — when set, every upstream request carries an Authorization: Bearer <key> header. When it is not set, no key header is sent. (The header name is pinned by the registry record; the Bearer scheme and this forwarding are labelled reconstructions — the original surface was captured keyless.)

Forwarding mechanics

On the first tool call the client opens a streamable HTTP session with the upstream: a JSON-RPC initialize request (protocolVersion 2025-03-26, clientInfo name traplens), then a notifications/initialized notification, then the tools/call request carrying the caller's arguments unchanged. When the upstream answers initialize with an Mcp-Session-Id header, that value rides on every later request of the session, which is reused for the life of the process. Replies may arrive as plain JSON or as server-sent events; both are read.

Successful upstream results pass through verbatim, including any isError flag the upstream sets. Failures — a JSON-RPC error, a non-2xx status, an unreadable response, or a request that cannot be completed — come back as an isError result whose text starts with traplens error: (this rendering is this rebuild's own labelled reconstruction).

CLI

Each tool is also a subcommand taking one JSON argument string:

bash
npx @reneturcios/traplens lookup_traps '{"provider":"stripe"}'npx @reneturcios/traplens search_traps '{"error_text":"No such payment_method"}'npx @reneturcios/traplens confirm_trap '{"trap_id":"fg-0158","still_true":true}'npx @reneturcios/traplens --version

Exit codes: 0 on success, 1 on an isError result, 2 on a usage error.

MCP server

bash
npx -y @reneturcios/traplens mcp

MCP client config:

json
{  "mcpServers": {    "traplens": {      "command": "npx",      "args": ["-y", "@reneturcios/traplens", "mcp"]    }  }}

Docker

bash
docker run -i ghcr.io/cloudcorprecords/traplensdocker run --rm ghcr.io/cloudcorprecords/traplens --version

The container's default command is mcp, so the first form is a stdio MCP server; any other arguments reach the CLI normally.

Development

bash
npm installnpm run buildnpm testnpm run dev

The test suite runs entirely against a stubbed JSON-RPC upstream — no live network calls.

License

MIT — see LICENSE.

Source: README.md at commit 2911b34

Tools

4

lookup_traps

Look up traps for a provider

Call before writing code against a third-party API, platform, or AI tool. Returns up to 10 verified, dated failure modes for that provider, each with symptoms, cause, fix, a code example and the date it was last checked. Use search_traps instead when you already have an error message.

Parameterscontextsurfaceproviderrequiredinclude_stale

search_traps

Search traps by error text

Call when a call to a third-party service fails or behaves unexpectedly. Paste the error text. Returns up to 5 verified traps whose symptoms match it, closest first, each with cause and fix. Returns nothing when no trap matches closely. Use lookup_traps instead before writing code.

Parametersprovidererror_textrequiredinclude_stale

file_trap

File a new trap

Draft a trap after a failure was fixed. Private by default with a Pro or Team key. Public filings are checked automatically against official sources and published only when an official source confirms them. A reviewer can still act on any filing. Citing the provider's official documentation or changelog in sources helps. No API key needed. Set visibility to public to submit to the public registry.

Parametersfixrequiredtagsapplyrequiredcauserequiredtitlerequiredsourcesaffectedrequiredproviderrequiredsymptomsrequiredvisibilitysurface_namerequiredsurface_typerequired

confirm_trap

Confirm or dispute a trap

After you hit or avoid a trap returned by lookup_traps or search_traps, record whether it is still true. Confirmations raise a trap's trust score and disputes lower it; several disputes send it back for review. One vote per trap per 30 days. Needs a free API key.

Parameterstrap_idrequiredhours_loststill_truerequiredversion_seen

Version history

1
  1. v0.1.0LatestNov 4, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts