Footgun
Server Details
Dated, verified fixes for how APIs and AI coding tools break, served to your agent before it codes.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- GetFootgun/footgun
- GitHub Stars
- 0
- Server Listing
- footgun
TDQS
Scored across 4 tools
lookup_traps and search_traps both return verified traps with fixes, which could cause confusion, but their trigger contexts (before coding vs. after an error) are clearly described. confirm_trap and file_trap are well-differentiated by their actions (verify existing vs. draft new).
All names follow a consistent verb_noun snake_case pattern. The only minor inconsistency is singular 'trap' in confirm_trap and file_trap versus plural 'traps' in lookup_traps and search_traps, which is understandable but slightly breaks uniformity.
Four tools are well-scoped for a trap knowledge base: proactive lookup, reactive search, confirmation, and filing. Each tool serves a distinct and necessary purpose without redundancy.
Core lifecycle is covered: read (lookup/search), create (file), and verify (confirm). Minor gaps include no direct 'get by ID' or browse-all capability, but the search and lookup tools likely suffice for most agent workflows.
Available Tools
4 toolsconfirm_trapConfirm or dispute a trapBInspect
Record that a trap is still true (or not), with optional hours lost and version seen. Needs an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| trap_id | Yes | ||
| hours_lost | No | ||
| still_true | Yes | ||
| version_seen | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, so the safety profile is already covered, and the description is consistent with a non-destructive write. It adds one genuinely useful behavioral fact ('Needs an API key') but omits what happens on an unknown trap_id, whether repeated confirms are idempotent, and whether this mutates the original trap record.
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 short sentences, front-loaded with the core action and its payload, with the auth note trailing where it belongs. Nothing is redundant with the title or schema.
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?
For a four-parameter mutation tool with no output schema and only bare annotations, the description is serviceable but thin: it does not say what is returned, how the confirmation is stored against the existing trap, or what errors an unknown trap_id produces. An agent could call it correctly for the happy path but has no guidance for edge cases.
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 0%, so the description carries the load, and it does name three of the four parameters in natural language ('still true', 'hours lost', 'version seen'); trap_id is obvious from context but unmentioned. It gives no format or range hints (e.g., whether hours_lost is a decimal, what version_seen refers to), so it only partially compensates for the zero coverage.
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 gives a specific verb ('Record') and resource ('a trap') plus the payload's meaning: whether the trap is 'still true (or not)'. That phrasing implicitly separates it from file_trap (create a new trap) and from lookup_traps/search_traps (retrieve), though it never names a sibling explicitly.
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?
There is no statement of when to reach for this tool versus file_trap, lookup_traps, or search_traps, and no prerequisites or exclusions. The only usage cue is the implied 'you have already seen this trap and want to re-validate it', which the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_trapFile a new trapBInspect
Draft a trap after a failure was fixed. A person reviews every filed trap before it is published; citing the provider's official documentation or changelog in sources helps. Needs an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| fix | Yes | ||
| tags | No | ||
| apply | Yes | ||
| cause | Yes | ||
| title | Yes | ||
| sources | No | ||
| affected | Yes | ||
| provider | Yes | ||
| symptoms | Yes | ||
| visibility | No | ||
| surface_name | Yes | ||
| surface_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description goes beyond them by disclosing the moderation workflow (a person reviews every filed trap before publication) and the API key requirement. It omits any deduplication behavior, rate limits, or what happens to a rejected draft, so it is not fully complete.
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?
Three short sentences, purpose front-loaded first, followed by the review workflow and auth requirement. Nothing is redundant or padded.
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?
For a 12-parameter mutation with 0% schema coverage and no output schema, the description should explain the required evidence fields (symptoms, cause, fix, apply) and the visibility/surface_type enums. It covers the workflow and auth but leaves the agent without enough to populate the payload correctly.
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 0% across 12 parameters, so the description carries the full burden, yet it only hints at one field ('sources'). The nine required fields (provider, surface_type, surface_name, title, symptoms, cause, fix, apply, affected) are left entirely unexplained.
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+resource ('Draft a trap') with a clear precondition ('after a failure was fixed'). It does not name the sibling tools (confirm_trap, search_traps, lookup_traps), so the agent must infer that confirm_trap is the publishing counterpart from the mention of human review.
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?
Gives a trigger condition ('after a failure was fixed') which implies when to use it, and the human-review note hints that a separate confirm step follows. It never explicitly names an alternative tool or states when NOT to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_trapsLook up traps for a providerARead-onlyIdempotentInspect
Call before writing code against a third-party API, platform, or AI tool. Returns verified, dated failure modes with fixes.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | ||
| surface | No | ||
| provider | Yes | ||
| include_stale | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety and side-effect profile is covered structurally. The description adds genuinely useful context about the return payload ('verified, dated' failure modes with fixes), but says nothing about rate limits, staleness handling, or scope of coverage beyond that.
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 short sentences with no filler: the first front-loads the invocation trigger, the second states the payload. Every clause carries information an agent can act on.
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 no output schema, the description correctly summarizes the return value, but with four undocumented parameters at 0% schema coverage and no cross-references to sibling tools, an agent still lacks enough to call this confidently in ambiguous cases. Minimally viable, not complete.
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 0% across four parameters (provider, surface, context, include_stale), so the description must compensate and largely does not. It hints at what a provider is ('third-party API, platform, or AI tool') but leaves surface, context, and include_stale entirely unexplained, including the important stale-data toggle.
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 output: 'verified, dated failure modes with fixes,' which resolves the otherwise opaque term 'traps' into a specific resource. It is clear what an agent gets back, but it does not distinguish itself from sibling tools like search_traps or confirm_trap, so an agent must infer the boundary.
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?
'Call before writing code against a third-party API, platform, or AI tool' gives an explicit, actionable trigger condition for invocation. However, there is no guidance on when NOT to use it or which sibling (search_traps vs. lookup_traps) is appropriate for a given situation, leaving the alternative routing implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_trapsSearch traps by error textBRead-onlyIdempotentInspect
Call when a call to a third-party service fails. Paste the error text. Returns the closest verified traps with fixes.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | ||
| error_text | Yes | ||
| include_stale | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and idempotentHint=true, covering the safety profile. The description adds useful return context ('closest verified traps with fixes') and implies the error text should be pasted verbatim, but discloses nothing about pagination, ranking, or staleness behavior.
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?
Three short sentences, with the usage trigger front-loaded before the return description. No wasted words; minor awkwardness in 'Call when a call...' but structurally sound.
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?
There is no output schema and none is strictly needed, but with 0% schema coverage the definition should say more about provider and include_stale. The description is adequate for the core call but leaves real gaps for a 3-parameter 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 coverage is 0%, so the description carries the full burden. It sheds light on error_text ('paste the error text'), but provider and include_stale go entirely unexplained in both schema and description, leaving two of three parameters semantically opaque.
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+resource ('Search traps by error text') and clarifies that results are 'the closest verified traps with fixes'. It does not, however, differentiate itself from the sibling lookup_traps, which appears to serve a similar retrieval purpose.
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?
Gives a clear triggering condition: 'Call when a call to a third-party service fails.' This tells the agent when to reach for it. It stops short of naming alternatives (lookup_traps) or stating when NOT to use it.
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.
1 tool update
- Changed
file_trap1 field changed- added
Input schema / properties / visibilityAdded value: +{ + "enum": [ + "private", + "public" + ], + "type": "string" +}
4 tool updates
- First observed
confirm_trap - First observed
file_trap - First observed
lookup_traps - First observed
search_traps
Related MCP Connectors
- BugTapeOAuthai.bugtape
Production bugs with replay, network, console and stack, ranked for your coding agent to fix.
Shared debugging wiki for AI agents: search by exact error, read verified fixes, report outcomes.
The bug mediator for AI-built apps: plain-English diagnosis + a ready fix, in your editor.
- DorsalOAuthcom.godorsal
Field evidence for coding agents: what AI builders shipped, broke, and fixed. Dated, source-linked.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI coding tools with a shared knowledge base of real-world fixes and gotchas, verified by usage, to stop debugging errors others already solved.1MIT
- AlicenseAqualityBmaintenanceA Stack Overflow for Claude Code agents — a shared pool of solved-problem fixes.An agent hits an error, calls ask_pool for ranked prior fixes; solves something new, calls post_solution. Semantic search + write-time content shield. Free, Apache-2.0.91Apache 2.0
- AlicenseNot gradedqualityNot gradedmaintenanceVerified, dated facts for AI coding agents: what breaks between npm package versions (diffed from TypeScript types), per-version vulnerabilities, the newest version compatible with a given Node/Python/Rust/PHP, end-of-life dates of ~480 runtimes and frameworks, and AI model prices. Covers npm, PyPI, crates.io and Packagist.AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceBlocker-aware decision layer for AI coding agents. Adds source-linked, time-sensitive blockers to AI technical choices — breaking changes, EOLs, lock-in, pricing shifts, and migration risk.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.