Skip to main content
Glama

deadends.dev

Precision@1 MRR Entries Domains Countries MCP Tools PyPI License

Stop AI agents from repeating known failures - in code AND in the real world.

AI assistants reliably fumble two kinds of problems: known-failed code fixes, and country-specific real-world rules they've never been exposed to in training. deadends.dev now covers both:

  • Code errors (2,089 entries, 51 domains): what NOT to try when an agent hits ModuleNotFoundError, CUDA OOM, CrashLoopBackOff, etc.

  • Country-scoped dead ends (250+ entries across 52 countries): visa rules (ETA/eVisitor, NZeTA, e-visas, arrival cards), banking requirements, legal red lines (lèse-majesté, §86a, Article 301), cultural taboos (chopsticks in rice, clock gifts in China, red-ink names in Korea), food safety (tap-water safety by country), emergency numbers, driving norms (left-hand traffic), housing contracts - all the friction where a plausible-sounding global answer is wrong locally.

Why the expansion? Coding dead ends are largely solved by a good LLM. Country-specific friction - Japanese hanko requirements, Schengen 90/180 math, Ramadan business hours, Saudi alcohol ban, Indian beef taboos - is where generic AI advice breaks hardest. The codebase and schema are identical; the env segment just carries a country code.

90% Precision@1 · 0.935 MRR · Data Quality Dashboard

Website: deadends.dev · MCP Server: Smithery · PyPI: deadends-dev · API: /api/v1/index.json Repository: https://github.com/dbwls99706/deadends.dev

Why Use This?

Without deadends.dev

With deadends.dev

Agent tries sudo pip install → breaks system Python → wastes 3 retries

Agent sees "dead end: sudo pip - fails 70%" → skips it immediately

Agent tells user to tip 15% at a Tokyo restaurant

Agent knows tipping is refused in Japan (culture/tipping-refused/jp)

Agent drafts a Thai social post referencing King Rama X

Agent stops: Article 112 lèse-majesté risk (legal/lese-majeste-article-112/th)

Agent fixes error A, gets confused by error B

Agent knows "A leads to B 78% of the time" → handles both

Agent tells unmarried couple to kiss publicly in Dubai

Agent flags UAE public decency law (legal/unmarried-public-affection/ae)

What makes this different from asking an LLM?

  • Deterministic: Same query → same answer, every time. No hallucination.

  • Country-scoped: ID format {domain}/{slug}/{env} - env holds the country code (kr, jp, us, de...) so the same taboo can be answered differently for different jurisdictions.

  • Primary-sourced: Every country canon cites government sites, embassies, or verifiable reporting. No "based on general knowledge" answers.

  • Community-validated: Fix success rates updated from real outcome reports.

  • Sub-millisecond: Local regex matching, no API roundtrip.

현실적인 한계 (운영 관점)

  • 모든 에러를 다 커버하지는 못합니다. 없는 케이스는 이슈/PR/report_outcome로 빠르게 보완합니다.

  • 설명의 깊이보다 실전 해결 우선(dead end/workaround 중심)으로 설계되어 있습니다.

  • 신뢰성은 도메인/케이스마다 다를 수 있으므로, 고위험 변경은 공식 문서/벤더 가이드와 교차 검증을 권장합니다.

Related MCP server: Casebook MCP

Quick Start (30 seconds)

pip install deadends-dev
deadends "CUDA error: out of memory"

MCP Server (Claude Desktop / Cursor)

Add to ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "deadend": {
      "command": "python",
      "args": ["-m", "mcp.server"],
      "cwd": "/path/to/deadends.dev"
    }
  }
}

Or install via Smithery (no local setup):

npx -y @smithery/cli@latest install deadend/deadends-dev --client claude

MCP Unauthorized 빠른 해결 가이드 (사람용)

deadend: calling "initialize": sending "initialize": Unauthorized 에러가 보이면 아래를 순서대로 그대로 실행/확인하세요.

  1. 로컬 서버 모드인지, 원격(Smithery) 모드인지 하나만 사용

# 로컬 서버 확인 (정상 시 툴 목록이 출력됨)
python -m mcp.server --help
  1. Claude Desktop 설정 파일 점검 (cwd는 실제 경로여야 함)

cat ~/.claude/claude_desktop_config.json
  1. 로컬 서버 직접 실행 테스트

cd /path/to/deadends.dev
python -m mcp.server
  1. Smithery 모드라면 재설치(토큰/설정 꼬임 복구)

npx -y @smithery/cli@latest uninstall deadend/deadends-dev --client claude
npx -y @smithery/cli@latest install deadend/deadends-dev --client claude
  1. 마지막으로 Claude Desktop 완전 재시작

# macOS 예시
osascript -e 'quit app "Claude"'
open -a Claude

팁: Unauthorized는 보통 잘못된 cwd, 중복 서버 설정(로컬+원격 동시), 또는 만료된 인증 상태에서 발생합니다.

Antigravity (Google AI IDE)

Add as a remote MCP server - no authentication required:

{
  "mcpServers": {
    "deadend": {
      "serverUrl": "https://deadends.dev/mcp",
      "type": "http"
    }
  }
}

Note: Antigravity uses serverUrl (not url). If you get Unauthorized, remove any existing deadend entries from the MCP Store and re-add manually using the config above. See the Antigravity MCP auth guide for general troubleshooting.

Python SDK

from generator.lookup import lookup, batch_lookup, search

# Single error lookup
result = lookup("ModuleNotFoundError: No module named 'torch'")

# What NOT to try (saves tokens and time)
for d in result["dead_ends"]:
    print(f"AVOID: {d['action']} - fails {int(d['fail_rate']*100)}%")

# What actually works
for w in result["workarounds"]:
    print(f"TRY: {w['action']} - works {int(w['success_rate']*100)}%")

# Batch lookup (multiple errors at once)
results = batch_lookup(["error1", "error2", "error3"])

Example Response

## ModuleNotFoundError: No module named 'X' (Python 3.11+)
Resolvable: true | Fix rate: 0.88

### Dead Ends (DO NOT TRY):
- pip install X with system Python (fails 70%): venv not activated

### Workarounds (TRY THESE):
- Create venv, activate, then pip install (works 95%)
- Use python -m pip install instead of bare pip (works 90%)

MCP Tools (11)

Tool

Description

lookup_error

Match an error message against 2000+ known patterns

get_error_detail

Full canon by ID

list_error_domains

All 54 domains with counts

search_errors

TF-IDF keyword search across all domains

list_errors_by_domain

All errors in a domain

list_errors_by_country

All country-scoped dead ends for an ISO alpha-2 code

get_country_summary

Country-level summary (entries, fix rate, domain mix)

batch_lookup

Look up multiple errors at once (max 10)

get_domain_stats

Domain quality metrics and confidence levels

get_error_chain

Traverse the error transition graph

report_outcome

Report whether a workaround worked (feeds back into success rates)

API Endpoints

Endpoint

Description

/api/v1/match.json

Lightweight regex matching (fits in context window)

/api/v1/index.json

Full error index with metadata (entries include country field for country canons)

/api/v1/{id}.json

Individual ErrorCanon

/api/v1/countries.json

Country index with counts and update dates

/api/v1/country/{cc}.json

Per-country aggregate (one call returns all entries for that country)

/api/v1/openapi.json

OpenAPI 3.1 spec

/api/v1/stats.json

Dataset quality metrics by domain

/api/v1/errors.ndjson

NDJSON streaming

/llms.txt

LLM-optimized listing (llmstxt.org)

/dashboard/

Data quality dashboard

Covered Domains (54)

Code error domains (51)

Domain

Errors

Examples

Python

88

ModuleNotFoundError, TypeError, KeyError, MemoryError, RecursionError

Node

70

ERR_MODULE_NOT_FOUND, EACCES, EADDRINUSE, heap OOM, ERR_REQUIRE_ESM

Docker

65

no space left, exec format error, bind address in use, healthcheck

Kubernetes

61

CrashLoopBackOff, ImagePullBackOff, OOMKilled, RBAC forbidden, HPA

Git

60

failed to push, merge conflicts, detached HEAD, stash apply, tags

CUDA

57

OOM, device-side assert, NCCL, cuDNN, tensor device mismatch

Go

54

nil pointer, unused import, interface conversion, slice out of range

Java

54

NullPointerException, ClassNotFound, OutOfMemoryError, connection pool

Database

52

deadlock, connection pool, slow query, replication lag

AWS

51

AccessDenied, S3 NoSuchBucket, Lambda timeout, CloudFormation rollback

.NET

50

NullReferenceException, LINQ translation, DI circular, EF concurrency

ROS 2

50

node spin, launch error, QoS mismatch, tf2 transform

TypeScript

49

TS2307, TS2322, TS2345, TS2532, TS7053

Rust

48

E0382 borrow, E0308 mismatch, E0277 trait, E0106 lifetime

+ 37 more domains

40+ each

CI/CD, PHP, Terraform, Networking, Next.js, React, pip, Android, ...

Country-scoped real-world domains (new, growing)

Domain

Covers

Example dead ends

visa

Pre-travel authorization, overstay, re-entry bans

ESTA 90-day rule (US), K-ETA (KR), ETIAS/EES (Schengen), Schengen 90/180 (DE)

banking

Account opening, KYC, foreigner rules

ARC required (KR), residence card 6-month (JP), SSN/ITIN (US)

emergency

Correct emergency numbers, transit

112 not 911 (DE), 999/101/111 (UK)

medical

Insurance, Rx import, coverage

Shaho/Kokuho (JP), NHIS 6-month (KR), EHIC ineligibility (DE), Adderall import ban (JP)

legal

Criminal liability, contract norms

§86a Nazi symbols (DE), Article 112 (TH), Article 301 (TR), alcohol ban (SA), key money (JP)

culture

Etiquette, taboos, social norms

Chopsticks in rice (JP), clock gifts (CN), Tiananmen silence, red ink names (KR), bonjour (FR)

food-safety

Water, pathogens, religious taboos

Tap water (MX), fugu license (JP), beef in India, pork in Indonesia

communication

Language register, terminology

Honorifics (KR), American War framing (VN), 'gringo' (MX), Cantonese vs Mandarin (HK)

safety

Driving, public-safety norms

Left-side drive (JP), Autobahn rules (DE), horn-language (IN)

Data Quality

All metrics are publicly available on the Data Quality Dashboard:

  • 2,204 canon entries across 54 domains and 39+ countries

  • Benchmark: 90% Precision@1, 95% Precision@3, 0.935 MRR (on code scenarios)

  • Error transition graph: 4,330+ edges connecting related errors

  • Community feedback loop: report_outcome updates fix success rates from real usage

  • Country canons: every entry cites primary gov/embassy/regulator sources, reviewed by humans (review_status: human_reviewed), no LLM bulk generation

Country coverage (52 countries as of v0.10)

kr · jp · us · de · uk · fr · it · es · nl · ch · pt · ie · at · be · se · no · dk · fi · pl · gr · cn · hk · tw · th · in · vn · id · sg · ph · my · pk · bd · sa · ae · tr · il · ru · br · mx · ar · cl · co · pe · au · nz · eg · ma · et · ng · ke · za · ca

See /country/ hub or /api/v1/countries.json for the authoritative list with counts.

See docs/country-canon-guide.md for the authoring workflow, sourcing requirements, and confidence calibration.

Contributing

See CONTRIBUTING.md for full details.

Development

pip install -e ".[dev]"

python -m generator.pipeline          # Full pipeline
python -m generator.build_site        # Build static site
python -m generator.validate          # Validate data + site
python -m pytest tests/ -v            # Run tests
ruff check generator/ tests/          # Lint
python benchmarks/run_benchmark.py    # Run benchmarks

SEO 점검 가이드 (모든 페이지 공통)

아래 명령은 템플릿에 핵심 SEO 신호가 있는지 빠르게 점검합니다.

python - <<'PY'
from pathlib import Path
files=[
  'generator/templates/index.html',
  'generator/templates/domain.html',
  'generator/templates/error_summary.html',
  'generator/templates/page.html',
  'generator/templates/search.html',
  'generator/templates/dashboard.html',
]
required=[
  '<title',
  'meta name="description"',
  'meta name="robots"',
  'link rel="canonical"',
  'meta property="og:title"',
  'meta name="twitter:card"',
]
for f in files:
    txt=Path(f).read_text()
    missing=[r for r in required if r not in txt]
    print(f'✅ {f}' if not missing else f'❌ {f} missing: {", ".join(missing)}')
PY

실제 빌드 결과물까지 확인하려면:

python -m generator.build_site
python -m http.server -d public 8080

그 후 브라우저에서 아래를 점검:

  • view-source:http://localhost:8080/search/

  • view-source:http://localhost:8080/dashboard/

  • canonical / og / twitter / JSON-LD 유효성

Changelog

v0.10.0 - Country coverage expansion

  • 250+ country canons across 52 countries (up from 56 across 20): emergency numbers for nearly every supported country, modern visa gateways (ETA/eVisitor, NZeTA, e-visas, digital arrival cards), medication-import rules, tap-water safety, left-hand-traffic safety, and banking access - all primary-sourced and human-reviewed

  • By-destination cross-linking: country summary pages now link to other dead ends for the same country across domains (a "More dead ends in {country}" section), strengthening topical internal linking

  • SEO: sitemap <priority> weighted by page strength (country/high-evidence pages ranked higher); JSON-LD omits empty dates

  • Style: em-dash removed site-wide in favor of the hyphen

v0.9.0 - Country pivot

  • New axis: country-scoped real-world dead ends alongside code errors

  • 56+ country canons across 20+ countries - visa, banking, legal red lines, cultural taboos, food safety, emergency numbers, driving norms

  • 3 new domains: visa, banking, emergency (plus extended use of existing legal, culture, medical, communication, food-safety, safety domains with country env segment)

  • Per-country landing pages at /country/{cc}/ (e.g. /country/jp/)

  • generator.country_canon_template helper for authoring new country canons with validated env-segment + audience + jurisdiction metadata

  • docs/country-canon-guide.md: sourcing standards (primary > embassy

    reputable media), confidence calibration, slug/regex conventions

  • Schema unchanged (backward-compatible enum extensions); existing 2,089 code canons preserved

v0.8.0

  • Benchmark suite: 20 error scenarios, Precision@1=90%, MRR=0.935

  • Data quality dashboard at /dashboard/ - transparent metrics

  • Outcome feedback loop: report_outcome → aggregated stats → fix_success_rate updates

  • Usage analytics: anonymous tool usage tracking (domain/match only, no PII)

  • Community contribution: GitHub Issue templates for new errors and workaround reports

  • TF-IDF search: improved relevance with smoothed IDF scoring

  • Error transition graph: materialized graph with 4,330+ edges, hub node analysis

  • 9 MCP tools (added report_outcome)

v0.7.0

  • Expanded to 2089 error entries across 51 domains (from 1028/20)

  • Added 23 new domains

  • Fixed 73 regex patterns that didn't match their own signatures

v0.5.0

  • page_url field added to index.json, errors.ndjson, and all SDK/MCP responses

  • SEO fixes for canonical summary URLs

v0.4.0

  • Initial public release with 1028 error entries across 20 domains

License

MIT (code) · CC BY 4.0 (data)

Ops Docs

Available Tools

11 tools
batch_lookupA
Read-onlyIdempotent
Inspect

Look up multiple error messages at once. Returns the best match for each error. Use when debugging a chain of errors or analyzing a log with multiple failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
error_messagesYesList of error messages to look up (max 10)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, which establishes a safe, read-only operation. The description adds behavioral context beyond this by stating that it returns the best match for each error, implying a per-input result mapping. Given the annotations cover the safety profile, the description provides sufficient additional transparency about the outcome.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences. The first sentence front-loads the purpose and output behavior, the second explains when to use the tool. There is no filler or redundancy; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers the core purpose, usage context, and return behavior. It does not detail the exact representation of 'best match' or how errors are handled, but these are not critical for this tool's context. Overall, it is complete enough for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description covers 100% of the parameter (error_messages) with type, maxItems, and a clear description. The tool description adds only general phrasing ('Look up multiple error messages at once') that restates the array nature, but does not provide new semantic detail. With full schema coverage, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the function: 'Look up multiple error messages at once'. It uses a specific verb ('look up') and resource ('multiple error messages'), and distinguishes from the single-error sibling lookup_error by emphasizing batch processing. The phrase 'Returns the best match for each error' further clarifies the core behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a usage context: 'Use when debugging a chain of errors or analyzing a log with multiple failures.' This gives clear when-to-use guidance. However, it does not mention alternatives or when not to use it (e.g., for a single error, use lookup_error), so it does not fully meet the 'when-not/alternatives' criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_country_summaryA
Read-onlyIdempotent
Inspect

Get a country-level summary: total entries, domain breakdown, average fix rate, and most-recent updates for the country. Use this to assess coverage for a country before relying on deadends.dev for trip / business / legal planning advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryYesISO 3166-1 alpha-2 country code, lowercase

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds valuable context beyond annotations by explaining the tool's output structure (total entries, domain breakdown, etc.) and its intended purpose (coverage assessment), giving the agent a mental model of behavior without contradicting any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action and a bullet-like list of outputs. Every sentence contributes meaning—no fluff or repetition of schema/annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, no output schema), and the description fully covers what the summary contains and when to use it, serving as an adequate return-structure guide. Given the lack of an output schema, the description compensates by listing the key fields. No critical context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a full description for the only parameter ('ISO 3166-1 alpha-2 country code, lowercase'), achieving 100% schema description coverage. The tool description adds no parameter-specific details, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and clearly identifies the resource ('country-level summary') while enumerating the contents (total entries, domain breakdown, average fix rate, most-recent updates). It is distinct from sibling tools like list_errors_by_country or get_domain_stats, which focus on different granularities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear use case: 'Use this to assess coverage for a country before relying on deadends.dev for trip / business / legal planning advice.' This tells the agent when to invoke the tool, though it doesn't mention alternatives or when not to use it. Absence of exclusions aligns with a score of 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_domain_statsA
Read-onlyIdempotent
Inspect

Get detailed statistics for a domain: error counts, average fix rate, resolvability breakdown, top categories, and confidence levels. Use this to assess how trustworthy deadends.dev data is for a domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain to get stats for

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a read-only, idempotent, non-destructive operation. The description adds value by specifying the statistical components returned, but it doesn't disclose additional behaviors such as handling of unknown domains or data freshness. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the tool's purpose and immediately followed by an example use case. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only stats tool, the description covers purpose, usage, and expected output metrics. Although there is no output schema, the listed metrics give the agent a reasonable expectation. Missing return structure details but adequate given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the single 'domain' parameter with a clear description, giving 100% coverage. The tool description does not add further parameter semantics beyond the schema, but the schema suffices.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Get') and resource ('detailed statistics for a domain'), enumerating the exact metrics returned. It differentiates from sibling tools like list_errors_by_domain by framing the output as a trust assessment for domain data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the intended use case: 'Use this to assess how trustworthy deadends.dev data is for a domain.' This provides clear context for when to choose this tool over error-listing siblings, though it doesn't mention exclusions or 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.

get_error_chainA
Read-onlyIdempotent
Inspect

Traverse the error transition graph for a specific error. Shows what errors typically follow this one (leads_to), what errors usually precede it (preceded_by), and what errors are frequently confused with it. Use this to diagnose cascading failures and predict what comes next.

ParametersJSON Schema
NameRequiredDescriptionDefault
error_idYesThe error ID (domain/slug/env) to get the transition graph for

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by listing the three relationship types (leads_to, preceded_by, confused_with), similar to how a date-range constraint adds value. It does not disclose any additional caveats, but annotations sufficiently cover the basics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the action verb 'Traverse' and immediately explains the output structure. Every sentence earns its place: purpose, output details, and when to use. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only graph traversal tool with a single parameter, the description sufficiently explains what the tool returns (leads_to, preceded_by, confused_with) and when to use it. No output schema exists, but the description covers the return content. It could benefit from noting any pagination or limits, but for this simple tool, the context is complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for the single parameter error_id, so the schema already documents the parameter. The description does not add extra syntax or format details beyond what is in the schema. Baseline 3 is appropriate since the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Traverse') and resource ('error transition graph'), clearly distinguishing it from siblings like lookup_error or get_error_detail by explaining the graph relationships (leads_to, preceded_by, confused_with). This makes the tool's unique purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use this to diagnose cascading failures and predict what comes next.' It does not explicitly mention alternatives or exclusions, but the context is clear. A 4 is appropriate because it provides clear use case guidance without naming alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_error_detailA
Read-onlyIdempotent
Inspect

Get full details for a specific error by its ID (e.g., 'python/modulenotfounderror/py311-linux'). Includes all dead ends, workarounds, error chain info, and source evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
error_idYesThe error ID (domain/slug/env)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which covers the safety profile. The description adds useful context about the response content (dead ends, workarounds, error chain info, source evidence), but it does not disclose additional behavioral traits like pagination or error handling. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that efficiently conveys the purpose and key details. It includes an example and a list of what the response contains without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read-only tool with no output schema, the description is complete enough. It specifies the input format and what the response includes, though it does not describe the response structure explicitly. This is adequate given the tool's simplicity and the presence of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single parameter error_id with a description, providing 100% coverage. The description enhances this by giving a concrete example ('python/modulenotfounderror/py311-linux'), which clarifies the expected format beyond the schema's generic 'domain/slug/env'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get'), resource ('full details for a specific error'), and scope (by ID), with an explicit example ID format. It distinguishes itself from sibling tools like list_errors_by_domain and search_errors by emphasizing 'full details' and enumerating specific content (dead ends, workarounds, error chain info, source evidence).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies clear usage: use this tool when you have a specific error ID and need comprehensive details. However, it does not explicitly exclude alternatives such as lookup_error or get_error_chain, so the guidance relies on implication rather than direct comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_error_domainsA
Read-onlyIdempotent
Inspect

List all error domains and counts in the deadends.dev database. Covers 51 domains including programming languages, frameworks, infrastructure, ML/AI, culture, safety, medical, legal, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide safety profile (readOnly, idempotent, non-destructive). The description adds coverage and category context, but not details like ordering or response format; annotations carry most burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, immediately stating the action and scope with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with strong annotations, this description fully conveys what is listed and the breadth of coverage; return values are implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so description needs no parameter explanation; baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all error domains and counts, specifying the database and scope, which distinguishes it from sibling tools like list_errors_by_domain and get_domain_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context that this returns the full set of domains, appropriate when a comprehensive overview is needed, but does not explicitly mention alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_errors_by_countryA
Read-onlyIdempotent
Inspect

List all country-scoped dead ends for a given country (ISO alpha-2 code, e.g. 'kr', 'jp', 'us', 'de'). Returns visa, banking, legal, cultural, medical, food-safety, emergency, and safety dead ends specific to that jurisdiction. Use this when an AI agent needs jurisdiction-specific knowledge that global LLM training data won't reliably cover.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOptional: filter by domain (e.g. 'visa', 'legal', 'culture')
countryYesISO 3166-1 alpha-2 country code, lowercase (e.g. 'kr' for Korea, 'jp' for Japan)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive. The description adds context about the content returned (visa, banking, legal, etc.) and the scope, which is helpful. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and scope, followed by return details and usage guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With good annotations and full schema coverage, the description adequately describes what the tool does, what it returns, and when to use it. Could mention the optional domain filter, but schema covers it, so not a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage of both parameters. Description reinforces country parameter with examples but doesn't add substantial meaning beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action (list), the resource (country-scoped dead ends), and the scope (given country). It also differentiates from sibling tools like list_errors_by_domain by focusing on country jurisdiction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: use when an AI agent needs jurisdiction-specific knowledge that global LLM training data won't reliably cover. It doesn't explicitly mention alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_errors_by_domainA
Read-onlyIdempotent
Inspect

List all errors in a specific domain with their fix rates. Use this to understand coverage for a domain before relying on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain to list errors for (e.g., 'python', 'kubernetes')
sort_byNoSort by: 'fix_rate' (default), 'name', or 'confidence'

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds that it returns fix rates and lists all errors in a domain, but does not disclose additional behaviors like sorting or result limits. This is minor but acceptable given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first states the action, the second states the use case. No wasted words, front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with 2 parameters and no output schema, the description provides sufficient context: what it lists (errors with fix rates) and why to use it (coverage check). It doesn't go into return format details, but the simplicity and schema coverage make this acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters. The description's mention of 'specific domain' aligns with the domain parameter but adds no new semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific action: 'List all errors in a specific domain with their fix rates.' This clearly distinguishes it from siblings like lookup_error (single error), list_error_domains (domains only), and search_errors (search).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: 'Use this to understand coverage for a domain before relying on it.' This suggests when to use the tool, though it doesn't explicitly mention when not to use it or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_errorA
Read-onlyIdempotent
Inspect

Match an error message against deadends.dev's database of known errors. Returns dead ends (what NOT to try), workarounds (what works), and error chains (what comes next). Use this BEFORE attempting to fix any error to avoid wasting time on approaches that are known to fail. Covers 51 domains including python, node, docker, git, cuda, typescript, rust, go, kubernetes, terraform, aws, react, java, database, pytorch, tensorflow, and 34 more. Use list_error_domains to see all.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse format: 'markdown' (default, human-readable) or 'json' (structured, for programmatic use by AI agents)
error_messageYesThe full error message to look up

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation as readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that it returns dead ends, workarounds, and error chains and notes domain coverage, but does not disclose additional behavioral traits such as rate limits or no-match behavior. Since annotations cover the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action, and every sentence carries information: purpose, return types, usage timing, domain coverage, and a pointer to a sibling tool. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the tool's purpose, return categories, usage timing, and domain coverage, and references a sibling tool for more information. For a lookup tool with no output schema and only two parameters, this is fairly complete. Minor gaps include what happens if no match is found, but that is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both error_message and format described. The description does not add syntax details beyond the schema; it only contextualizes that error_message comes from '51 domains,' which is minor added meaning. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Match an error message against deadends.dev's database of known errors' with a specific verb and resource. It lists return categories (dead ends, workarounds, error chains) and distinguishes itself from siblings like list_error_domains or get_error_detail, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'Use this BEFORE attempting to fix any error to avoid wasting time on approaches that are known to fail,' providing clear when-to-use context. It also points to list_error_domains for full domain lists, though it does not explicitly exclude alternatives like search_errors, so it lacks a when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_outcomeAInspect

Report whether a workaround from deadends.dev worked or failed. This feedback improves fix_success_rate and confidence for future users. Call this AFTER applying a workaround to help improve the database. Accepts the error ID, the workaround action you tried, and whether it succeeded.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoOptional: additional context or notes
successYesWhether the workaround resolved the error
error_idYesThe error ID (domain/slug/env)
environmentNoOptional: your environment info (runtime, os, version, etc.)
workaround_actionYesThe workaround action string you tried (from the workarounds list)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false, destructiveHint=false, idempotentHint=false, which are neutral. The description adds that the call 'improves fix_success_rate and confidence' and 'helps improve the database,' indicating a write side effect. However, it does not disclose potential failure modes, authentication needs, or rate limits. With annotations present and not contradicted, the description adds moderate value beyond the structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: the first states the core purpose, the second explains when to call and why, and the third lists the accepted parameters. No filler or redundant information. The structure is front-loaded with the primary action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, no output schema, and a nested object parameter (environment), the description covers the when and what adequately. It does not explain return values, but for a feedback submission tool this is less critical. It could mention that repeated reports may overwrite or update existing records, but the overall context is sufficient for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters have meaningful descriptions. The description restates the three key parameters (error_id, workaround_action, success) but does not add much depth beyond that. Since the schema already documents each parameter, the description's contribution is marginal but not redundant.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's specific action: 'Report whether a workaround from deadends.dev worked or failed.' It identifies the resource (workaround outcome) and the verb (report), distinguishing it from the sibling lookup/list tools which are all read-only. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit timing guidance: 'Call this AFTER applying a workaround' and explains why (to improve the database and fix_success_rate). While it does not name alternatives, the sibling tools are all read-oriented, making it clear this is the only feedback/reporting tool. The context is sufficient for correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_errorsA
Read-onlyIdempotent
Inspect

Search errors by keyword across all domains. Unlike lookup_error (which uses regex matching), this does fuzzy keyword search. Use when you have a vague description like 'memory issues' or 'permission denied' rather than an exact error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default: 10)
queryYesSearch keywords (e.g., 'memory limit', 'timeout', 'permission denied')
domainNoOptional: filter to a specific domain (e.g., 'python', 'docker')

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnly/idempotent/destructive traits. The description adds behavioral depth by explaining the fuzzy matching behavior and the 'across all domains' scope, which is not inferable from annotations or schema alone. It does not go into details about result ordering or pagination, but that's acceptable given the safety annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the primary purpose front-loaded. It provides the key differentiator and usage guidance without any filler or redundancy. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with three parameters and no output schema, the description adequately covers what it does, when to use it, and how it contrasts with similar tools. It doesn't explicitly describe the return format or pagination, but the limit parameter and the use case imply a list of errors. Given the annotations and schema richness, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with detailed parameter descriptions (e.g., 'query' mentions examples, 'limit' notes default, 'domain' explains optional filtering). The description reinforces these but does not add new meaning beyond the schema; it focuses on usage context rather than parameter specifics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Search errors by keyword across all domains', specifying the action, resource, and scope. It explicitly distinguishes itself from 'lookup_error' by contrasting fuzzy keyword search with regex matching, which separates it from a sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use this tool: 'Use when you have a vague description like ‘memory issues’ or ‘permission denied’ rather than an exact error message.' It also contrasts with lookup_error, giving a clear alternative and the distinguishing heuristic.

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. Dates show when Glama detected each change.

  1. 11 tool updatesv0.9.0
    • First observedbatch_lookup
    • First observedget_country_summary
    • First observedget_domain_stats
    • First observedget_error_chain
    • First observedget_error_detail
    • First observedlist_error_domains
    • First observedlist_errors_by_country
    • First observedlist_errors_by_domain
    • First observedlookup_error
    • First observedreport_outcome
    • First observedsearch_errors

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct operation: exact error lookup vs fuzzy search vs batch, per-domain listing vs stats, country listing vs summary, and detail vs chain. The descriptions clearly differentiate overlapping pairs like lookup_error and search_errors.

Naming Consistency5/5

All tools use snake_case with a consistent verb_noun pattern: list_*, get_*, search_*, batch_lookup, report_outcome. Even the exception (lookup_error) still follows the verb_noun convention.

Tool Count5/5

11 tools is well within the ideal 3-15 range. Each tool covers a distinct aspect of the error database (listing, searching, details, chains, statistics, feedback) without redundancy.

Completeness5/5

The set covers the full workflow: discover domains, list errors, search and lookup, get details, traverse chains, analyze stats, and provide feedback. No obvious gaps for its stated purpose.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents to query and commit to a research graph that remembers failed experiments, ensuring reproducibility and preventing redundant work.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides coding agents with durable, cross-session lessons-learned memory, enforcing that success or failure verdicts can only come from human approval, human correction, or objective metrics—never from the agent itself.
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dbwls99706/deadends.dev'

If you have feedback or need assistance with the MCP directory API, please join our Discord server