Conversational API Debugger
Debug REST API failures using OpenAPI specs and HTTP logs
An MCP server that helps developers quickly identify and fix API issues by analyzing OpenAPI specifications, ingesting HTTP logs, explaining failures, and generating reproducible test commands.
What It Does
This plugin transforms API debugging from guesswork into systematic analysis:
- Load OpenAPI Specs - Parse API documentation (JSON/YAML)
- Ingest HTTP Logs - Import request/response data (HAR, JSON)
- Explain Failures - Analyze why API calls failed with root cause analysis
- Generate Repros - Create cURL/HTTPie/fetch commands to reproduce issues
Installation
/plugin install conversational-api-debugger@claude-code-plugins-plus
Features
4 Powerful MCP Tools
1. load_openapi
Load and parse OpenAPI 3.x specifications.
{
"filePath": "/path/to/openapi.yaml",
"name": "my-api"
}
Returns:
- API title, version, description
- Base URL and servers
- Complete endpoint list
- Endpoint count and structure
2. ingest_logs
Import HTTP request/response logs for analysis.
{
"filePath": "/path/to/requests.har",
"format": "har"
}
Or provide logs directly:
{
"logs": [
{
"timestamp": "2025-10-10T12:00:00Z",
"method": "POST",
"url": "https://api.example.com/users",
"statusCode": 400,
"requestBody": { "name": "John" },
"responseBody": { "error": "Missing required field: email" }
}
]
}
Returns:
- Total requests ingested
- Success/failure breakdown
- Status code distribution
- Method distribution
- Top errors (first 10)
3. explain_failure
Analyze why an API call failed.
{
"logIndex": 0,
"specName": "my-api"
}
Returns:
- Severity: critical | high | medium | low
- Possible Causes: List of likely root causes
- Suggested Fixes: Actionable remediation steps
- Matching Endpoint: Comparison with OpenAPI spec
- Details: Request/response for inspection
4. make_repro
Generate cURL command to reproduce API call.
{
"logIndex": 0,
"includeHeaders": true,
"pretty": true
}
Returns:
- cURL Command: Ready to copy-paste
- HTTPie Alternative: Shorter syntax
- JavaScript fetch: For automated tests
- Metadata: Method, URL, headers count
Quick Start
Scenario 1: Debugging a 400 Bad Request
# 1. Load your OpenAPI spec
Use load_openapi with path to your spec file
# 2. Export HAR from browser DevTools
# Network tab → Right-click → Save as HAR with content
# 3. Ingest the logs
Use ingest_logs with HAR file path
# 4. Analyze the failure
Use explain_failure on the failed request
# 5. Get a working cURL command
Use make_repro to generate test command
Example Output:
ANALYSIS
Status: 400 Bad Request
Severity: HIGH
ROOT CAUSE
Missing required field: "email"
OpenAPI spec requires:
- name (string, required)
- email (string, format: email, required)
Your request only included "name".
SUGGESTED FIXES
1. Add "email" field to request body
2. Ensure email format is valid ([email protected])
TEST COMMAND
curl -X POST "https://api.example.com/users" \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "[email protected]"
}'
Scenario 2: Understanding 401 Unauthorized
# 1. Ingest logs showing 401 errors
Use ingest_logs
# 2. Explain the failure
Use explain_failure
# Get specific guidance on:
# - Missing Authorization header
# - Invalid/expired token
# - Wrong authentication scheme
# - Missing scopes/permissions
Slash Command
Use the /debug-api command for a guided debugging workflow:
/debug-api
This activates a systematic 4-step process:
- Load API documentation (OpenAPI spec)
- Ingest HTTP logs (HAR or JSON)
- Analyze failures (explain errors)
- Generate test commands (cURL repros)
AI Agent
The api-expert agent specializes in API debugging:
- Root cause analysis of HTTP errors
- OpenAPI spec interpretation
- Severity assessment (critical → low)
- Actionable fix suggestions
- Test command generation
Activate by asking questions like:
- "Why is my API returning 400?"
- "Help me debug this authentication error"
- "Analyze these API logs"
Supported Formats
OpenAPI Specs
- OpenAPI 3.0.x
- OpenAPI 3.1.x
- JSON format
- YAML format
- ️ Swagger 2.0 (limited support)
HTTP Logs
- HAR (HTTP Archive) - browser DevTools export
- JSON array of request/response objects
- Direct log objects (manual entry)
Status Code Knowledge Base
The plugin has built-in expertise for all common HTTP status codes:
4xx Client Errors
- 400 Bad Request → Validation/syntax errors
- 401 Unauthorized → Authentication issues
- 403 Forbidden → Permission problems
- 404 Not Found → Endpoint/resource missing
- 405 Method Not Allowed → Wrong HTTP method
- 408 Request Timeout → Network/performance
- 409 Conflict → Resource state conflict
- 422 Unprocessable Entity → Semantic validation
- 429 Too Many Requests → Rate limiting
5xx Server Errors
- 500 Internal Server Error → Server bug (CRITICAL)
- 502 Bad Gateway → Upstream error (CRITICAL)
- 503 Service Unavailable → Temporary issue (HIGH)
- 504 Gateway Timeout → Upstream timeout (HIGH)
How It Works
Under the Hood
- OpenAPI Parsing: Uses
openapi-typesandyamlto parse specs - HAR Processing: Extracts requests/responses from browser exports
- Pattern Matching: Matches URLs to OpenAPI endpoints with regex
- Failure Analysis: Compares actual vs expected behavior
- Command Generation: Creates executable test commands
In-Memory Storage
The plugin maintains:
- API Specs: Map of loaded OpenAPI documents
- HTTP Logs: Array of ingested requests/responses
- Log Indexing: Fast lookup by index for analysis
Data persists during the session but clears on restart (no disk storage).
Examples
Export HAR from Browser
Chrome/Edge:
- Open DevTools (F12)
- Go to Network tab
- Perform API calls
- Right-click network log
- "Save all as HAR with content"
Firefox:
- Open DevTools (F12)
- Go to Network tab
- Perform API calls
- Click gear icon → "Save All As HAR"
Manual Log Entry
// If you have logs in code, convert to this format:
const logs = [
{
timestamp: new Date().toISOString(),
method: 'POST',
url: 'https://api.example.com/users',
statusCode: 400,
requestHeaders: {
'Content-Type': 'application/json'
},
requestBody: {
name: 'John'
},
responseBody: {
error: 'Missing required field: email'
}
}
];
// Then use ingest_logs with logs array directly
️ Architecture
conversational-api-debugger/
├── servers/
│ └── api-debugger.ts # MCP server (730+ lines)
├── tests/
│ └── api-debugger.test.ts # Comprehensive tests (36 tests)
├── commands/
│ └── debug-api.md # /debug-api workflow
├── agents/
│ └── api-expert.md # API debugging agent
└── .claude-plugin/
└── plugin.json # Plugin metadata
Testing
# Run test suite
pnpm test
# Run with coverage
pnpm test:coverage
# Build TypeScript
pnpm build
Test Coverage:
- OpenAPI spec loading (JSON/YAML)
- HAR file parsing
- Log analysis (status codes, methods)
- Failure analysis (all HTTP status codes)
- Endpoint matching (path parameters)
- cURL generation (headers, bodies)
- Input validation (Zod schemas)
- Error handling
Contributing
See CONTRIBUTING.md for development guidelines.
License
MIT License - see LICENSE
Related Tools
- project-health-auditor - Code quality and technical debt analysis
- domain-memory-agent - Knowledge base with semantic search
- design-to-code - Figma/screenshot to component generation
- workflow-orchestrator - DAG-based task automation
Use Cases
- Debugging Production Issues - Analyze production API failures quickly
- API Integration - Understand third-party API errors
- Documentation - Generate examples for API docs
- Testing - Create reproducible test cases
- Bug Reports - Include working repro commands
- Onboarding - Help new developers understand APIs
Best Practices
- Always load OpenAPI spec first - Provides context for analysis
- Use HAR files when possible - Most complete log format
- Include request/response bodies - Critical for validation errors
- Generate repro commands - Makes debugging tangible
- Test fixes immediately - Use generated cURL to verify
- Keep specs up-to-date - Ensure accurate comparisons
Performance
- OpenAPI Loading: < 100ms for typical specs
- HAR Parsing: < 500ms for 100 requests
- Failure Analysis: < 50ms per request
- cURL Generation: < 10ms per command
Troubleshooting
Q: OpenAPI spec fails to loadA: Ensure it's valid OpenAPI 3.x (check openapi: "3.0.0" field)
Q: HAR file won't parseA: Verify it's exported with "content" option enabled
Q: Can't find matching endpointA: Check URL path matches OpenAPI spec (including base path)
Q: Generated cURL doesn't workA: Verify all required headers are in original request
Features Coming Soon
- Support for GraphQL APIs
- Batch failure analysis
- Custom validation rules
- Postman collection export
- Response schema validation
- Performance profiling
Made with ️ by Intent Solutions
Part of the Claude Code Plugin Marketplace