一键导入
fallback-and-resilience
// What to do when a tool fails, an API hits a rate limit, or a site blocks scraping. Maps every primary tool to its best fallback so a single failure doesn't block the search.
// What to do when a tool fails, an API hits a rate limit, or a site blocks scraping. Maps every primary tool to its best fallback so a single failure doesn't block the search.
| name | fallback-and-resilience |
| description | What to do when a tool fails, an API hits a rate limit, or a site blocks scraping. Maps every primary tool to its best fallback so a single failure doesn't block the search. |
| category | reference |
| summary | What to do when each tool fails. Tool-by-tool fallback paths. |
Tools go down. APIs break. Have a backup plan for every search.
| Primary Tool | When It Fails | Fallback |
|---|---|---|
| Duffel | API error or timeout | Ignav, Google Flights skill, Skiplagged |
| Ignav | API error | Duffel, Google Flights skill, Skiplagged |
| Google Flights | agent-browser error | Duffel, Ignav, Skiplagged |
| Skiplagged | 502/timeout (Cloudflare issues) | Kiwi.com MCP, Duffel, Ignav |
| Kiwi.com | Server error | Skiplagged MCP, Duffel |
| Seats.aero | API error or stale data | Check airline website directly, use Duffel for GDS inventory |
| Southwest | SW rate limiting or bot detection | Wait a few minutes and retry. Use Docker (ghcr.io/borski/sw-fares) if running locally fails. Google Flights skill for SW cash prices as a fast fallback. |
| SerpAPI | Rate limit (100/mo free) | Trivago for hotels, web search for destination discovery |
| Trivago | Server error | LiteAPI for hotels, SerpAPI Google Hotels |
| LiteAPI | Auth error (401) | Trivago MCP, SerpAPI Google Hotels |
| Airbnb | Scraping blocked | Suggest user check airbnb.com directly |
| AwardWallet | API error | Ask user for their balances directly |
| Ferryhopper | Server error | SerpAPI or web search for ferry routes |
| Atlas Obscura | Script error | Web search for "unusual things to do in [destination]" |
| Chase Travel | Login failure or CSRF issues | Use Duffel/Ignav for cash prices. Note that Points Boost and Edit detection are Chase-only. |
| Amex Travel | Login failure or form changes | Use Duffel/Ignav for cash prices. Note that IAP fares and FHR/THC detection are Amex-only. |
| Deutsche Bahn (db-vendo) | Library error or bahn.de outage | SerpAPI Google Travel Explore, web search for "DB train [origin] [dest]", or fall back to confirming flight options instead. |
| Wikipedia airports | API rate limit (rare) or page missing | Web search "[airport name] airlines destinations" returns the same data via Google. |
| Fare tool says "no results" | Could be no availability OR no service | Use wikipedia-airports to confirm whether the route is flown at all. If Wikipedia lists the destination as served, fare tools have no availability on that date. If Wikipedia doesn't list it, the route doesn't exist. Saves you from asking the user to retry searches that can never succeed. |
Several APIs in the toolkit enforce IP allowlists on the developer key. If you see one of these error signatures, do NOT rabbit-hole on auth or quotas. Suggest the user whitelist their IP first.
| API | Error Signature | Whitelist Page |
|---|---|---|
| AwardWallet | {"error": "access_denied", "code": "IP_DENIED"} | https://business.awardwallet.com/profile/api |
| TripAdvisor | User is not authorized to access this resource with an explicit deny | https://www.tripadvisor.com/developers |
Diagnostic flow when an API call fails with an auth-shaped error on first use:
curl ifconfig.me to get the user's current outbound IP.<their IP> at , wait 1-5 min for AWS edge cache propagation, then retry."When Seats.aero returns no results for a route + program combination, that means Seats.aero has not scraped it recently. It does NOT mean the award is unbookable. When a reachable program shows no cached results, search the airline's website directly before declaring awards dead.
These hit websites directly with an undetected browser. Common failure modes:
If docker pull ghcr.io/borski/... fails:
unauthorized: Run docker logout ghcr.io then retry. Or login with a GitHub PAT that has read:packages. Or build locally with docker build -t <tag> skills/<skill>/.--platform linux/amd64 if you're on ARM and getting checksum mismatches.Guided trip planning workflow. Asks destination, dates, travelers, class, and flexibility, then runs parallel flight/hotel search with cpp math and booking plan.
Deutsche Bahn train schedules, journey planning, and departures across Germany and into neighboring countries (Austria, Switzerland, Netherlands, France, Belgium). Use for ICE/IC/regional rail planning and airport ground transport (FRA, MUC).
Discover destinations served from any airport via Wikipedia. Sanity-check whether an airline flies a specific route, find regional service that fare tools miss, identify late-split-return airport options.
Query AwardWallet for loyalty program balances, elite status, and transaction history. Use when checking points inventory, airline status, or planning trips on points.
TripAdvisor Content API for hotel ratings, restaurant search, attraction reviews, rankings, and nearby locations. Use when evaluating hotels or researching destinations. 5K calls/month.
Airline alliance membership (Star Alliance, oneworld, SkyTeam) and cross-alliance booking relationships. Maps which loyalty programs book which airlines, including bilateral partnerships outside alliances.