Exposes award flight tools for Claude Desktop. Helps find the best way to use credit card points for flights by searching award flight options, generating booking playbooks, and providing transfer partner information.
PointPilot has 4 well-named tools with clear descriptions (avg 180 chars, within baseline 194). All tools have input schemas with types and descriptions. However, output schemas are not formally documented, responses are returned as JSON strings without declared structure. Parameter descriptions are solid but lack explicit constraints (enums, ranges). Error handling is minimal; no recovery guidance or actionable error messages. Tool composition is sound (each does one thing), but missing pagination support for search_award_flights despite potentially large result sets.
Generate a step-by-step booking playbook for an award flight. Given a specific award flight, returns detailed instructions for how to transfer points and book. Includes risk assessment (seat availability, transfer timing) and warnings.
Get current featured award flight deals. Returns a curated list of the best award flight deals available right now, including destination, points cost, airline, and deal rating.
Look up transfer partners for a credit card points program. Returns all airline/hotel loyalty programs that a given points currency can transfer to, including transfer ratios, speed, and any active bonus promotions.
Search for award flight options using credit card points. Finds the best award flight redemptions from a given origin within a date window. Returns ranked options with points cost, cash comparison, deal rating, and available transfer paths from your points programs.
Output schemas not documented. Tools return JSON strings without declared field structure. LLMs cannot plan downstream calls or extract fields reliably.
search_award_flights returns up to 10 results hardcoded ([:10]) with no pagination support. Large result sets could exhaust context; no limit parameter or next_cursor offered.
Parameter constraints not enforced via enums or validation. 'cabin' accepts free-form strings; should be enum [economy, premium_economy, business, first]. 'program' in get_transfer_partners accepts free-form despite documented valid set (MR, CHASE, CAP1, MARRIOTT, CITI, BILT).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Error handling absent. No try-catch, no recovery guidance, no actionable error messages. API failures (resp.raise_for_status()) will surface raw HTTP errors to the LLM with no context.
No idempotency guarantees. search_award_flights creates a new trip_search on each call; repeated calls with identical params will generate duplicate searches and recommendations.