Structured error recovery for AI agents. When your agent hits a 429, a connection timeout, or an auth failure, Resolve returns a resolution playbook -- not a generic error message.
Works with Claude Code, Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.
AI agents crash on API errors they could recover from. A 429 Too Many Requests from OpenAI needs exponential backoff. A Stripe authentication_error needs credential rotation. A Postgres ECONNREFUSED needs a connection pool reset. But agents don't know any of this -- they either retry blindly or give up.
Resolve provides structured resolution playbooks for 20+ services. Each resolution includes:
- Category --
rate_limit,auth,payment,connection,timeout,server_error,overloaded,quota,validation, and more - Action --
backoff_and_retry,abort,check_credentials,switch_region, etc. - Backoff schedule -- exact delays in seconds (e.g.,
[1, 2, 4, 8, 16]) - Max retries -- how many attempts before giving up
- Recovery notes -- specific steps for the service and error code
- Confidence score -- below 0.75 means generic fallback; above means high-confidence match
| Tool | Description |
|---|---|
resolve_error |
Look up a resolution for a service + error code/message. Returns structured playbook. |
list_services |
List all 20+ supported services. No API key required. |
submit_feedback |
Report whether a resolution helped. Improves quality over time. |
get_free_key |
Provision a free API key (500 req/month) with just an email. |
anthropic aws cloudflare discord docker gemini github huggingface linear openai opensrs pinecone postgres redis resend sendgrid shopify stripe supabase twilio
pip install resolve-mcpOr run directly with uvx (no install needed):
uvx resolve-mcpFrom your terminal:
curl -s -X POST https://resolve.arflow.io/billing/free-key \
-H 'Content-Type: application/json' \
-d '{"email":"you@example.com"}' | jq -r .api_keyOr call the get_free_key tool from within your MCP client -- no terminal needed.
claude mcp add resolve -e RESOLVE_API_KEY=rsl_your_key -- python -m resolve_mcpOr add to .claude/settings.json:
{
"mcpServers": {
"resolve": {
"command": "python",
"args": ["-m", "resolve_mcp"],
"env": {
"RESOLVE_API_KEY": "rsl_your_key_here"
}
}
}
}Add to your claude_desktop_config.json:
{
"mcpServers": {
"resolve": {
"command": "python",
"args": ["-m", "resolve_mcp"],
"env": {
"RESOLVE_API_KEY": "rsl_your_key_here"
}
}
}
}{
"resolve": {
"command": "python",
"args": ["-m", "resolve_mcp"],
"env": {
"RESOLVE_API_KEY": "rsl_your_key_here"
}
}
}RESOLVE_API_KEY=rsl_your_key python -m resolve_mcpAgent hits a rate limit:
Agent: "I got a 429 from OpenAI"
-> resolve_error(service="openai", error_code="429")
Returns:
{
"category": "rate_limit",
"action": "backoff_and_retry",
"backoff_schedule": [1, 2, 4, 8, 16],
"max_retries": 5,
"notes": "Token-per-minute limit. Reduce batch size or switch to a higher-tier key.",
"confidence": 0.95
}
Agent gets an auth failure:
Agent: "Stripe returned authentication_error"
-> resolve_error(service="stripe", error_code="authentication_error")
Returns:
{
"category": "auth",
"action": "check_credentials",
"backoff_schedule": [],
"max_retries": 0,
"notes": "API key is invalid or revoked. Verify the key starts with sk_live_ or sk_test_. Check Stripe dashboard for key status.",
"confidence": 0.92
}
Feedback loop:
Agent: "The resolution worked."
-> submit_feedback(resolution_id="3fa85f64-...", helpful=true)
You can. But then you maintain retry strategies for every service your agent calls, across every error code, and update them when services change their rate limit behavior. Resolve centralizes this so your agent code stays clean and the resolution data stays current.
The MCP server wraps the Resolve REST API:
| Endpoint | Method | Auth required |
|---|---|---|
/resolve |
POST | Yes |
/services |
GET | No |
/resolve/feedback |
POST | Yes |
/billing/free-key |
POST | No |
Full OpenAPI spec: resolve.arflow.io/openapi.json
| Plan | Requests/month | Price |
|---|---|---|
| Free | 500 | $0 |
| Pro | 50,000 | $29/mo |
| Fleet | 500,000 | $99/mo |
Get started free: resolve.arflow.io
Issues and PRs welcome. If you want resolution data for a service we don't cover yet, open an issue with the service name and common error codes.
MIT