Award Travel Finder API
Build agents on the canonical award travel layer
One MCP-native endpoint. 142 OAuth-protected tools for award flight search, hotel availability, points-and-miles pricing, transfer bonuses, status matches, and portfolio tracking — the same surface our own agents run on.
Quickstart · tools/list
curl -X POST https://awardtravelfinder.com/mcp \
-H "Authorization: Bearer $ATF_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'
Why this exists
Award flight data lives behind 30+ different airline booking engines, each with its own auth quirks, rate limits, and HTML structure. Building anything useful on top of it usually means a lot of integration work that keeps breaking. We've spent years getting this surface to work reliably across British Airways, Qatar, Cathay, Virgin Atlantic, Iberia, Alaska, American, Qantas, JetBlue, Etihad, Emirates, and a long tail of partners.
The Award Travel Finder API exposes that work as a single MCP (Model Context Protocol) endpoint. Every tool is JSON-RPC 2.0, OAuth 2.1 protected, and returns structured payloads designed for both LLM consumption and traditional clients. If you're building an agent, a travel-tech product, a Claude / Cursor / Windsurf integration, or just want award data in your stack without maintaining the integrations yourself, this is the layer.
The endpoint is the same one our own web agent, Claude Code plugin, mobile app, and ChatGPT integration call into. When we add a new airline or hotel program, it lights up here automatically — no SDK upgrade required.
Authentication
OAuth 2.1 with PKCE. Three steps from zero to a working Bearer token.
-
1
Register an OAuth application
Sign in and create an app at /dashboard/api-apps/new. You'll receive a
client_idandclient_secret. Set your redirect URI to wherever your client receives auth codes (useurn:ietf:wg:oauth:2.0:oobfor CLI testing). -
2
Exchange authorization code for an access token
Send the user to
/oauth/authorizewithscope=mcp:read. After they consent, exchange the returned code at/oauth/tokenfor a Bearer access token. The full endpoint catalog is published at /.well-known/oauth-authorization-server. -
3
Call
/mcpwith the Bearer tokenSend
Authorization: Bearer <access_token>on every request. JSON-RPC 2.0 over a single POST endpoint — same shape as any other MCP server.
Need the full picture — dynamic client registration, PKCE with real curl commands, token lifetime, rate limits? See the OAuth reference. Connecting Claude, Cursor, or ChatGPT/Codex instead of writing your own client? See the MCP quickstart. Ready-made playbooks exposed as MCP prompts are listed on the skills page.
Code samples
Listing tools and calling whats_on_sale — a no-auth-required tool that returns active points sales and transfer bonuses.
curl
# tools/list
curl -X POST https://awardtravelfinder.com/mcp \
-H "Authorization: Bearer $ATF_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":1,
"method":"tools/list"
}'
# tools/call: whats_on_sale
curl -X POST https://awardtravelfinder.com/mcp \
-H "Authorization: Bearer $ATF_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":2,
"method":"tools/call",
"params": {
"name": "whats_on_sale",
"arguments": { "category": "transfer" }
}
}'
Python (httpx + anthropic)
import os, httpx
from anthropic import Anthropic
ATF = "https://awardtravelfinder.com/mcp"
TOKEN = os.environ["ATF_TOKEN"]
HEADERS = {
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json",
}
# 1) Discover tools
resp = httpx.post(ATF, headers=HEADERS, json={
"jsonrpc": "2.0", "id": 1, "method": "tools/list"
}).json()
tools = resp["result"]["tools"]
# 2) Call whats_on_sale
sale = httpx.post(ATF, headers=HEADERS, json={
"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": {
"name": "whats_on_sale",
"arguments": {"category": "transfer"},
},
}).json()
# 3) Hand the live MCP endpoint to Claude
client = Anthropic()
msg = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
mcp_servers=[{
"type": "url",
"url": ATF,
"name": "award-travel-finder",
"authorization_token": TOKEN,
}],
messages=[{"role": "user",
"content": "What transfer bonuses are live right now?"}],
)
print(msg.content)
Ruby (faraday)
require "faraday"
require "json"
ATF = "https://awardtravelfinder.com/mcp"
TOKEN = ENV.fetch("ATF_TOKEN")
conn = Faraday.new(url: ATF) do |f|
f.request :json
f.response :json
f.headers["Authorization"] = "Bearer #{TOKEN}"
end
# tools/list
list = conn.post("", {
jsonrpc: "2.0", id: 1, method: "tools/list"
}.to_json).body
puts list.dig("result", "tools").map { |t| t["name"] }
# tools/call: whats_on_sale
sale = conn.post("", {
jsonrpc: "2.0", id: 2, method: "tools/call",
params: {
name: "whats_on_sale",
arguments: { category: "transfer" }
}
}.to_json).body
puts JSON.pretty_generate(sale["result"])
Tool catalog
All 142 tools registered on the MCP server. Click any row to see the full description and JSON Schema.
142 tools · sorted A–Z
add_card
Record a credit card the user owns.
add_card
Record a credit card the user owns.
Record a credit card the user owns. Pass the card as a catalogue slug or name (e.g. 'amex-platinum', 'Chase Sapphire Reserve'); an exact slug or name links to the catalogue; any other match returns candidates instead of saving, so ask the user to confirm and call again with the slug. A name that matches nothing is saved as a free-text card. Set custom to true to skip catalogue matching. Optionally record the welcome bonus (bonus_amount, bonus_currency, bonus_status, bonus_earned_on, spend_requirement, spend_deadline_on) and annual_fee; money is in whole currency units. Instead of spend_deadline_on you can pass spend_window_months (1, 2, 3, 6 or 12) and the deadline is worked out from the opened date. Pass country (ISO code, e.g. GB) for cards outside the catalogue; catalogue cards inherit the catalogue country. Set bonus_status to pending when the user is working toward the bonus, earned once it has posted, missed if the deadline passed; leave it unset when you do not know. Call list_my_cards first to avoid duplicates.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"card": {
"type": "string",
"description": "Catalogue slug or card name, or any free-text card name."
},
"nickname": {
"type": "string",
"description": "Optional nickname, e.g. 'my travel card'."
},
"opened_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional ISO date the card was opened."
},
"closed_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional ISO date the card was closed."
},
"notes": {
"type": "string",
"description": "Optional notes."
},
"custom": {
"type": "boolean",
"description": "Save as a free-text card without catalogue matching."
},
"bonus_amount": {
"type": [
"integer",
"string"
],
"description": "Welcome bonus size as a whole number, e.g. 80000. Empty string clears it."
},
"bonus_currency": {
"type": "string",
"description": "What the bonus is paid in, e.g. 'Chase Ultimate Rewards points', 'Amex Membership Rewards points' or 'cash back'."
},
"bonus_status": {
"type": "string",
"enum": [
"pending",
"earned",
"missed",
""
],
"description": "pending: the bonus is offered but the spend requirement is not met yet. earned: the bonus has posted (also set bonus_earned_on). missed: the deadline passed without it. Leave unset if unknown. Empty string clears it."
},
"bonus_earned_on": {
"type": "string",
"description": "ISO date YYYY-MM-DD the bonus was earned; empty string clears it."
},
"spend_requirement": {
"type": [
"number",
"string"
],
"description": "Minimum spend to earn the bonus, in whole currency units (4000 means $4,000). Empty string clears it."
},
"spend_deadline_on": {
"type": "string",
"description": "ISO date YYYY-MM-DD by which the spend requirement must be met; empty string clears it."
},
"spend_window_months": {
"type": [
"integer",
"string"
],
"enum": [
1,
2,
3,
6,
12,
"1",
"2",
"3",
"6",
"12",
""
],
"description": "Months from the opened date to meet the spend requirement (1, 2, 3, 6 or 12). The server works out spend_deadline_on from opened_on. Used only when spend_deadline_on is not given; needs an opened date."
},
"annual_fee": {
"type": [
"number",
"string"
],
"description": "Annual fee in whole currency units (95 means $95). Empty string clears it."
},
"currency": {
"type": "string",
"description": "3-letter currency code for spend_requirement and annual_fee. Defaults to USD."
},
"country": {
"type": "string",
"description": "2-letter ISO country code of the card, for example GB, US, CA or AU (UK is accepted for GB). Catalogue cards use the catalogue country when this is not set. Empty string resets it to the catalogue country."
}
},
"required": [
"card"
],
"type": "object"
}
add_flight_booking
Log a flight booking/redemption — award (points) or cash (paid with money; set kind:"cash" and cash_paid).
add_flight_booking
Log a flight booking/redemption — award (points) or cash (paid with money; set kind:"cash" and cash_paid).
Log a flight booking/redemption — award (points) or cash (paid with money; set kind:"cash" and cash_paid). For multi-leg trips (connecting flights, open-jaw, return), call this once per leg using the same trip_id — put the total cost on the first leg and 0 on subsequent legs. Fields can be extracted from booking confirmation emails. Paid feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airline": {
"type": "string"
},
"origin": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"destination": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"departure_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"kind": {
"type": "string",
"enum": [
"award",
"cash"
],
"description": "award = points/miles redemption (default); cash = paid with money. Defaults to award."
},
"points_spent": {
"type": "integer",
"minimum": 0,
"description": "Award bookings only. Total points for this leg. Use 0 for connecting legs — put the full booking cost on the first leg only."
},
"program": {
"type": "string",
"description": "Award bookings only. Loyalty program used."
},
"cash_paid": {
"type": "number",
"minimum": 0,
"description": "Cash bookings only. Total cash fare paid for this leg, in taxes_currency (default USD)."
},
"cabin_class": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
]
},
"trip_id": {
"type": "string",
"description": "Optional UUID grouping legs of the same multi-leg booking. Generate once and reuse for all legs. Omit for single-leg bookings."
},
"workspace_trip_id": {
"type": "integer",
"description": "Optional id of a workspace Trip (from create_trip / list_trips) to file this flight under, so it shows grouped with the matching hotels. Distinct from trip_id, which only chains multi-leg legs."
},
"flight_number": {
"type": "string"
},
"return_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"taxes_paid": {
"type": "number"
},
"taxes_currency": {
"type": "string",
"description": "Currency for taxes_paid and cash_paid. Defaults to USD."
},
"passengers": {
"type": "integer",
"minimum": 1
},
"confirmation_number": {
"type": "string"
},
"notes": {
"type": "string"
}
},
"required": [
"airline",
"origin",
"destination",
"departure_date",
"cabin_class"
],
"type": "object"
}
add_hotel_booking
Log a hotel booking to the user's portfolio — award (points) or cash (paid with money; set kind:"cash" and original_pay_rate_usd).
add_hotel_booking
Log a hotel booking to the user's portfolio — award (points) or cash (paid with money; set kind:"cash" and original_pay_rate_usd).
Log a hotel booking to the user's portfolio — award (points) or cash (paid with money; set kind:"cash" and original_pay_rate_usd). Both get automatic price-drop monitoring. Use award.hotel_code from get_hotel as hotel_id. Pass trip_id to file the stay under a workspace Trip so it shows grouped with the matching flights. Fields such as check-in/out dates, room type, rate and confirmation number can be extracted from reservation emails. Paid feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"hotel_id": {
"type": "string",
"description": "award.hotel_code from get_hotel (starts with htl_), a numeric hotel id, or a property code that matches exactly one hotel."
},
"check_in_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"check_out_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"kind": {
"type": "string",
"enum": [
"award",
"cash"
],
"description": "award = points stay; cash = paid with money. Both get automatic price-drop monitoring. Defaults to award."
},
"original_points": {
"type": "integer",
"minimum": 1,
"description": "Award bookings only. Total points paid for the stay."
},
"original_pay_rate_usd": {
"type": "number",
"minimum": 0,
"description": "Cash rate paid for the stay (required for cash bookings; optional cash-equivalent for award bookings)."
},
"cash_rate_currency": {
"type": "string",
"description": "Currency of original_pay_rate_usd. Defaults to USD."
},
"room_type": {
"type": "string"
},
"rate_plan": {
"type": "string"
},
"confirmation_number": {
"type": "string"
},
"trip_id": {
"type": "integer",
"description": "Optional id of a workspace Trip (from create_trip / list_trips) to file this stay under."
},
"notes": {
"type": "string"
}
},
"required": [
"hotel_id",
"check_in_date",
"check_out_date"
],
"type": "object"
}
add_voucher
Add a companion/upgrade voucher the user holds to their inventory.
add_voucher
Add a companion/upgrade voucher the user holds to their inventory.
Add a companion/upgrade voucher the user holds to their inventory. Use list_voucher_types to find the voucher_slug. Paid feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"voucher_slug": {
"type": "string",
"description": "Slug from list_voucher_types, e.g. 'ba-amex-premium-plus-companion'."
},
"expires_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Voucher expiry date (YYYY-MM-DD)."
},
"reference": {
"type": "string",
"description": "Voucher code or membership reference."
},
"notes": {
"type": "string"
}
},
"required": [
"voucher_slug"
],
"type": "object"
}
admin_check_offer_duplicate
Admin-only.
admin_check_offer_duplicate
Admin-only.
Admin-only. Given a candidate loyalty offer and a list of recent post titles or texts, returns which recent post (if any) is about the same program and the same kind of offer, with a calibrated confidence. verdict is duplicate, new or unsure.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"candidate": {
"type": "string",
"description": "The offer, e.g. 'Hilton Honors buy points 100% bonus ends 2026-09-25'"
},
"recent": {
"type": "array",
"items": {
"type": "string"
},
"description": "Recent post titles or texts, newest first (max 50)"
}
},
"required": [
"candidate",
"recent"
],
"type": "object"
}
admin_get_user
Admin-only.
admin_get_user
Admin-only.
Admin-only. Full detail for a single user by id or email: subscription, API usage, and recent searches.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "integer",
"description": "User id"
},
"email": {
"type": "string",
"description": "User email (exact match)"
}
},
"type": "object"
}
admin_list_users
Admin-only.
admin_list_users
Admin-only.
Admin-only. Paginated, searchable list of users (email, subscription, signup date, search count). No secrets.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"search": {
"type": "string",
"description": "Filter by email substring"
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number (1-indexed). Defaults to 1."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Items per page (default 20, max 100)."
}
},
"type": "object"
}
admin_mcp_usage_stats
Admin-only.
admin_mcp_usage_stats
Admin-only.
Admin-only. MCP tool usage analytics: call volume, error/paywall rates, latency, top tools, and top users.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"maximum": 90,
"description": "Window for daily_volume/tool_error_rates, default 14"
}
},
"type": "object"
}
admin_platform_overview
Admin-only.
admin_platform_overview
Admin-only.
Admin-only. Platform overview: total/paid/trialing users, signups, subscription breakdown, estimated MRR, search volume, popular routes/airlines, API usage.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"maximum": 365,
"description": "Window for signups_by_day, default 30"
}
},
"type": "object"
}
affordable_destinations
List up to 10 popular destinations from London that a British Airways Avios balance covers one way, with the cabin and the lowest Avios price.
affordable_destinations
List up to 10 popular destinations from London that a British Airways Avios balance covers one way, with the cabin and the lowest Avios price.
List up to 10 popular destinations from London that a British Airways Avios balance covers one way, with the cabin and the lowest Avios price. Use for 'where can I go with 75k Avios?'. Only British Airways Avios from London is supported. Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"description": "Program name or slug. Supported: avios, british-airways."
},
"origin": {
"type": "string",
"description": "Origin city or IATA code. Only London is supported. Omit for London."
},
"balance": {
"type": "integer",
"minimum": 1,
"description": "Avios balance."
},
"cabin": {
"type": "string",
"enum": [
"economy",
"business"
],
"description": "Optional cabin."
}
},
"required": [
"program",
"balance"
],
"type": "object"
}
apply_voucher_to_booking
Apply a held voucher to a flight or hotel booking (e.
apply_voucher_to_booking
Apply a held voucher to a flight or hotel booking (e.
Apply a held voucher to a flight or hotel booking (e.g. a BA companion voucher onto a flight redemption, or a Barclaycard upgrade voucher onto a Club World leg). Omit booking_id to detach the voucher. Paid feature. Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"voucher_id": {
"type": "integer",
"minimum": 1,
"description": "ID of the user's voucher (from list_my_vouchers)."
},
"booking_type": {
"type": "string",
"enum": [
"flight",
"hotel"
],
"description": "Whether booking_id refers to a flight redemption or a hotel booking."
},
"booking_id": {
"type": "integer",
"minimum": 1,
"description": "ID of the booking to apply the voucher to. Omit to detach."
}
},
"required": [
"voucher_id"
],
"type": "object"
}
assign_bookings_to_trip
File existing flight and/or hotel bookings under a workspace Trip so the portfolio shows them grouped as one trip.
assign_bookings_to_trip
File existing flight and/or hotel bookings under a workspace Trip so the portfolio shows them grouped as one trip.
File existing flight and/or hotel bookings under a workspace Trip so the portfolio shows them grouped as one trip. Get the trip id from list_trips / create_trip and booking ids from list_flight_bookings / list_hotel_bookings. Pass an empty array (or omit) for a booking type you're not moving.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"trip_id": {
"type": "integer",
"description": "Target workspace Trip id."
},
"flight_booking_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Flight redemption ids to file under the trip."
},
"hotel_booking_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Hotel booking ids to file under the trip."
}
},
"required": [
"trip_id"
],
"type": "object"
}
audit_hotel_folio
Audit a hotel folio for commonly-disputable charges.
audit_hotel_folio
Audit a hotel folio for commonly-disputable charges.
Audit a hotel folio for commonly-disputable charges. Supports Marriott, Hilton, Hyatt, and IHG. Returns a finding list with a chain-aware dispute template. Premium tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"chain": {
"type": "string",
"enum": [
"marriott",
"hilton",
"hyatt",
"ihg"
]
},
"folio_text": {
"type": "string"
},
"stay_type": {
"type": "string",
"enum": [
"award",
"cash",
"points_advance"
]
},
"status_tier": {
"type": "string"
},
"confirmation_number": {
"type": "string"
}
},
"required": [
"chain",
"folio_text"
],
"type": "object"
}
audit_marriott_folio
Audit a Marriott Bonvoy folio for commonly-disputable charges (resort fee on award stays, parking double-billing, destination fee, internet).
audit_marriott_folio
Audit a Marriott Bonvoy folio for commonly-disputable charges (resort fee on award stays, parking double-billing, destination fee, internet).
Audit a Marriott Bonvoy folio for commonly-disputable charges (resort fee on award stays, parking double-billing, destination fee, internet). Returns a finding list with a dispute template. Premium tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"folio_text": {
"type": "string"
},
"stay_type": {
"type": "string",
"enum": [
"award",
"cash",
"points_advance"
]
},
"status_tier": {
"type": "string",
"enum": [
"member",
"silver",
"gold",
"platinum",
"titanium",
"ambassador"
]
},
"confirmation_number": {
"type": "string"
}
},
"required": [
"folio_text"
],
"type": "object"
}
calculate_flight_earnings
Estimate the ELITE-QUALIFYING points a flight earns toward status — British Airways Tier Points, Air France/KLM Flying Blue XP, or American AAdvantage Loyalty Points — plus the great-circle distance.
calculate_flight_earnings
Estimate the ELITE-QUALIFYING points a flight earns toward status — British Airways Tier Points, Air France/KLM Flying Blue XP, or American AAdvantage Loyalty Points — plus the great-circle distance.
Estimate the ELITE-QUALIFYING points a flight earns toward status — British Airways Tier Points, Air France/KLM Flying Blue XP, or American AAdvantage Loyalty Points — plus the great-circle distance. Answers 'how many tier points is LHR–JFK in business?' and 'how many BA tier points for a £600 fare?'. Tier Points and Loyalty Points are revenue-based (pass `fare_price`); Flying Blue XP is fixed per segment by distance + cabin. Use program slugs: 'british-airways-executive-club', 'air-france-klm-flying-blue', 'american-aadvantage'.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"description": "Origin airport IATA code, e.g. 'LHR'."
},
"destination": {
"type": "string",
"description": "Destination airport IATA code, e.g. 'JFK'."
},
"program": {
"type": "string",
"description": "Qualifying program slug: 'british-airways-executive-club', 'air-france-klm-flying-blue', or 'american-aadvantage'."
},
"cabin": {
"type": "string",
"description": "Cabin: economy, premium, business, or first.",
"default": "economy"
},
"fare_price": {
"type": "number",
"description": "Fare price for revenue-based programs (BA Tier Points, AA Loyalty Points). Base fare + carrier surcharges, excluding taxes."
},
"fare_currency": {
"type": "string",
"description": "ISO currency of fare_price (e.g. GBP, USD, EUR). Defaults to the program's home currency."
},
"segments": {
"type": "integer",
"minimum": 1,
"description": "Number of flight segments/legs (multiplies Flying Blue XP). Default 1."
}
},
"required": [
"origin",
"destination",
"program"
],
"type": "object"
}
cancel_route_monitor
Cancel an active route monitor by ID.
cancel_route_monitor
Cancel an active route monitor by ID.
Cancel an active route monitor by ID. Cancelled monitors stop firing but are preserved for history.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"monitor_id": {
"type": "integer"
}
},
"required": [
"monitor_id"
],
"type": "object"
}
cancel_standing_order
Stop a standing order by ID so it no longer runs.
cancel_standing_order
Stop a standing order by ID so it no longer runs.
Stop a standing order by ID so it no longer runs. The record is kept, including its last result.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"standing_order_id": {
"type": "integer"
}
},
"required": [
"standing_order_id"
],
"type": "object"
}
check_hotel_booking_price
Run a price check now on a tracked hotel booking instead of waiting for the daily check.
check_hotel_booking_price
Run a price check now on a tracked hotel booking instead of waiting for the daily check.
Run a price check now on a tracked hotel booking instead of waiting for the daily check. Returns the booking with the latest price snapshots, including any price drop against the original rate. Same as the Check now button on the booking page. Use list_hotel_bookings to find the booking id.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"booking_id": {
"type": "integer",
"minimum": 1,
"description": "Hotel booking id from list_hotel_bookings."
}
},
"required": [
"booking_id"
],
"type": "object"
}
compare_cash_vs_points
Compare paying cash vs using points for one route, date and cabin.
compare_cash_vs_points
Compare paying cash vs using points for one route, date and cabin.
Compare paying cash vs using points for one route, date and cabin. Returns the cheapest cash fare, the cheapest award (points + taxes), the cents-per-point you would get, and the programme's usual valuation, then recommends cash or points. Premium runs a live search; free accounts get cached data only (each price shows its age and source) and the top 3 award options. Missing data is reported as no_data, never estimated.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin IATA code."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination IATA code."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Departure date, YYYY-MM-DD."
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"description": "Cabin (default economy)."
}
},
"required": [
"origin",
"destination",
"date"
],
"type": "object"
}
compare_transfer_options
Decide which points to use for a specific redemption.
compare_transfer_options
Decide which points to use for a specific redemption.
Decide which points to use for a specific redemption. Given a target loyalty program and how many points it costs, ranks every transfer route from the user's own balances by real cash cost (cents-per-point), including multi-hop routes, active transfer bonuses, and how long each transfer takes to post. Premium tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"target_program": {
"type": "string",
"description": "The program you need points in (e.g. 'Asia Miles', 'Avios', 'Aeroplan', 'Virgin Points')"
},
"points_needed": {
"type": "integer",
"minimum": 1,
"description": "How many target-program points the redemption costs"
}
},
"required": [
"target_program",
"points_needed"
],
"type": "object"
}
connect_integration
Initiate the OAuth flow to connect an external integration.
connect_integration
Initiate the OAuth flow to connect an external integration.
Initiate the OAuth flow to connect an external integration. Returns the authorize URL; the user must open it in a browser to grant access. Use this when a tool returns connection_required.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"provider": {
"type": "string",
"enum": [
"seats_aero",
"award_wallet",
"google_sheets",
"tripit",
"autopilot"
],
"description": "Which integration to connect"
}
},
"required": [
"provider"
],
"type": "object"
}
create_client_portfolio
Create a client portfolio (advisor mode).
create_client_portfolio
Create a client portfolio (advisor mode).
Create a client portfolio (advisor mode). Tracks an end-client's points balances + cabin/airline preferences so the advisor's tools see the right context. Pro tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"client_name": {
"type": "string"
},
"client_email": {
"type": "string"
},
"phone": {
"type": "string"
},
"balances": {
"type": "object",
"description": "Map of program → points balance (e.g. { 'Avios': 240000 })"
},
"preferences": {
"type": "object",
"description": "Free-form prefs: cabin, preferred airlines, anchor airports, etc."
},
"notes": {
"type": "string"
}
},
"required": [
"client_name"
],
"type": "object"
}
create_delay_alert
Create a live delay alert for one airport.
create_delay_alert
Create a live delay alert for one airport.
Create a live delay alert for one airport. Notifies the user by email, SMS or WhatsApp when live delays at the airport reach the minimum delay. SMS and WhatsApp need a phone number. Premium feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airport": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Airport IATA code, e.g. JFK."
},
"channels": {
"type": "array",
"items": {
"type": "string",
"enum": [
"email",
"sms",
"whatsapp"
]
},
"description": "How to notify. Defaults to email."
},
"phone_number": {
"type": "string",
"description": "Required when channels include sms or whatsapp."
},
"min_delay_minutes": {
"type": "integer",
"minimum": 0,
"maximum": 600,
"description": "Only alert when the delay is at least this long. Defaults to 30."
},
"label": {
"type": "string",
"description": "Optional name for the alert."
}
},
"required": [
"airport"
],
"type": "object"
}
create_flight_alert
Create an award flight alert for one airline and route over a date window.
create_flight_alert
Create an award flight alert for one airline and route over a date window.
Create an award flight alert for one airline and route over a date window. Emails the user when award seats open. Free accounts get one flight alert. Route monitors have a separate per-plan limit. Supported airline codes: BA, VS, CX, IB, QR, EY, JL, B6, UA, TP, HA, FI.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airline": {
"type": "string",
"enum": [
"BA",
"VS",
"CX",
"IB",
"QR",
"EY",
"JL",
"B6",
"UA",
"TP",
"HA",
"FI"
],
"description": "Two-letter airline code."
},
"departure": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Departure airport IATA code."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination airport IATA code."
},
"date_range_start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_range_end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cabin_class": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"description": "Omit for any cabin."
}
},
"required": [
"airline",
"departure",
"destination",
"date_range_start",
"date_range_end"
],
"type": "object"
}
create_route_monitor
Create a saved route monitor.
create_route_monitor
Create a saved route monitor.
Create a saved route monitor. ATF checks every 6 hours for award seats matching the route + window + cabin and emails when fresh availability appears. Each plan has a limit on active monitors. When the limit is reached the tool returns the current count and the cap.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"destination": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
]
},
"earliest_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"latest_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"airlines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional airline filter; omit to watch all supported carriers"
},
"passengers": {
"type": "integer",
"minimum": 1,
"maximum": 9
},
"max_points": {
"type": "integer",
"description": "Only fire when points <= this cap"
}
},
"required": [
"origin",
"destination",
"earliest_date",
"latest_date"
],
"type": "object"
}
create_standing_order
Save a recurring instruction to check award availability or price changes on the user's tracked bookings, then email the result to the account holder.
create_standing_order
Save a recurring instruction to check award availability or price changes on the user's tracked bookings, then email the result to the account holder.
Save a recurring instruction to check award availability or price changes on the user's tracked bookings, then email the result to the account holder. Use when the user wants routes, programs, or bookings checked repeatedly on a schedule — e.g. 'every Sunday check whether LHR-NRT business opens on any programme I hold points for' or 'each morning tell me if any of my tracked bookings dropped in price'. Write `prompt` as a complete, self-contained instruction: it runs with no conversation history, so name the routes, programmes, cabins and dates explicitly. Premium only.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"prompt": {
"type": "string",
"description": "The self-contained instruction to run each time. No conversation context is carried over."
},
"cadence": {
"type": "string",
"enum": [
"daily",
"weekly"
],
"description": "Defaults to weekly."
},
"run_hour": {
"type": "integer",
"minimum": 0,
"maximum": 23,
"description": "Hour of day in UTC to run. Defaults to 7."
},
"run_weekday": {
"type": "integer",
"minimum": 0,
"maximum": 6,
"description": "0=Sunday … 6=Saturday. Weekly cadence only. Defaults to Monday (1)."
},
"trip_id": {
"type": "integer",
"description": "Optional trip to file this order under."
}
},
"required": [
"prompt"
],
"type": "object"
}
create_trip
Create a new trip (a project workspace grouping chats, searches, monitors, and bookings).
create_trip
Create a new trip (a project workspace grouping chats, searches, monitors, and bookings).
Create a new trip (a project workspace grouping chats, searches, monitors, and bookings). Free accounts get one active trip; additional active trips require Premium.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Trip name, e.g. 'Tokyo with the family'"
},
"destination": {
"type": "string",
"description": "Primary destination (city or airport)"
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"name"
],
"type": "object"
}
delete_client_portfolio
Permanently delete a client portfolio.
delete_client_portfolio
Permanently delete a client portfolio.
Permanently delete a client portfolio. Pro tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"portfolio_id": {
"type": "integer"
}
},
"required": [
"portfolio_id"
],
"type": "object"
}
delete_delay_alert
Permanently delete a live delay alert.
delete_delay_alert
Permanently delete a live delay alert.
Permanently delete a live delay alert. Confirm with the user first. To stop it temporarily, use update_delay_alert with active false instead. Premium feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_id": {
"type": "integer",
"description": "Delay alert id from list_delay_alerts."
}
},
"required": [
"alert_id"
],
"type": "object"
}
delete_flight_alert
Permanently delete an award flight alert.
delete_flight_alert
Permanently delete an award flight alert.
Permanently delete an award flight alert. Confirm with the user first. To stop it temporarily, use update_flight_alert with active false instead.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_id": {
"type": "integer",
"description": "Flight alert id from list_flight_alerts."
}
},
"required": [
"alert_id"
],
"type": "object"
}
delete_flight_booking
Cancel or remove a tracked flight booking.
delete_flight_booking
Cancel or remove a tracked flight booking.
Cancel or remove a tracked flight booking. Use this when the user says the flight is cancelled, superseded, no longer happening, or asks to remove/archive it.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"booking_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"booking_id"
],
"type": "object"
}
delete_hotel_booking
Remove a tracked hotel booking from the user's portfolio.
delete_hotel_booking
Remove a tracked hotel booking from the user's portfolio.
Remove a tracked hotel booking from the user's portfolio. Use when the trip is cancelled or the booking was added by mistake.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"booking_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"booking_id"
],
"type": "object"
}
delete_lounge_visit
Remove a lounge visit you previously logged with log_lounge_visit.
delete_lounge_visit
Remove a lounge visit you previously logged with log_lounge_visit.
Remove a lounge visit you previously logged with log_lounge_visit. Use list_lounge_visits to find the visit id. Paid feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"visit_id": {
"type": "integer",
"description": "Id of the logged visit, from list_lounge_visits."
}
},
"required": [
"visit_id"
],
"type": "object"
}
delete_loyalty_status
Remove a tracked elite/loyalty status (e.
delete_loyalty_status
Remove a tracked elite/loyalty status (e.
Remove a tracked elite/loyalty status (e.g. when it lapses and the user doesn't want to renew it).
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string"
}
},
"required": [
"program"
],
"type": "object"
}
delete_notification
Delete one notification from the user's inbox.
delete_notification
Delete one notification from the user's inbox.
Delete one notification from the user's inbox. Confirm with the user first. Use mark_notifications_read to keep it.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"notification_id": {
"type": "string",
"description": "Notification id from list_notifications."
}
},
"required": [
"notification_id"
],
"type": "object"
}
delete_points_balance
Remove a loyalty program from your points balances — e.
delete_points_balance
Remove a loyalty program from your points balances — e.
Remove a loyalty program from your points balances — e.g. you closed the account or added it by mistake. Call list_points_balances first and use the program slug it shows. Free on all plans.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"description": "Canonical loyalty program slug to remove (as shown by list_points_balances)",
"enum": [
"accor-all",
"aegean-miles-bonus",
"aer-lingus-aerclub",
"air-canada-aeroplan",
"air-france-klm-flying-blue",
"air-india-maharaja-club",
"air-new-zealand-koru",
"alaska-atmos-rewards",
"american-aadvantage",
"amex-membership-rewards",
"amex-membership-rewards-uk",
"ana-mileage-club",
"best-western-rewards",
"bilt-rewards",
"british-airways-executive-club",
"capital-one-miles",
"cathay-pacific-cathay",
"chase-ultimate-rewards",
"china-airlines-dynasty-flyer",
"choice-privileges",
"citi-thankyou-points",
"delta-skymiles",
"emirates-skywards",
"etihad-guest",
"eva-air-infinity-mileagelands",
"finnair-plus",
"frontier-miles",
"garuda-indonesia-garudamiles",
"hilton-honors",
"iberia-club",
"ihg-one-rewards",
"jal-mileage-bank",
"jetblue-trueblue",
"korean-air-skypass",
"lufthansa-miles-and-more",
"malaysia-airlines-enrich",
"marriott-bonvoy",
"mea-cedar-miles",
"meliarewards",
"minor-discovery",
"oman-air-sindbad",
"philippine-airlines-mabuhay-miles",
"qantas-frequent-flyer",
"qatar-privilege-club",
"radisson-rewards",
"royal-jordanian-royal-club",
"sas-eurobonus",
"singapore-krisflyer",
"southwest-rapid-rewards",
"tap-miles-go",
"thai-airways-royal-orchid-plus",
"turkish-airlines-miles-and-smiles",
"united-mileageplus",
"velocity-frequent-flyer",
"vietnam-airlines-lotusmiles",
"virgin-atlantic-flying-club",
"world-of-hyatt",
"wyndham-rewards"
]
}
},
"required": [
"program"
],
"type": "object"
}
delete_spending_data
Delete all the spending data the user imported: the monthly category totals and the statement fingerprints.
delete_spending_data
Delete all the spending data the user imported: the monthly category totals and the statement fingerprints.
Delete all the spending data the user imported: the monthly category totals and the statement fingerprints. The same as Delete my spending data on the spending page. Card recommendations based on spending stop until a new statement is imported. This cannot be undone: confirm with the user first, then call again with confirm true. Without confirm it deletes nothing and returns what would be removed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"confirm": {
"type": "boolean",
"description": "Must be true to delete. Ask the user first."
}
},
"type": "object"
}
delete_trip
Archive a trip, or delete it permanently.
delete_trip
Archive a trip, or delete it permanently.
Archive a trip, or delete it permanently. Archiving keeps the trip and its itinerary but frees the active-trip slot; bookings, monitors and chats filed under it are always kept and simply unfiled.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"trip_id": {
"type": "integer",
"description": "Trip id to remove. Use list_trips to find it."
},
"permanently": {
"type": "boolean",
"description": "Delete the trip and its itinerary for good instead of archiving. Defaults to false."
}
},
"required": [
"trip_id"
],
"type": "object"
}
delete_voucher
Remove a voucher from the user's inventory.
delete_voucher
Remove a voucher from the user's inventory.
Remove a voucher from the user's inventory.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"voucher_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"voucher_id"
],
"type": "object"
}
disconnect_integration
Revoke a previously connected integration.
disconnect_integration
Revoke a previously connected integration.
Revoke a previously connected integration. The OAuth tokens are deleted from ATF storage.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"provider": {
"type": "string",
"enum": [
"seats_aero",
"award_wallet",
"google_sheets",
"tripit",
"autopilot"
]
}
},
"required": [
"provider"
],
"type": "object"
}
discover_more_flight_tools
Discover other flight & travel MCP servers you can add to your client.
discover_more_flight_tools
Discover other flight & travel MCP servers you can add to your client.
Discover other flight & travel MCP servers you can add to your client. Lists complementary remote MCPs covering aircraft seatmaps, airport delays/wait times, and lounges — with one-line install URLs. Call this when the user asks about seat selection, airport delays/security waits, baggage rankings, lounges, or 'what other flight tools are there?'
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
estimate_award_fees
Estimate the taxes and carrier surcharges you pay on top of the points for an award, per loyalty programme, for a route and cabin.
estimate_award_fees
Estimate the taxes and carrier surcharges you pay on top of the points for an award, per loyalty programme, for a route and cabin.
Estimate the taxes and carrier surcharges you pay on top of the points for an award, per loyalty programme, for a route and cabin. These are ESTIMATES: averages of taxes seen in past award searches, with sample size, range and data age. Falls back to the region-to-region average when the exact route has no data, and says so. Free accounts see the top 3 programmes; Premium sees all.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin IATA code."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination IATA code."
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"description": "Cabin (default economy)."
},
"programs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional programme filter, e.g. ['flying-blue', 'virgin-atlantic', 'United']."
}
},
"required": [
"origin",
"destination"
],
"type": "object"
}
explore_destinations
Answer "where can I go with my points?" from an origin airport.
explore_destinations
Answer "where can I go with my points?" from an origin airport.
Answer "where can I go with my points?" from an origin airport. Lists destinations with award seats in our CACHED award calendars for a month range, cheapest first, and says which ones the user's points balances cover directly or through transfer partners. Uses cached data only (each row shows its age) — confirm a pick with search_all_airlines before booking. Pass points_balance + program to test a specific balance; otherwise the user's saved balances are used. Free accounts see the top 3; Premium sees all.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin IATA code, e.g. LHR. Use the user's home airport from session context when known."
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"description": "Cabin (default economy)."
},
"month_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "First month, YYYY-MM (default this month)."
},
"month_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "Last month, YYYY-MM (default month_from + 2)."
},
"points_balance": {
"type": "integer",
"minimum": 1,
"description": "Optional points balance to test."
},
"program": {
"type": "string",
"description": "Programme or card currency for points_balance, e.g. 'Amex Membership Rewards', 'Avios'."
}
},
"required": [
"origin"
],
"type": "object"
}
find_status_run
Find the cheapest status run that closes the gap to an elite tier before a deadline.
find_status_run
Find the cheapest status run that closes the gap to an elite tier before a deadline.
Find the cheapest status run that closes the gap to an elite tier before a deadline. Uses known own-metal status-run routes from the home airport and cached cash fares only (no live fare search), and returns tier points/XP per trip, cost per qualifying unit, trips needed and total cost. The gap comes from the user's tracked status plus booked flights. Free: top 3 runs. Paid: all runs.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"goal_program": {
"type": "string",
"description": "Status programme slug, e.g. 'british-airways-executive-club'."
},
"goal_tier": {
"type": "string",
"description": "Goal tier, e.g. 'Gold'. Defaults to the tracked target or next tier."
},
"deadline": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date the tier must be reached by, YYYY-MM-DD."
},
"home_airport": {
"type": "string",
"description": "Home airport IATA code, e.g. 'LHR'."
}
},
"required": [
"goal_program",
"deadline",
"home_airport"
],
"type": "object"
}
find_transfer_paths
Find all transfer routes (direct AND multi-hop) to move points from one program to another, e.
find_transfer_paths
Find all transfer routes (direct AND multi-hop) to move points from one program to another, e.
Find all transfer routes (direct AND multi-hop) to move points from one program to another, e.g. 'Amex Membership Rewards' to 'American Airlines AAdvantage'. Surfaces non-obvious second-hop routes through hotel programs, applies live transfer bonuses, and computes source points needed. Use when a card/program has no direct partner with the target.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"from_program": {
"type": "string",
"description": "Program you have points in (e.g. 'Amex Membership Rewards', 'Chase', 'Marriott Bonvoy')"
},
"target_program": {
"type": "string",
"description": "Program you want points in (e.g. 'American Airlines AAdvantage', 'Alaska', 'Avios')"
},
"points_needed": {
"type": "integer",
"minimum": 1,
"description": "Optional: how many target-program points you need. Returns source points required per route."
},
"max_hops": {
"type": "integer",
"minimum": 1,
"maximum": 3,
"description": "Max transfer steps to consider (default 3)"
}
},
"required": [
"from_program",
"target_program"
],
"type": "object"
}
generate_branded_pdf
Generate a branded leave-behind for an advisor: combines a flight-search result + (optional) client portfolio into a print-ready document.
generate_branded_pdf
Generate a branded leave-behind for an advisor: combines a flight-search result + (optional) client portfolio into a print-ready document.
Generate a branded leave-behind for an advisor: combines a flight-search result + (optional) client portfolio into a print-ready document. Returns a tokenized public URL the advisor can share with their client. Pro tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"title": {
"type": "string",
"description": "Document title (default: 'Award Travel Recommendation')"
},
"summary": {
"type": "string",
"description": "Lead paragraph the advisor wants on the cover"
},
"flights": {
"type": "array",
"description": "Array of flight rows from a prior search tool result"
},
"client_portfolio_id": {
"type": "integer",
"description": "Optional ClientPortfolio ID to embed balance summary"
},
"advisor_brand": {
"type": "object",
"description": "Optional brand overrides: name, tagline, logo_url, accent_color"
}
},
"type": "object"
}
get_award_chart_faq
Get curated award-chart FAQs, sweet spots, and booking tips for a loyalty programme (e.
get_award_chart_faq
Get curated award-chart FAQs, sweet spots, and booking tips for a loyalty programme (e.
Get curated award-chart FAQs, sweet spots, and booking tips for a loyalty programme (e.g. Aeroplan, British Airways Avios, AAdvantage, Flying Blue, World of Hyatt). Use to answer questions about a programme's award pricing, best redemptions, and how to book. Accepts a programme slug OR a loose name. Returns editorial Q&A you can cite directly. Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"description": "Programme slug or loose name, e.g. 'aeroplan', 'British Airways', 'avios', 'world-of-hyatt'."
}
},
"required": [
"program"
],
"type": "object"
}
get_award_release_window
Look up when an airline opens award seats for booking (days from departure).
get_award_release_window
Look up when an airline opens award seats for booking (days from departure).
Look up when an airline opens award seats for booking (days from departure). Use this before searching for a date >330 days out to warn the user if inventory hasn't been loaded yet, and to suggest the right retry date or a route monitor.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airline": {
"type": "string",
"description": "IATA code (e.g. 'BA') or carrier name (e.g. 'British Airways')."
}
},
"required": [
"airline"
],
"type": "object"
}
get_award_trip_details
Get flight-level detail for one award result from search_all_airlines or search_availability: flight numbers, aircraft, departure/arrival times, stops, and direct booking links into the mileage programme.
get_award_trip_details
Get flight-level detail for one award result from search_all_airlines or search_availability: flight numbers, aircraft, departure/arrival times, stops, and direct booking links into the mileage programme.
Get flight-level detail for one award result from search_all_airlines or search_availability: flight numbers, aircraft, departure/arrival times, stops, and direct booking links into the mileage programme. Pass the `trip_id` from a seats.aero result row. Requires a connected seats.aero account.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"trip_id": {
"type": "string",
"description": "The `trip_id` field from an award search result row"
}
},
"required": [
"trip_id"
],
"type": "object"
}
get_booking_inbox
Get the user's private email forwarding address for booking confirmations, creating it on first use.
get_booking_inbox
Get the user's private email forwarding address for booking confirmations, creating it on first use.
Get the user's private email forwarding address for booking confirmations, creating it on first use. Forwarding a flight or hotel confirmation to this address adds it to the user's bookings. Premium feature, with a free trial for some accounts.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
get_buy_points_pricing
Get the cost to buy points/miles for a loyalty program.
get_buy_points_pricing
Get the cost to buy points/miles for a loyalty program.
Get the cost to buy points/miles for a loyalty program. Returns tiered base purchase pricing and any active bonus promotion. Use to answer 'how much does it cost to buy X Avios/miles/points?' If no program specified, returns all programs with pricing data. Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"description": "Program slug. Omit to list all available programs."
},
"quantity": {
"type": "integer",
"minimum": 1,
"description": "Number of points/miles to price (e.g. 50000)."
}
},
"type": "object"
}
get_calendar_feed
Get the user's private calendar subscription link.
get_calendar_feed
Get the user's private calendar subscription link.
Get the user's private calendar subscription link. Subscribe to it in Google, Apple or Outlook calendar and upcoming hotel stays and flights stay in sync. Past and cancelled bookings are not included. The link is a secret: only share it with the user.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
get_cancellation_fee
Get the award-ticket cancellation/redeposit fee for an airline's OWN loyalty programme (e.
get_cancellation_fee
Get the award-ticket cancellation/redeposit fee for an airline's OWN loyalty programme (e.
Get the award-ticket cancellation/redeposit fee for an airline's OWN loyalty programme (e.g. British Airways Avios, Qatar Privilege Club, Virgin Atlantic Flying Club). Returns the headline fee, who is exempt (elite tiers), and a source link. Accepts a slug or a loose airline name. NOTE: fees for booking a carrier through a PARTNER programme differ — this returns the airline's direct policy. Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airline": {
"type": "string",
"description": "Airline slug or name, e.g. 'british-airways', 'Qatar Airways', 'virgin'."
}
},
"required": [
"airline"
],
"type": "object"
}
get_client_portfolio
Fetch a single client portfolio by ID.
get_client_portfolio
Fetch a single client portfolio by ID.
Fetch a single client portfolio by ID. Pro tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"portfolio_id": {
"type": "integer"
}
},
"required": [
"portfolio_id"
],
"type": "object"
}
get_earning_rates
Look up mileage earning rates for crediting a partner-airline ticket to a loyalty program.
get_earning_rates
Look up mileage earning rates for crediting a partner-airline ticket to a loyalty program.
Look up mileage earning rates for crediting a partner-airline ticket to a loyalty program. Returns the % of distance earned per booking class. Use when deciding which program to credit a flight to. Free.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"enum": [
"british-airways",
"aeroplan",
"alaska",
"american-aadvantage",
"virgin-atlantic",
"flying-blue"
],
"description": "Loyalty program to credit to"
},
"airline": {
"type": "string",
"pattern": "^[A-Z0-9]{2}$",
"description": "Operating airline IATA code (e.g. AA, BA, QR)"
},
"fare_class": {
"type": "string",
"description": "Optional booking class letter (e.g. K, M, Y). If omitted, returns the full table for that program×airline."
}
},
"required": [
"program",
"airline"
],
"type": "object"
}
get_flight
Full points-price table and booking steps for one flight from list_flights: what it costs in every card currency, whether to transfer or use the travel portal, the transfer path, bonus and speed, and the programme's taxes.
get_flight
Full points-price table and booking steps for one flight from list_flights: what it costs in every card currency, whether to transfer or use the travel portal, the transfer path, bonus and speed, and the programme's taxes.
Full points-price table and booking steps for one flight from list_flights: what it costs in every card currency, whether to transfer or use the travel portal, the transfer path, bonus and speed, and the programme's taxes. Premium.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"flight_id": {
"type": "string",
"description": "Id from list_flights, e.g. LHR_JFK_2026-11-10_business_3"
}
},
"required": [
"flight_id"
],
"type": "object"
}
get_flight_booking
Get details of a specific flight booking/redemption.
get_flight_booking
Get details of a specific flight booking/redemption.
Get details of a specific flight booking/redemption.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"booking_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"booking_id"
],
"type": "object"
}
get_flight_status
Live status of a flight: on time, delayed, cancelled, departed or landed, with scheduled, estimated and actual times, terminal, gate, baggage belt, delay minutes and aircraft.
get_flight_status
Live status of a flight: on time, delayed, cancelled, departed or landed, with scheduled, estimated and actual times, terminal, gate, baggage belt, delay minutes and aircraft.
Live status of a flight: on time, delayed, cancelled, departed or landed, with scheduled, estimated and actual times, terminal, gate, baggage belt, delay minutes and aircraft. Pass booking_id for one of the user's saved flight bookings, or flight_number plus date for any flight. Premium only; free accounts get an upgrade note.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"booking_id": {
"type": "integer",
"description": "Id of a saved flight booking (from list_flight_bookings)."
},
"flight_number": {
"type": "string",
"description": "Flight code such as BA117 or AA 100."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Local departure date, YYYY-MM-DD. Defaults to today."
}
},
"type": "object"
}
get_hotel
Live cash rates by booking site and the full points-price table for one hotel from list_hotels: cost in each card currency via its travel portal, and — for Marriott, Hilton, Hyatt and IHG hotels — the award price in the hotel's own points plus what that costs to transfer from each card currency.
get_hotel
Live cash rates by booking site and the full points-price table for one hotel from list_hotels: cost in each card currency via its travel portal, and — for Marriott, Hilton, Hyatt and IHG hotels — the award price in the hotel's own points plus what that costs to transfer from each card currency.
Live cash rates by booking site and the full points-price table for one hotel from list_hotels: cost in each card currency via its travel portal, and — for Marriott, Hilton, Hyatt and IHG hotels — the award price in the hotel's own points plus what that costs to transfer from each card currency. For Leading Hotels of the World hotels it also returns the Leaders Club points price. Returns award.hotel_code and award.rate_plan for monitor_hotel_price when award nights exist. Premium.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"hotel_id": {
"type": "string",
"description": "Hotel id from list_hotels (starts with htl_)"
},
"check_in_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"check_out_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 8,
"description": "Default 2"
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Default 1"
}
},
"required": [
"hotel_id",
"check_in_date",
"check_out_date"
],
"type": "object"
}
get_hotel_booking
Get details and full price history of a monitored hotel booking.
get_hotel_booking
Get details and full price history of a monitored hotel booking.
Get details and full price history of a monitored hotel booking.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"booking_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"booking_id"
],
"type": "object"
}
get_partner_award_options
Given an operating airline and a route, list which loyalty programmes can book that airline as a PARTNER and how many points it costs per cabin.
get_partner_award_options
Given an operating airline and a route, list which loyalty programmes can book that airline as a PARTNER and how many points it costs per cabin.
Given an operating airline and a route, list which loyalty programmes can book that airline as a PARTNER and how many points it costs per cabin. Example: a Korean Air (KE) flight ICN→LAX can be booked with Virgin Points. Use this to answer 'which of my programmes can book this flight and what's the cheapest?'. Points are off-peak/saver estimates from published partner award charts. Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"carrier": {
"type": "string",
"description": "Operating airline IATA code (2 letters, e.g. KE for Korean Air, AF for Air France)."
},
"departure": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin airport IATA code (e.g. ICN)."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination airport IATA code (e.g. LAX)."
}
},
"required": [
"carrier",
"departure",
"destination"
],
"type": "object"
}
get_points_valuation
Get the cents-per-point valuation for a credit-card points/miles currency or hotel program — answers "what is a Chase/Amex/Capital One/Avios/Marriott/Hyatt point worth?".
get_points_valuation
Get the cents-per-point valuation for a credit-card points/miles currency or hotel program — answers "what is a Chase/Amex/Capital One/Avios/Marriott/Hyatt point worth?".
Get the cents-per-point valuation for a credit-card points/miles currency or hotel program — answers "what is a Chase/Amex/Capital One/Avios/Marriott/Hyatt point worth?". Returns the headline cents-per-point, the value we've actually observed across logged redemptions (with sample size) when available, and the best way to use the currency. Pass a slug (e.g. chase-ultimate-rewards) or a loose name (e.g. "amex points", "hyatt"). Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"currency": {
"type": "string",
"description": "Points/miles currency — a slug (chase-ultimate-rewards) or loose name (\"amex points\", \"marriott\", \"hyatt\")."
}
},
"required": [
"currency"
],
"type": "object"
}
get_portfolio
Get a complete summary of your travel rewards portfolio for signed-in users: points balances, spend on hotels and flights, upcoming and past trips, destinations, and monthly spending trends.
get_portfolio
Get a complete summary of your travel rewards portfolio for signed-in users: points balances, spend on hotels and flights, upcoming and past trips, destinations, and monthly spending trends.
Get a complete summary of your travel rewards portfolio for signed-in users: points balances, spend on hotels and flights, upcoming and past trips, destinations, and monthly spending trends. Uses the same underlying snapshot as the server-loaded chat preamble; call after the user adds bookings or balances in-session when you need a refresh.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
get_pricing
Get the award pricing chart for a specific airline route.
get_pricing
Get the award pricing chart for a specific airline route.
Get the award pricing chart for a specific airline route. Shows points required per cabin class (off-peak/peak). No date needed. Paid feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airline": {
"type": "string",
"enum": [
"british_airways",
"qatar_airways",
"cathay_pacific",
"virgin_atlantic",
"iberia",
"emirates",
"qantas"
]
},
"departure_code": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"arrival_code": {
"type": "string",
"pattern": "^[A-Z]{3}$"
}
},
"required": [
"airline",
"departure_code",
"arrival_code"
],
"type": "object"
}
get_profile
Get the signed-in user's profile: name, email, plan tier, country of residence (used to pick card offers and region-specific recommendations), the offer country in effect, and leaderboard handle.
get_profile
Get the signed-in user's profile: name, email, plan tier, country of residence (used to pick card offers and region-specific recommendations), the offer country in effect, and leaderboard handle.
Get the signed-in user's profile: name, email, plan tier, country of residence (used to pick card offers and region-specific recommendations), the offer country in effect, and leaderboard handle. Use set_country to change the country.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
get_program_partner_chart
Get a loyalty programme's PARTNER airline award chart (the points to book partner-operated flights), as a region-pair or distance-band table with sources, confidence, and accuracy caveats.
get_program_partner_chart
Get a loyalty programme's PARTNER airline award chart (the points to book partner-operated flights), as a region-pair or distance-band table with sources, confidence, and accuracy caveats.
Get a loyalty programme's PARTNER airline award chart (the points to book partner-operated flights), as a region-pair or distance-band table with sources, confidence, and accuracy caveats. Supported: aeroplan (Air Canada), aadvantage (American), singapore-krisflyer, cathay-asia-miles (distance-based), turkish-miles-smiles, ana-mileage-club. Match the route's origin/destination regions (or distance) to a row to read the points cost. IMPORTANT: read the returned `confidence`, `caveats`, and `trip_basis` fields — points are one-way unless trip_basis says round_trip (ANA is round-trip), and these charts apply to PARTNER-operated flights, not the programme's own dynamically-priced flights. Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"enum": [
"aeroplan",
"aadvantage",
"singapore-krisflyer",
"cathay-asia-miles",
"turkish-miles-smiles",
"ana-mileage-club"
],
"description": "Programme slug."
}
},
"required": [
"program"
],
"type": "object"
}
get_program_rates
Get the full award chart rates for a specific loyalty program.
get_program_rates
Get the full award chart rates for a specific loyalty program.
Get the full award chart rates for a specific loyalty program. Returns all destinations with points required per cabin class including off-peak/peak pricing, with the source and date of the prices. British Airways no longer publishes a chart: its rates are route price bands from London with Avios and cash per cabin. Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"enum": [
"british-airways",
"qatar-airways",
"singapore-airlines",
"cathay-pacific",
"emirates",
"etihad",
"flying-blue",
"aeroplan",
"turkish-airlines",
"ana",
"jetblue",
"jet2-emirates",
"virgin-atlantic",
"iberia",
"alaska-airlines",
"american-airlines",
"qantas",
"delta-skymiles",
"united",
"lifemiles",
"marriott-bonvoy",
"hilton-honors",
"hyatt"
],
"description": "Loyalty program slug (e.g. british-airways, emirates, aeroplan)"
}
},
"required": [
"program"
],
"type": "object"
}
get_skill
Return the markdown body of one skill by its key from list_skills.
get_skill
Return the markdown body of one skill by its key from list_skills.
Return the markdown body of one skill by its key from list_skills. Knowledge skills return reference facts and tables: award-program rules, sweet spots, hold rules, cabin codes, alliances and hotel chains. Task skills marked agent_readable return their step-by-step playbook; other task skills return a short message instead. Free, no sign-in needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"key": {
"type": "string",
"description": "Skill key from list_skills, e.g. a knowledge skill or an agent_readable task skill"
}
},
"required": [
"key"
],
"type": "object"
}
get_spending_insights
The user's imported card spending: yearly spend per category and monthly average.
get_spending_insights
The user's imported card spending: yearly spend per category and monthly average.
The user's imported card spending: yearly spend per category and monthly average. Premium adds the best card per category, the next card to add with the extra points per year, travel credits that pay for themselves, and a projected points balance by a target date.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"target_date": {
"type": "string",
"description": "Trip date (YYYY-MM-DD) to project the points balance to. Optional."
},
"starting_balance": {
"type": "integer",
"description": "Points the user holds now in the target currency. Optional."
}
},
"type": "object"
}
get_status_matches
Get current airline status match offers.
get_status_matches
Get current airline status match offers.
Get current airline status match offers. Returns active promotions where you can match elite status from one airline to another. Includes direct apply links. Each program also has a detailed FAQ page at awardtravelfinder.com/status-match/{program-slug} with eligibility, requirements, and step-by-step instructions. Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alliance": {
"type": "string",
"enum": [
"SkyTeam",
"Star Alliance",
"oneworld"
],
"description": "Filter by airline alliance"
}
},
"type": "object"
}
get_status_progress
Show the user's progress toward elite status across all their tracked loyalty programs — for each: current tier, qualifying balance, the next tier's threshold and what it unlocks, how far they are from it, their requalification date, and a forecast built from their booked flights (completed + upcoming, and whether they make the tier by the year end).
get_status_progress
Show the user's progress toward elite status across all their tracked loyalty programs — for each: current tier, qualifying balance, the next tier's threshold and what it unlocks, how far they are from it, their requalification date, and a forecast built from their booked flights (completed + upcoming, and whether they make the tier by the year end).
Show the user's progress toward elite status across all their tracked loyalty programs — for each: current tier, qualifying balance, the next tier's threshold and what it unlocks, how far they are from it, their requalification date, and a forecast built from their booked flights (completed + upcoming, and whether they make the tier by the year end). Answers 'how close am I to my next tier?' and 'what would the next tier get me?'. Read-only.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"description": "Optional — limit to a single program slug. Omit to return all tracked statuses."
}
},
"type": "object"
}
get_trip_briefing
Combine FlightSeatmap and FlightQueue data for a planned flight: aircraft and seatmap availability plus airport delay and security-wait snapshots.
get_trip_briefing
Combine FlightSeatmap and FlightQueue data for a planned flight: aircraft and seatmap availability plus airport delay and security-wait snapshots.
Combine FlightSeatmap and FlightQueue data for a planned flight: aircraft and seatmap availability plus airport delay and security-wait snapshots. Use when a user asks how to prepare for a flight or wants one live flight brief.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"flight_number": {
"type": "string",
"pattern": "^[A-Za-z0-9]{2,3}\\s*\\d{1,4}$",
"description": "Flight code such as BA117 or AA 100"
},
"flight_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional departure date"
},
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Optional departure airport IATA code"
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Optional arrival airport IATA code"
}
},
"required": [
"flight_number"
],
"type": "object"
}
get_trip_status
Live progress of the signed-in user's trip: a timeline of flights and hotel stays in order, the current moment (check-in today, night 2 of 4, checkout today, departs today), a countdown to the next item, and loyalty points still expected or missing from completed stays and flights.
get_trip_status
Live progress of the signed-in user's trip: a timeline of flights and hotel stays in order, the current moment (check-in today, night 2 of 4, checkout today, departs today), a countdown to the next item, and loyalty points still expected or missing from completed stays and flights.
Live progress of the signed-in user's trip: a timeline of flights and hotel stays in order, the current moment (check-in today, night 2 of 4, checkout today, departs today), a countdown to the next item, and loyalty points still expected or missing from completed stays and flights. Use for 'what's next on my trip?', 'when do I check in?', or 'did my points post?'. Pass a trip slug or id; without one it uses the trip in progress or the next one.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"trip": {
"type": "string",
"description": "Optional trip slug or id. Omit for the current or next trip."
}
},
"type": "object"
}
group_bookings_into_trips
Group the user's ungrouped flight and hotel bookings into trips in one pass.
group_bookings_into_trips
Group the user's ungrouped flight and hotel bookings into trips in one pass.
Group the user's ungrouped flight and hotel bookings into trips in one pass. Bookings are linked when they share a multi-leg trip_id or a confirmation number, and otherwise when their dates are within gap_days of each other. Each group is filed under an existing active trip with overlapping dates and a matching destination, or under a new trip named after the destination and month. Defaults to a dry run that only proposes the groups. Show the proposal to the user, then call again with dry_run false (optionally with only_groups to apply some) to apply it. Free accounts can hold one active trip, so extra new trips are skipped for them. To file specific bookings yourself use assign_bookings_to_trip.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"dry_run": {
"type": "boolean",
"description": "Propose only. Defaults to true. Pass false to apply after the user confirms."
},
"gap_days": {
"type": "integer",
"minimum": 0,
"maximum": 14,
"description": "Bookings whose dates are this many days apart or fewer are grouped. Defaults to 2."
},
"only_groups": {
"type": "array",
"items": {
"type": "string"
},
"description": "Group ids from the dry run to apply, from the dry run with the same gap_days. Omit to apply all."
}
},
"type": "object"
}
import_balances_from_image
Read points/miles balances from a screenshot or PDF of a loyalty app or account page.
import_balances_from_image
Read points/miles balances from a screenshot or PDF of a loyalty app or account page.
Read points/miles balances from a screenshot or PDF of a loyalty app or account page. Step 1: pass document_id (a file the user uploaded to their documents) or image_base64 + media_type. This returns a preview and a preview_id; show the user each programme with old vs new balance and expiry. Step 2: after the user confirms, call again with apply=true and that preview_id to save them. Previews expire after 30 minutes. Programmes we do not recognise are listed as unmatched and are not saved. Never ask the user for airline or bank passwords. Paid feature. Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"document_id": {
"type": "integer",
"description": "Id of a document the user uploaded (image or PDF)."
},
"image_base64": {
"type": "string",
"description": "Base64 image or PDF bytes, or a data URI (data:image/png;base64,...), when there is no document_id."
},
"media_type": {
"type": "string",
"enum": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp",
"application/pdf"
],
"description": "Media type of image_base64. Optional when image_base64 is a data URI."
},
"apply": {
"type": "boolean",
"description": "false = preview only (default). true = save the balances of preview_id."
},
"preview_id": {
"type": "string",
"description": "The preview_id from the preview call. Required when apply is true."
}
},
"type": "object"
}
import_booking
Import a flight or hotel booking from a confirmation.
import_booking
Import a flight or hotel booking from a confirmation.
Import a flight or hotel booking from a confirmation. Pass `text` (the pasted confirmation email or booking text, e.g. from the user's message or a Gmail/Outlook search result) or `document_id` (a file the user uploaded, from search_my_documents). New bookings are added at once and filed into the matching trip. A change or cancellation is NOT applied: the result has status pending_confirmation and an import_id. Show the user what will change, and only if they agree call this tool again with `import_id` and `confirm: true`. Low-confidence reads go to the user's review inbox. Paid feature. An agent with browser or computer use can read this from the user's signed-in account page (see skill capture-from-airline-hotel-account).
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"text": {
"type": "string",
"description": "The full confirmation text: email subject and body, or the text of a booking document."
},
"subject": {
"type": "string",
"description": "Optional email subject line."
},
"document_id": {
"type": "integer",
"description": "Optional id of a document the user uploaded."
},
"import_id": {
"type": "integer",
"description": "With confirm: true, the import_id of a pending change or cancellation the user agreed to."
},
"confirm": {
"type": "boolean",
"description": "Set to true, with import_id, only after the user agrees to apply the change or cancellation."
}
},
"type": "object"
}
import_cards_from_image
Read credit cards and welcome bonuses from a screenshot or PDF of an issuer account page, a card approval email or a bonus tracker.
import_cards_from_image
Read credit cards and welcome bonuses from a screenshot or PDF of an issuer account page, a card approval email or a bonus tracker.
Read credit cards and welcome bonuses from a screenshot or PDF of an issuer account page, a card approval email or a bonus tracker. Step 1: pass document_id (a file the user uploaded to their documents) or image_base64 + media_type. This saves nothing. It returns a preview and a preview_id; show the user each card with whether it will be added or updated, the welcome bonus, spend requirement and deadline, and the annual fee. Cards that match several catalogue cards are listed as needing a choice and are not saved. Step 2: after the user confirms, call again with confirm=true (apply=true works too) and that preview_id to save them. Cards the user already tracks are updated, never duplicated. Previews expire after 30 minutes. Images are never stored. Never ask the user for card numbers or passwords. Paid feature. Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"document_id": {
"type": "integer",
"description": "Id of a document the user uploaded (image or PDF)."
},
"image_base64": {
"type": "string",
"description": "Base64 image or PDF bytes, or a data URI (data:image/png;base64,...), when there is no document_id."
},
"media_type": {
"type": "string",
"enum": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp",
"application/pdf"
],
"description": "Media type of image_base64. Optional when image_base64 is a data URI."
},
"confirm": {
"type": "boolean",
"description": "false = preview only (default). true = save the cards of preview_id."
},
"apply": {
"type": "boolean",
"description": "Alias of confirm. Either one set to true saves the cards of preview_id."
},
"preview_id": {
"type": "string",
"description": "The preview_id from the preview call. Required when confirm is true."
}
},
"type": "object"
}
import_spending_statement
Import a credit card statement the user uploaded (CSV from any US bank, or PDF) to learn their monthly spending per category.
import_spending_statement
Import a credit card statement the user uploaded (CSV from any US bank, or PDF) to learn their monthly spending per category.
Import a credit card statement the user uploaded (CSV from any US bank, or PDF) to learn their monthly spending per category. Pass the uploaded document id. Or pass `transactions` read from the user's card account: this returns a preview and a preview_id; after the user confirms, call again with apply=true and that preview_id within 30 minutes. The file and the raw transactions are deleted after import; only monthly category totals are kept. Then call get_spending_insights. An agent with browser or computer use can read these transactions from the user's signed-in card account (see skill capture-from-bank-card).
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"document_id": {
"type": "integer",
"description": "Id of the uploaded document that holds the statement."
},
"transactions": {
"type": "array",
"description": "Posted card transactions, as an alternative to document_id. Purchases are positive amounts; refunds and payments are negative.",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD"
},
"description": {
"type": "string"
},
"amount": {
"type": "number"
},
"currency": {
"type": "string",
"description": "ISO code, e.g. USD."
},
"merchant": {
"type": "string"
},
"category": {
"type": "string"
}
},
"required": [
"date",
"description",
"amount",
"currency"
]
}
},
"apply": {
"type": "boolean",
"description": "false = preview only (default). true = import the transactions of preview_id."
},
"preview_id": {
"type": "string",
"description": "The preview_id from the preview call. Required when apply is true."
},
"card_label": {
"type": "string",
"description": "Name of the card the statement is for, e.g. 'Amex Gold'. Optional."
}
},
"type": "object"
}
list_award_release_windows
List all known per-airline award booking windows.
list_award_release_windows
List all known per-airline award booking windows.
List all known per-airline award booking windows. Useful when the user asks 'when do award seats open?' generally.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_catalogue_cards
List real credit cards from the catalogue with name, issuer, country, annual fee and currency, points currency and card_url.
list_catalogue_cards
List real credit cards from the catalogue with name, issuer, country, annual fee and currency, points currency and card_url.
List real credit cards from the catalogue with name, issuer, country, annual fee and currency, points currency and card_url. Filter by country (ISO code such as US, GB, CA, AU; UK is accepted for GB; 'all' lists every country), issuer, a name query and points_currency. Country defaults to the user's primary country. Welcome bonuses and earning rates are NOT included; use the cards_* tools or the card_url for those.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"country": {
"type": "string",
"description": "ISO country code (US, GB, CA, AU, DE, ...). UK is accepted for GB. 'all' returns every country. Defaults to the user's primary country (US when unknown)."
},
"issuer": {
"type": "string",
"description": "Issuer name or key, for example 'amex', 'American Express' or 'Barclays'."
},
"query": {
"type": "string",
"description": "Text to match in the card name or slug."
},
"points_currency": {
"type": "string",
"description": "Points currency to match, for example 'Avios' or 'Qantas Points'."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Maximum cards to return. Default 25, maximum 100."
}
},
"type": "object"
}
list_client_portfolios
List the advisor's client portfolios with summary balances.
list_client_portfolios
List the advisor's client portfolios with summary balances.
List the advisor's client portfolios with summary balances. Pro tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"status": {
"type": "string",
"enum": [
"all",
"active",
"archived"
]
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number (1-indexed). Defaults to 1."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Items per page (default 20, max 100)."
}
},
"type": "object"
}
list_delay_alerts
List the user's live airport delay alerts.
list_delay_alerts
List the user's live airport delay alerts.
List the user's live airport delay alerts. Each alert watches one airport for FAA ground stops and live departure or arrival delays and notifies by email, SMS or WhatsApp. Premium feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_features
List the Award Travel Finder features (award alerts, points tracker, AI assistant, award calendar, trip planner, seat maps, hotel search) with the tools and skills behind each, whether THIS user has set each one up, and a prompt for the next step.
list_features
List the Award Travel Finder features (award alerts, points tracker, AI assistant, award calendar, trip planner, seat maps, hotel search) with the tools and skills behind each, whether THIS user has set each one up, and a prompt for the next step.
List the Award Travel Finder features (award alerts, points tracker, AI assistant, award calendar, trip planner, seat maps, hotel search) with the tools and skills behind each, whether THIS user has set each one up, and a prompt for the next step. Call it when a user is new, asks what you can do, or asks how to get more from Award Travel Finder. Free for every signed-in user.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_flight_alerts
List the user's award flight alerts (the alerts on the portfolio bookings page).
list_flight_alerts
List the user's award flight alerts (the alerts on the portfolio bookings page).
List the user's award flight alerts (the alerts on the portfolio bookings page). Each alert watches one airline and route for award seats in a date window and emails when seats open. These are separate from route monitors (list_route_monitors).
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"active": {
"type": "boolean",
"description": "Only active alerts when true, only paused or expired alerts when false. Omit for all."
}
},
"type": "object"
}
list_flight_bookings
List all tracked flight award bookings/redemptions.
list_flight_bookings
List all tracked flight award bookings/redemptions.
List all tracked flight award bookings/redemptions. Shows airlines, routes, points spent, and cabin classes.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_flights
List flights for a route and date — award seats from every live airline source AND cash fares — each priced in the popular card points currencies (Chase UR, Amex MR, Capital One, Citi ThankYou, Bilt, Wells Fargo, US Bank).
list_flights
List flights for a route and date — award seats from every live airline source AND cash fares — each priced in the popular card points currencies (Chase UR, Amex MR, Capital One, Citi ThankYou, Bilt, Wells Fargo, US Bank).
List flights for a route and date — award seats from every live airline source AND cash fares — each priced in the popular card points currencies (Chase UR, Amex MR, Capital One, Citi ThankYou, Bilt, Wells Fargo, US Bank). Award rows show the transfer cost from each currency (live ratios and bonuses); cash rows show the travel-portal cost. Sorted cheapest first. Use get_flight with an id for the full table and booking steps. Premium.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "Departure airport IATA code"
},
"destination": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "Arrival airport IATA code"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"description": "Default economy"
},
"type": {
"type": "string",
"enum": [
"all",
"award",
"cash"
],
"description": "Default all"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 40,
"description": "Default 20"
}
},
"required": [
"origin",
"destination",
"date"
],
"type": "object"
}
list_hotel_bookings
List all hotel bookings being monitored for price drops.
list_hotel_bookings
List all hotel bookings being monitored for price drops.
List all hotel bookings being monitored for price drops. Shows current vs. original points rates.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_hotels
List hotels in a city for your dates: live cash prices from the big booking sites, award nights in Marriott, Hilton, Hyatt and IHG points, Leaders Club points prices (estimates) for Leading Hotels of the World, which take Amex MR and Citi TY transfers, and what each stay costs in the popular card points currencies (Chase UR, Amex MR, Capital One, Citi ThankYou, Bilt, Wells Fargo, US Bank).
list_hotels
List hotels in a city for your dates: live cash prices from the big booking sites, award nights in Marriott, Hilton, Hyatt and IHG points, Leaders Club points prices (estimates) for Leading Hotels of the World, which take Amex MR and Citi TY transfers, and what each stay costs in the popular card points currencies (Chase UR, Amex MR, Capital One, Citi ThankYou, Bilt, Wells Fargo, US Bank).
List hotels in a city for your dates: live cash prices from the big booking sites, award nights in Marriott, Hilton, Hyatt and IHG points, Leaders Club points prices (estimates) for Leading Hotels of the World, which take Amex MR and Citi TY transfers, and what each stay costs in the popular card points currencies (Chase UR, Amex MR, Capital One, Citi ThankYou, Bilt, Wells Fargo, US Bank). Flags Amex Fine Hotels + Resorts, Amex Hotel Collection and Chase Edit properties. Use get_hotel with an id from here for rooms, award nights and the full points table. Premium.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"city": {
"type": "string",
"description": "City, neighbourhood or landmark, e.g. 'Tokyo', 'Paris'"
},
"check_in_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"check_out_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 8,
"description": "Default 2"
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Default 1"
},
"min_rating": {
"type": "number",
"minimum": 1,
"maximum": 5,
"description": "Minimum guest review score out of 5"
},
"award_only": {
"type": "boolean",
"description": "Only Marriott/Hilton/Hyatt/IHG hotels with award nights for every night"
},
"max_price_usd": {
"type": "number",
"minimum": 1,
"description": "Maximum total stay price in USD"
},
"premium_only": {
"type": "boolean",
"description": "Only hotels with FHR, Hotel Collection or Edit benefits"
},
"sort": {
"type": "string",
"enum": [
"price",
"rating",
"points"
],
"description": "Default price (cheapest first)"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 40,
"description": "Default 20"
}
},
"required": [
"city",
"check_in_date",
"check_out_date"
],
"type": "object"
}
list_integrations
List the external services the user can connect (seats.
list_integrations
List the external services the user can connect (seats.
List the external services the user can connect (seats.aero, AwardWallet, etc.) and their current connection status. Call this before any flight/hotel search if you suspect a connection is missing.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_lounge_visits
List the airport lounge visits you've logged to your portfolio.
list_lounge_visits
List the airport lounge visits you've logged to your portfolio.
List the airport lounge visits you've logged to your portfolio.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_loyalty_statuses
List the user's tracked elite/loyalty statuses across airlines and hotels.
list_loyalty_statuses
List the user's tracked elite/loyalty statuses across airlines and hotels.
List the user's tracked elite/loyalty statuses across airlines and hotels. Program slugs are shown in canonical form. If the same programme is tracked under two slugs, the response flags the duplicates; call merge_loyalty_statuses to clean them up.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_my_cards
List the credit cards the user owns (open and closed) with issuer, country, opened and closed dates, welcome bonus status and annual fee.
list_my_cards
List the credit cards the user owns (open and closed) with issuer, country, opened and closed dates, welcome bonus status and annual fee.
List the credit cards the user owns (open and closed) with issuer, country, opened and closed dates, welcome bonus status and annual fee. Call this before add_card, update_card or remove_card to see card ids and avoid duplicates.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_my_vouchers
List the companion/upgrade vouchers the user holds, including which booking each is applied to.
list_my_vouchers
List the companion/upgrade vouchers the user holds, including which booking each is applied to.
List the companion/upgrade vouchers the user holds, including which booking each is applied to. Paid feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_notifications
List the user's in-app notifications (price drops, award seats found, flight delays, trip briefings), newest first, with the unread count.
list_notifications
List the user's in-app notifications (price drops, award seats found, flight delays, trip briefings), newest first, with the unread count.
List the user's in-app notifications (price drops, award seats found, flight delays, trip briefings), newest first, with the unread count. The same inbox as the bell icon on the website. Use mark_notifications_read and delete_notification to manage them.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"unread_only": {
"type": "boolean",
"description": "Only unread notifications. Defaults to false."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "How many to return. Defaults to 25."
}
},
"type": "object"
}
list_points_balances
List all your loyalty program points/miles balances.
list_points_balances
List all your loyalty program points/miles balances.
List all your loyalty program points/miles balances. Amex Membership Rewards US (amex-membership-rewards) and UK (amex-membership-rewards-uk) are separate currencies and are listed separately.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_route_monitors
List the user's saved route monitors with their last-checked time and current status.
list_route_monitors
List the user's saved route monitors with their last-checked time and current status.
List the user's saved route monitors with their last-checked time and current status.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"status": {
"type": "string",
"enum": [
"all",
"active",
"paused",
"cancelled",
"fired",
"over_limit"
]
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number (1-indexed). Defaults to 1."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Items per page (default 20, max 100)."
}
},
"type": "object"
}
list_skills
List the skill keys that get_skill accepts, with a one-line summary of each.
list_skills
List the skill keys that get_skill accepts, with a one-line summary of each.
List the skill keys that get_skill accepts, with a one-line summary of each. Knowledge skills are reference material (award sweet spots, hold rules, cabin codes, alliances, hotel chains). Task skills are step-by-step playbooks; get_skill returns the body only for those marked agent_readable. Free, no sign-in needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_standing_orders
List the user's standing orders — the recurring instructions ATF runs unattended — with their schedule, next run time, and the result of the last run.
list_standing_orders
List the user's standing orders — the recurring instructions ATF runs unattended — with their schedule, next run time, and the result of the last run.
List the user's standing orders — the recurring instructions ATF runs unattended — with their schedule, next run time, and the result of the last run.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"include_inactive": {
"type": "boolean",
"description": "Include cancelled/paused orders. Defaults to false."
}
},
"type": "object"
}
list_supported_airlines
List the airlines ATF can search for award seats, with their LIVE status: which returned real award data in the last 72h, which are degraded (source temporarily unavailable) and which are idle.
list_supported_airlines
List the airlines ATF can search for award seats, with their LIVE status: which returned real award data in the last 72h, which are degraded (source temporarily unavailable) and which are idle.
List the airlines ATF can search for award seats, with their LIVE status: which returned real award data in the last 72h, which are degraded (source temporarily unavailable) and which are idle. search_all_airlines only fans out to live sources, so call this before promising coverage or when a search comes back thin. Public, no sign-in.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
list_trips
List the signed-in user's trips (their trip-as-project workspaces) with destination, dates, status, and itinerary section count.
list_trips
List the signed-in user's trips (their trip-as-project workspaces) with destination, dates, status, and itinerary section count.
List the signed-in user's trips (their trip-as-project workspaces) with destination, dates, status, and itinerary section count.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"status": {
"type": "string",
"enum": [
"all",
"active",
"archived",
"planning",
"booked",
"completed"
],
"description": "Filter by status (default: all)"
}
},
"type": "object"
}
list_voucher_types
Browse the catalogue of companion & upgrade voucher types (UK + US): BA Amex companion (Travel Together), Barclaycard/Lloyds Avios upgrade vouchers, Virgin Atlantic companion, Delta/American/Alaska companion certificates, Southwest Companion Pass, United PlusPoints.
list_voucher_types
Browse the catalogue of companion & upgrade voucher types (UK + US): BA Amex companion (Travel Together), Barclaycard/Lloyds Avios upgrade vouchers, Virgin Atlantic companion, Delta/American/Alaska companion certificates, Southwest Companion Pass, United PlusPoints.
Browse the catalogue of companion & upgrade voucher types (UK + US): BA Amex companion (Travel Together), Barclaycard/Lloyds Avios upgrade vouchers, Virgin Atlantic companion, Delta/American/Alaska companion certificates, Southwest Companion Pass, United PlusPoints. Optionally filter by region (UK/US) or category. Free reference data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"region": {
"type": "string",
"enum": [
"UK",
"US"
],
"description": "Filter by issuer region."
},
"category": {
"type": "string",
"enum": [
"companion",
"upgrade",
"companion_pass",
"upgrade_cert"
],
"description": "Filter by voucher category."
}
},
"type": "object"
}
log_lounge_visit
Log an airport lounge visit to your portfolio: which lounge, airport, date, how you got in (Priority Pass, card, status, ticket), an optional 1-5 rating, and notes.
log_lounge_visit
Log an airport lounge visit to your portfolio: which lounge, airport, date, how you got in (Priority Pass, card, status, ticket), an optional 1-5 rating, and notes.
Log an airport lounge visit to your portfolio: which lounge, airport, date, how you got in (Priority Pass, card, status, ticket), an optional 1-5 rating, and notes. Use with the lounge_* lookup tools to confirm the lounge name first. Paid feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airport_code": {
"type": "string",
"description": "Airport IATA code, e.g. LHR"
},
"lounge_name": {
"type": "string",
"description": "Lounge name, e.g. Qantas First Lounge"
},
"visit_date": {
"type": "string",
"description": "Date of the visit (YYYY-MM-DD)"
},
"access_method": {
"type": "string",
"description": "How you got in, e.g. Priority Pass, Amex Platinum, business ticket"
},
"rating": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "Optional 1-5 rating"
},
"notes": {
"type": "string",
"description": "Optional notes"
}
},
"required": [
"airport_code",
"lounge_name",
"visit_date"
],
"type": "object"
}
lookup_flight
Identify the airline behind a pasted flight code (e.
lookup_flight
Identify the airline behind a pasted flight code (e.
Identify the airline behind a pasted flight code (e.g. 'BA117', 'AA 1234'). Returns carrier name, country, and — when ATF supports the airline — the slug and loyalty program so the assistant can pre-fill an add_flight_booking call. Use this any time a user pastes or types a raw flight code without context.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"flight_code": {
"type": "string",
"description": "A flight code like 'BA117', 'AA 1234', or 'EK521'."
}
},
"required": [
"flight_code"
],
"type": "object"
}
mark_notifications_read
Mark notifications as read: pass notification_ids (from list_notifications) for specific ones, or all true for every unread notification.
mark_notifications_read
Mark notifications as read: pass notification_ids (from list_notifications) for specific ones, or all true for every unread notification.
Mark notifications as read: pass notification_ids (from list_notifications) for specific ones, or all true for every unread notification.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"notification_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Notification ids from list_notifications."
},
"all": {
"type": "boolean",
"description": "Mark every unread notification as read."
}
},
"type": "object"
}
merge_loyalty_statuses
Clean up duplicate loyalty statuses.
merge_loyalty_statuses
Clean up duplicate loyalty statuses.
Clean up duplicate loyalty statuses. The same programme can be tracked under two slugs (flying-blue and air-france-klm-flying-blue, aeroplan and air-canada-aeroplan, alaska-mileage-plan and alaska-atmos-rewards). This merges each duplicate group into one status under the canonical slug: it keeps the status with the most data, keeps the highest tier, combines notes and removes the extra rows. Also renames a single status held under a non-canonical slug. Defaults to a dry run that only previews the changes. Removing rows is destructive: show the preview and confirm with the user first, then call again with dry_run false.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"dry_run": {
"type": "boolean",
"description": "Preview only. Defaults to true. Pass false to apply the merge after the user confirms."
},
"program": {
"type": "string",
"description": "Optional: limit the cleanup to one programme (any slug or name)."
}
},
"type": "object"
}
monitor_hotel_price
Start price-drop monitoring for a hotel points booking.
monitor_hotel_price
Start price-drop monitoring for a hotel points booking.
Start price-drop monitoring for a hotel points booking. Every hotel booking, cash or points, is monitored automatically: checks run every 6 hours within 14 days of check-in and daily otherwise, and alert once per lower price (email, in-app, agent; push when urgent) when the same stay gets cheaper or switching between cash and points saves money. Free plan: only the next upcoming stay is watched. Paid feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"hotel_code": {
"type": "string",
"description": "award.hotel_code from get_hotel (starts with htl_), a numeric hotel id, or a property code that matches exactly one hotel"
},
"check_in_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"check_out_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"original_points": {
"type": "integer",
"minimum": 1,
"description": "TOTAL points cost (per-night rate x nights)"
},
"room_type": {
"type": "string"
},
"rate_plan": {
"type": "string"
},
"confirmation_number": {
"type": "string"
},
"notes": {
"type": "string"
}
},
"required": [
"hotel_code",
"check_in_date",
"check_out_date",
"original_points",
"room_type",
"rate_plan"
],
"type": "object"
}
open_award_travel_finder
Open the Award Travel Finder home card: the signed-in user's points balances, upcoming trips and active route monitors, or a sign-in prompt and a quick award search form for anonymous users.
open_award_travel_finder
Open the Award Travel Finder home card: the signed-in user's points balances, upcoming trips and active route monitors, or a sign-in prompt and a quick award search form for anonymous users.
Open the Award Travel Finder home card: the signed-in user's points balances, upcoming trips and active route monitors, or a sign-in prompt and a quick award search form for anonymous users. Takes no arguments.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
}
plan_status_route
Status-aware A to B planner.
plan_status_route
Status-aware A to B planner.
Status-aware A to B planner. For a route and a date (or a month) it ranks cash fares and cached award options by NET cost: price minus the value of the miles earned minus the value of progress toward the user's status goal. Each option shows the best programme to credit to, miles and tier points/XP/Loyalty Points per programme, and the status benefits the user already holds on that airline. Unknown earning rules are marked 'unknown', never guessed. The goal defaults to the user's tracked status progress. Free: cached fares only, top 3 options, 1 goal. Paid: live fare search for a single date, all options and goals.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"description": "Origin airport IATA code, e.g. 'LHR'."
},
"destination": {
"type": "string",
"description": "Destination airport IATA code, e.g. 'JFK'."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Travel date YYYY-MM-DD. Give this or month."
},
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "Travel month YYYY-MM (cached fares only)."
},
"cabin": {
"type": "string",
"description": "economy, premium, business, or first.",
"default": "economy"
},
"goal_program": {
"type": "string",
"description": "Optional status programme slug, e.g. 'british-airways-executive-club'."
},
"goal_tier": {
"type": "string",
"description": "Optional goal tier, e.g. 'Gold'."
}
},
"required": [
"origin",
"destination"
],
"type": "object"
}
plan_trip
Plan an end-to-end award trip in one call.
plan_trip
Plan an end-to-end award trip in one call.
Plan an end-to-end award trip in one call. Searches all airlines, ranks options against the user's balances + active transfer bonuses, and surfaces the best route — including transfer paths if the user is short on points. Premium tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"destination": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
]
},
"passengers": {
"type": "integer",
"minimum": 1,
"maximum": 9
},
"flexibility_days": {
"type": "integer",
"minimum": 0,
"maximum": 14,
"description": "Optional ± days flexibility — if set, also probes adjacent dates"
}
},
"required": [
"origin",
"destination",
"date"
],
"type": "object"
}
price_award_route
Price one award route: the lowest British Airways Avios price per cabin for a one-way flight from London to a destination (city name or IATA code), with the distance, source and confidence.
price_award_route
Price one award route: the lowest British Airways Avios price per cabin for a one-way flight from London to a destination (city name or IATA code), with the distance, source and confidence.
Price one award route: the lowest British Airways Avios price per cabin for a one-way flight from London to a destination (city name or IATA code), with the distance, source and confidence. Use for 'how many Avios do I need for Tokyo?'. Only British Airways Avios from London is supported. Free — no account needed.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"description": "Program name or slug. Supported: avios, british-airways."
},
"origin": {
"type": "string",
"description": "Origin city or IATA code. Only London is supported. Omit for London."
},
"destination": {
"type": "string",
"description": "Destination city or IATA code, e.g. Tokyo or JFK."
},
"cabin": {
"type": "string",
"enum": [
"economy",
"business"
],
"description": "Optional cabin."
}
},
"required": [
"program",
"destination"
],
"type": "object"
}
recommend_redemption
Recommend the optimal points strategy for a specific trip given the user's known points balances.
recommend_redemption
Recommend the optimal points strategy for a specific trip given the user's known points balances.
Recommend the optimal points strategy for a specific trip given the user's known points balances. Combines active award availability + transfer bonuses + the user's portfolio. Premium tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"destination": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
]
},
"passengers": {
"type": "integer",
"minimum": 1,
"maximum": 9
}
},
"required": [
"origin",
"destination",
"date"
],
"type": "object"
}
recommend_status_path
Recommend the cheapest path to an elite tier — EARN it through planned flying, RUN for it (a tier-point run), or MATCH/challenge into it from a status the user already holds.
recommend_status_path
Recommend the cheapest path to an elite tier — EARN it through planned flying, RUN for it (a tier-point run), or MATCH/challenge into it from a status the user already holds.
Recommend the cheapest path to an elite tier — EARN it through planned flying, RUN for it (a tier-point run), or MATCH/challenge into it from a status the user already holds. Uses the user's tracked statuses, booked flights, and the status-match graph. Answers 'what's the easiest way to get Qatar Gold?'. Premium. Pass the target program slug (e.g. 'qatar-privilege-club') and optionally a target tier; defaults to the next tier up from what they hold, else the top tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"target_program": {
"type": "string",
"description": "Program slug to reach status with — e.g. 'qatar-privilege-club', 'british-airways-executive-club'."
},
"target_tier": {
"type": "string",
"description": "Optional target tier (e.g. 'Gold'). Defaults to the next tier above the user's current one, or the top tier."
}
},
"required": [
"target_program"
],
"type": "object"
}
regenerate_calendar_feed
Replace the user's private calendar subscription link with a new one.
regenerate_calendar_feed
Replace the user's private calendar subscription link with a new one.
Replace the user's private calendar subscription link with a new one. The old link stops working, so every calendar app subscribed to it must be updated. Use only if the link leaked or the user asks. Confirm with the user first, then call again with confirm true. Without confirm nothing changes.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"confirm": {
"type": "boolean",
"description": "Must be true to replace the link. Ask the user first."
}
},
"type": "object"
}
remove_card
Mark a tracked card as closed (today's date) so it stays in the history.
remove_card
Mark a tracked card as closed (today's date) so it stays in the history.
Mark a tracked card as closed (today's date) so it stays in the history. Always confirm with the user before calling this. Only set permanent to true if the user explicitly asks to delete the card entirely; that cannot be undone. Identify the card by id (from list_my_cards) or by name.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"card": {
"type": "string",
"description": "Card id from list_my_cards, or its name or nickname."
},
"permanent": {
"type": "boolean",
"description": "Delete the card entirely instead of marking it closed."
}
},
"required": [
"card"
],
"type": "object"
}
render_ui
Render a visual card in the chat instead of writing a markdown table or a long list of numbers.
render_ui
Render a visual card in the chat instead of writing a markdown table or a long list of numbers.
Render a visual card in the chat instead of writing a markdown table or a long list of numbers. Use it for comparisons, cost breakdowns, transfer paths, plans, rankings, and any answer with more than ~3 numbers in it. Compose the card from blocks; every block is optional and you can repeat kinds. Block kinds: - stats — headline numbers. items: [{label, value, sub}] - table — columns: ["Program","Points"], rows: [["Aeroplan","60,000"]] - bars — visual comparison. unit: "pts", items: [{label, value (number), note}] - steps — an ordered path or plan. items: [{label, detail}] - list — rows with an optional right-hand value and link. items: [{title, subtitle, meta, value, url}] - note — a callout. tone: info|warn|success|danger, text Plain text only in every field — no markdown, no HTML. Keep your written reply to a sentence or two; the card carries the detail, so do not restate it. Do NOT call this after a search/hotel/transfer tool that already returned its own card.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"title": {
"type": "string",
"description": "Card heading, e.g. \"SFO → NRT in business\"."
},
"subtitle": {
"type": "string",
"description": "One-line context under the heading."
},
"blocks": {
"type": "array",
"description": "Blocks to render, in order. Max 10.",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"stats",
"table",
"bars",
"steps",
"list",
"note"
],
"description": "Block kind."
},
"items": {
"type": "array",
"description": "Rows for stats/bars/steps/list. Objects whose keys depend on the kind.",
"items": {
"type": "object"
}
},
"columns": {
"type": "array",
"description": "table: column headers.",
"items": {
"type": "string"
}
},
"rows": {
"type": "array",
"description": "table: rows of cell strings.",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"caption": {
"type": "string",
"description": "table: optional caption under the table."
},
"unit": {
"type": "string",
"description": "bars: unit shown after each value, e.g. \"pts\"."
},
"tone": {
"type": "string",
"enum": [
"info",
"warn",
"success",
"danger"
],
"description": "note: callout tone."
},
"text": {
"type": "string",
"description": "note: the callout body."
}
},
"required": [
"kind"
]
}
}
},
"required": [
"blocks"
],
"type": "object"
}
search_all_airlines
Search award flight availability across every airline currently LIVE for a route and date, in parallel.
search_all_airlines
Search award flight availability across every airline currently LIVE for a route and date, in parallel.
Search award flight availability across every airline currently LIVE for a route and date, in parallel. The live list is measured from real searches in the last 72h (see list_supported_airlines); airlines whose source is temporarily unavailable are not fanned out to, and the response's `coverage` field says how many were. Any catalogued airline can still be requested by name with search_availability. Returns combined results grouped by airline. This is the recommended starting point — use single-airline search only if you need a specific airline. Requires sign-in. Free accounts get 3 economy searches/day; Premium ($9.99/mo) gets unlimited searches across every cabin. By default this reads only stored results and answers fast; when nothing is stored it starts a background check and says to call again in about 60 seconds. Set live to true only when the user needs fresh data: it runs a live airline search, which is slower.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"departure_code": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "Departure airport IATA code (e.g. LHR)"
},
"arrival_code": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "Arrival airport IATA code (e.g. JFK)"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Travel date (YYYY-MM-DD)"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"description": "Cabin to unlock and rank by (default: economy). Results list EVERY bookable cabin the airline returned, not just this one — free accounts may only request economy."
},
"flex_days": {
"type": "integer",
"minimum": 0,
"maximum": 7,
"description": "Also search this many days either side of the date. Only widens the seats.aero results (all 24 programmes); the per-airline search stays on the exact date."
},
"live": {
"type": "boolean",
"default": false,
"description": "Run a live airline search when no stored result exists. Slower. Use only when the user needs fresh data."
}
},
"required": [
"departure_code",
"arrival_code",
"date"
],
"type": "object"
}
search_availability
Search live award availability for a specific airline, route, and date.
search_availability
Search live award availability for a specific airline, route, and date.
Search live award availability for a specific airline, route, and date. 39 airlines can be requested, plus STARLUX Airlines, SriLankan Airlines, Hainan Airlines, Jetstar, Singapore Airlines, Air Canada, Hong Kong Airlines, which are answered from the partner programmes that sell their seats; only those list_supported_airlines reports as live are returning seats right now — when a source is temporarily unavailable the result says so explicitly instead of reporting zero seats, so never read an unsearchable source as 'no availability'. Requires sign-in. Free accounts get 3 economy searches/day; Premium ($9.99/mo) gets unlimited searches across every cabin. By default this reads only stored results and answers fast; when nothing is stored it starts a background check and says to call again in about 60 seconds. Set live to true only when the user needs fresh data: it runs a live airline search, which is slower.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airline": {
"type": "string",
"enum": [
"british_airways",
"qatar_airways",
"cathay_pacific",
"virgin_atlantic",
"iberia",
"alaska_airlines",
"american_airlines",
"qantas",
"jetblue",
"frontier",
"southwest",
"delta",
"etihad",
"emirates",
"japan_airlines",
"united",
"tap_portugal",
"cape_air",
"icelandair",
"condor",
"aer_lingus",
"el_al",
"turkish_airlines",
"ana",
"lufthansa",
"air_france",
"klm",
"smiles",
"qantas_rewards",
"alaska_direct",
"breeze",
"aerolineas_argentinas",
"virgin_atlantic_rewards",
"cayman_airways",
"virgin_australia",
"air_canada",
"aeromexico",
"avianca_lifemiles",
"sas_eurobonus",
"starlux",
"srilankan",
"hainan",
"jetstar",
"singapore_airlines",
"hong_kong_airlines"
]
},
"departure_code": {
"type": "string",
"description": "IATA code (LHR), or a city or airport name (Heathrow, Tokyo)"
},
"arrival_code": {
"type": "string",
"description": "IATA code (SIN), or a city or airport name"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"description": "Cabin to unlock and rank by (default: economy). Results list EVERY bookable cabin the airline returned, not just this one — free accounts may only request economy."
},
"live": {
"type": "boolean",
"default": false,
"description": "Run a live airline search when no stored result exists. Slower. Use only when the user needs fresh data."
}
},
"required": [
"airline",
"departure_code",
"arrival_code",
"date"
],
"type": "object"
}
search_hybrid
Find the cheapest way to fly by combining cash tickets with award redemptions into one split-ticket journey.
search_hybrid
Find the cheapest way to fly by combining cash tickets with award redemptions into one split-ticket journey.
Find the cheapest way to fly by combining cash tickets with award redemptions into one split-ticket journey. Searches cash fares (Google Flights) and award availability across airlines, then combines the best cash leg with the best award leg via connecting hubs. Best for premium cabins (business/first) on long-haul routes. Paid feature.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"destination": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"business",
"first"
],
"description": "Target cabin class (default: business)"
},
"points_value_cents": {
"type": "number",
"description": "How you value points in cents/pence per point (default: 1.5)"
}
},
"required": [
"origin",
"destination",
"date"
],
"type": "object"
}
search_knowledge_base
Search the Miles & Points Daily + Smart With Points editorial archive for explainers and strategy.
search_knowledge_base
Search the Miles & Points Daily + Smart With Points editorial archive for explainers and strategy.
Search the Miles & Points Daily + Smart With Points editorial archive for explainers and strategy. Use when the user asks 'how does X work', 'should I transfer to Y', 'best way to redeem Z', credit-card or transfer-bonus strategy questions, or anything that benefits from authoritative context. Returns ranked article excerpts with URLs to cite.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"query": {
"type": "string",
"description": "Natural-language question or topic, e.g. 'best Avios redemption sweet spots from London'"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "How many excerpts to return (default 5)"
},
"source": {
"type": "string",
"enum": [
"miles_and_points_daily",
"smart_with_points"
],
"description": "Restrict to one publication. Omit to search both."
}
},
"required": [
"query"
],
"type": "object"
}
search_merchant_multipliers
Search a community-verified database of merchant bonus-category multipliers (e.
search_merchant_multipliers
Search a community-verified database of merchant bonus-category multipliers (e.
Search a community-verified database of merchant bonus-category multipliers (e.g. 'which merchants earn 4x?', 'does Whole Foods earn a bonus on Amex Gold?'). Every entry is backed by a screenshot of the cardholder's statement as proof. Filter by merchant/card/category and a minimum multiplier. Returns verified entries with the earn rate, card, category, and a link to the proof. Free.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"query": {
"type": "string",
"description": "Merchant, card, or category to search for (e.g. 'Whole Foods', 'Amex Gold', 'Dining'). Optional."
},
"min_multiplier": {
"type": "number",
"description": "Only return entries earning at least this multiplier (e.g. 4 for 4x and up). Optional."
},
"card": {
"type": "string",
"description": "Filter to a specific card by name (e.g. 'Amex Gold'). Optional."
},
"category": {
"type": "string",
"description": "Filter to a bonus category (e.g. 'Groceries', 'Dining'). Optional."
},
"country": {
"type": "string",
"description": "Two-letter country code to filter by (e.g. 'US', 'UK'). Optional."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Max entries to return (default 20)."
}
},
"type": "object"
}
search_monthly_availability
Search award flight availability for an entire month.
search_monthly_availability
Search award flight availability for an entire month.
Search award flight availability for an entire month. Returns day-by-day availability with points costs. Renders as an interactive rate calendar. Paid feature. By default this reads only stored results and answers fast; when nothing is stored it starts a background check and says to call again in about 60 seconds. Set live to true only when the user needs fresh data: it runs a live airline search, which is slower.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airline": {
"type": "string",
"enum": [
"british_airways",
"qatar_airways",
"cathay_pacific",
"virgin_atlantic",
"iberia",
"qantas",
"qantas_rewards",
"etihad",
"smiles",
"virgin_australia",
"delta",
"klm",
"turkish_airlines",
"lufthansa",
"tap_portugal",
"united",
"emirates"
]
},
"departure_code": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"arrival_code": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}(-\\d{2})?$",
"description": "Month to search (YYYY-MM or YYYY-MM-DD)"
},
"live": {
"type": "boolean",
"default": false,
"description": "Run a live airline search when no stored result exists. Slower. Use only when the user needs fresh data."
}
},
"required": [
"airline",
"departure_code",
"arrival_code",
"date"
],
"type": "object"
}
search_multi_passenger
Find award seats for a group — filters out single-seat phantom availability.
search_multi_passenger
Find award seats for a group — filters out single-seat phantom availability.
Find award seats for a group — filters out single-seat phantom availability. Returns only carriers reporting seats >= the requested passenger count. Premium tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"departure_code": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"arrival_code": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
]
},
"passengers": {
"type": "integer",
"minimum": 2,
"maximum": 9
}
},
"required": [
"departure_code",
"arrival_code",
"date",
"passengers"
],
"type": "object"
}
search_my_documents
Search the user's OWN uploaded documents (award charts, hotel folios, itineraries, statements) and return ranked excerpts.
search_my_documents
Search the user's OWN uploaded documents (award charts, hotel folios, itineraries, statements) and return ranked excerpts.
Search the user's OWN uploaded documents (award charts, hotel folios, itineraries, statements) and return ranked excerpts. Use when the user refers to 'my document', 'the folio/itinerary/chart I uploaded', or asks a question that should be answered from their own files rather than the public editorial archive. Returns matched excerpts with similarity scores.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"query": {
"type": "string",
"description": "Natural-language question or topic to find in the user's documents."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "How many excerpts to return (default 5)."
}
},
"required": [
"query"
],
"type": "object"
}
set_country
Set the user's country of residence.
set_country
Set the user's country of residence.
Set the user's country of residence. It decides which card offers and regional recommendations the assistant uses, the same setting as the country field on the account settings page. Accepts an ISO 3166 two-letter code or a country name; UK is accepted for GB. Pass an empty string to clear it. Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"country": {
"type": "string",
"description": "Two-letter country code (US, GB, AU) or country name. UK maps to GB. Empty string clears the setting."
}
},
"required": [
"country"
],
"type": "object"
}
set_leaderboard_membership
Join the public travel leaderboard under a handle, change the handle, or leave it.
set_leaderboard_membership
Join the public travel leaderboard under a handle, change the handle, or leave it.
Join the public travel leaderboard under a handle, change the handle, or leave it. Joining makes the handle and logged-trip totals public, so confirm with the user before listing them. Leaving keeps the handle for a later rejoin.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"listed": {
"type": "boolean",
"description": "true joins or renames, false leaves."
},
"handle": {
"type": "string",
"description": "Public handle. Required when listed is true."
}
},
"required": [
"listed"
],
"type": "object"
}
set_loyalty_status
Record or update the user's elite/loyalty status with an airline or hotel program (e.
set_loyalty_status
Record or update the user's elite/loyalty status with an airline or hotel program (e.
Record or update the user's elite/loyalty status with an airline or hotel program (e.g. Marriott Bonvoy Titanium, BA Executive Club Gold, AA Executive Platinum). Knowing this lets the assistant flag perks like free breakfast, suite upgrades, lounge access, and free award nights when planning trips. Use exact tier names from the reference table: British Airways Executive Club → Blue/Bronze/Silver/Gold; Delta SkyMiles → Silver/Gold/Platinum/Diamond Medallion; Marriott Bonvoy → Member/Silver Elite/Gold Elite/Platinum Elite/Titanium Elite/Ambassador Elite; World of Hyatt → Member/Discoverist/Explorist/Globalist. An agent with browser or computer use can read this from the user's signed-in account page (see skill capture-from-airline-hotel-account). Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"description": "Loyalty program slug or name — e.g. 'british-airways-executive-club', 'marriott-bonvoy', 'world-of-hyatt', 'delta-skymiles'. It is normalised to the same canonical slug update_points_balance uses (flying-blue and air-france-klm-flying-blue are the same programme), and the response shows the canonical slug."
},
"tier": {
"type": "string",
"description": "Exact elite tier name as used by the program — e.g. 'Gold' (BA), 'Diamond Medallion' (Delta), 'Globalist' (Hyatt), 'Titanium Elite' (Bonvoy). Case-insensitive; will be normalized to official casing."
},
"member_id": {
"type": "string",
"description": "Optional loyalty number."
},
"expires_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional ISO date when this status expires."
},
"qualifying_balance": {
"type": "integer",
"minimum": 0,
"description": "Optional — current qualifying units this period (Tier Points / XP / Loyalty Points / MQD / PQP / nights), for status-progress tracking."
},
"qualifying_year_end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional — ISO date the qualifying/membership year ends."
},
"target_tier": {
"type": "string",
"description": "Optional — a tier the user is chasing (must be a valid tier for the program)."
},
"notes": {
"type": "string",
"description": "Optional notes (free-form)."
}
},
"required": [
"program",
"tier"
],
"type": "object"
}
set_status_progress
Update the user's qualifying progress toward an elite tier — their current tier-points / XP / Loyalty Points / qualifying nights, the date their qualifying year ends, and (optionally) a target tier they're chasing.
set_status_progress
Update the user's qualifying progress toward an elite tier — their current tier-points / XP / Loyalty Points / qualifying nights, the date their qualifying year ends, and (optionally) a target tier they're chasing.
Update the user's qualifying progress toward an elite tier — their current tier-points / XP / Loyalty Points / qualifying nights, the date their qualifying year ends, and (optionally) a target tier they're chasing. Use this to answer 'how far am I from BA Gold?'. If no status is tracked for the program yet, also pass `tier` (the user's CURRENT tier) and it will be created. Programs use different qualifying currencies — BA/Virgin: Tier Points; Flying Blue: XP; AA: Loyalty Points; United: PQP; Delta: MQD; hotels: nights. An agent with browser or computer use can read this from the user's signed-in account page (see skill capture-from-airline-hotel-account). Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"description": "Loyalty program slug — e.g. 'british-airways-executive-club', 'marriott-bonvoy'."
},
"qualifying_balance": {
"type": "integer",
"minimum": 0,
"description": "Current qualifying units earned this period (Tier Points / XP / Loyalty Points / MQD / PQP / nights)."
},
"qualifying_year_end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "ISO date the current qualifying/membership year ends (e.g. BA membership years are anchored to the join date — ask the user)."
},
"target_tier": {
"type": "string",
"description": "Optional tier the user is chasing — e.g. 'Gold'. Must be a valid tier for the program. Defaults the progress bar to this instead of the next tier up."
},
"tier": {
"type": "string",
"description": "Optional — the user's CURRENT tier. Required only if no status is tracked for this program yet."
}
},
"required": [
"program"
],
"type": "object"
}
submit_feedback
Email a user's confirmed feedback or bug report to Award Travel Finder support.
submit_feedback
Email a user's confirmed feedback or bug report to Award Travel Finder support.
Email a user's confirmed feedback or bug report to Award Travel Finder support. Use this when the user explicitly wants to report a bug, share feedback, request an improvement, or report an incorrect AI result. Collect a concise summary and details first; for bugs, collect reproduction steps and expected/actual behaviour when possible. Only send after the user confirms the summary, or has clearly asked you to send the complete report. Never use this for ordinary travel questions.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"type": {
"type": "string",
"enum": [
"feedback",
"bug"
],
"description": "Whether this is general feedback or a bug report."
},
"summary": {
"type": "string",
"maxLength": 160,
"description": "A concise title for the feedback or bug."
},
"details": {
"type": "string",
"maxLength": 4000,
"description": "What the user wants the Award Travel Finder team to know."
},
"steps_to_reproduce": {
"type": "string",
"maxLength": 4000,
"description": "For bugs, the steps that reproduce the problem, if known."
},
"expected_behavior": {
"type": "string",
"maxLength": 4000,
"description": "For bugs, what the user expected to happen."
},
"actual_behavior": {
"type": "string",
"maxLength": 4000,
"description": "For bugs, what actually happened."
},
"page_url": {
"type": "string",
"maxLength": 500,
"description": "The current Award Travel Finder path or URL, when known."
},
"confirmed": {
"type": "boolean",
"description": "True only once the user has confirmed that this report should be sent."
}
},
"required": [
"type",
"summary",
"details",
"confirmed"
],
"type": "object"
}
surprise_me
Suggest bookable round-trip award ideas from the user's home airport when they have no destination in mind ("surprise me", "somewhere warm with a beach", "a week of skiing in February").
surprise_me
Suggest bookable round-trip award ideas from the user's home airport when they have no destination in mind ("surprise me", "somewhere warm with a beach", "a week of skiing in February").
Suggest bookable round-trip award ideas from the user's home airport when they have no destination in mind ("surprise me", "somewhere warm with a beach", "a week of skiing in February"). Uses only award seats we already hold in cache, so every idea is real availability. Each pick has outbound + return dates, total points and taxes, the transfer path from the user's balances, value at our points valuation, why it fits, the data age and a search link. Picks come from different regions. Free: 1 pick. Paid: 3 picks. When nothing fits, returns status no_data plus the relaxations that would give options.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Home airport IATA code, e.g. LHR"
},
"points_budget": {
"type": "integer",
"minimum": 1,
"description": "Max total points for the round trip. Omit to use the user's saved balances."
},
"month": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}$",
"description": "Travel month, e.g. 2026-11"
},
"date_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Earliest outbound date"
},
"date_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Latest outbound date"
},
"trip_nights": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "Trip length in nights (default 7, +/- 2)"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
],
"description": "Cabin (default economy)"
},
"vibes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"warm",
"beach",
"city",
"ski",
"food",
"culture",
"nature"
]
},
"description": "Any of: warm, beach, city, ski, food, culture, nature"
},
"max_stops": {
"type": "integer",
"minimum": 0,
"maximum": 3,
"description": "Max stops. Cached calendar data has no stop count, so this is not applied."
}
},
"required": [
"origin"
],
"type": "object"
}
sync_now
Trigger an immediate refresh of the user's connected integrations (AwardWallet, Google Sheets, …) so balances/bookings are current before you answer.
sync_now
Trigger an immediate refresh of the user's connected integrations (AwardWallet, Google Sheets, …) so balances/bookings are current before you answer.
Trigger an immediate refresh of the user's connected integrations (AwardWallet, Google Sheets, …) so balances/bookings are current before you answer. Use when the user asks to refresh, or when list_integrations shows stale data. Returns which connections are syncing.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"provider": {
"type": "string",
"enum": [
"seats_aero",
"award_wallet",
"google_sheets",
"tripit",
"autopilot"
],
"description": "Optional — sync just this provider. Omit to sync all connected integrations."
}
},
"type": "object"
}
update_card
Change a tracked card: nickname, name, opened date, closed date, notes, welcome bonus fields (bonus_amount, bonus_currency, bonus_status, bonus_earned_on, spend_requirement, spend_deadline_on, spend_window_months), annual_fee or country.
update_card
Change a tracked card: nickname, name, opened date, closed date, notes, welcome bonus fields (bonus_amount, bonus_currency, bonus_status, bonus_earned_on, spend_requirement, spend_deadline_on, spend_window_months), annual_fee or country.
Change a tracked card: nickname, name, opened date, closed date, notes, welcome bonus fields (bonus_amount, bonus_currency, bonus_status, bonus_earned_on, spend_requirement, spend_deadline_on, spend_window_months), annual_fee or country. Money is in whole currency units. spend_window_months (1, 2, 3, 6 or 12) works out the deadline from the opened date when spend_deadline_on is blank. Set bonus_status to earned once the bonus has posted (with bonus_earned_on), missed if the deadline passed without it, pending while the user is still working toward it. Identify the card by id (from list_my_cards) or by name. Send an empty string to clear a field. To mark a card closed, prefer remove_card.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"card": {
"type": "string",
"description": "Card id from list_my_cards, or its name or nickname."
},
"name": {
"type": "string",
"description": "New card name."
},
"nickname": {
"type": "string",
"description": "New nickname; empty string clears it."
},
"opened_on": {
"type": "string",
"description": "ISO date YYYY-MM-DD; empty string clears it."
},
"closed_on": {
"type": "string",
"description": "ISO date YYYY-MM-DD; empty string reopens the card."
},
"notes": {
"type": "string",
"description": "New notes; empty string clears them."
},
"bonus_amount": {
"type": [
"integer",
"string"
],
"description": "Welcome bonus size as a whole number, e.g. 80000. Empty string clears it."
},
"bonus_currency": {
"type": "string",
"description": "What the bonus is paid in, e.g. 'Chase Ultimate Rewards points', 'Amex Membership Rewards points' or 'cash back'."
},
"bonus_status": {
"type": "string",
"enum": [
"pending",
"earned",
"missed",
""
],
"description": "pending: the bonus is offered but the spend requirement is not met yet. earned: the bonus has posted (also set bonus_earned_on). missed: the deadline passed without it. Leave unset if unknown. Empty string clears it."
},
"bonus_earned_on": {
"type": "string",
"description": "ISO date YYYY-MM-DD the bonus was earned; empty string clears it."
},
"spend_requirement": {
"type": [
"number",
"string"
],
"description": "Minimum spend to earn the bonus, in whole currency units (4000 means $4,000). Empty string clears it."
},
"spend_deadline_on": {
"type": "string",
"description": "ISO date YYYY-MM-DD by which the spend requirement must be met; empty string clears it."
},
"spend_window_months": {
"type": [
"integer",
"string"
],
"enum": [
1,
2,
3,
6,
12,
"1",
"2",
"3",
"6",
"12",
""
],
"description": "Months from the opened date to meet the spend requirement (1, 2, 3, 6 or 12). The server works out spend_deadline_on from opened_on. Used only when spend_deadline_on is not given; needs an opened date."
},
"annual_fee": {
"type": [
"number",
"string"
],
"description": "Annual fee in whole currency units (95 means $95). Empty string clears it."
},
"currency": {
"type": "string",
"description": "3-letter currency code for spend_requirement and annual_fee. Defaults to USD."
},
"country": {
"type": "string",
"description": "2-letter ISO country code of the card, for example GB, US, CA or AU (UK is accepted for GB). Catalogue cards use the catalogue country when this is not set. Empty string resets it to the catalogue country."
}
},
"required": [
"card"
],
"type": "object"
}
update_client_portfolio
Update a client portfolio — name, balances (full replace), preferences, notes, or status.
update_client_portfolio
Update a client portfolio — name, balances (full replace), preferences, notes, or status.
Update a client portfolio — name, balances (full replace), preferences, notes, or status. Pro tier.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"portfolio_id": {
"type": "integer"
},
"client_name": {
"type": "string"
},
"client_email": {
"type": "string"
},
"phone": {
"type": "string"
},
"balances": {
"type": "object"
},
"preferences": {
"type": "object"
},
"notes": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"active",
"archived"
]
}
},
"required": [
"portfolio_id"
],
"type": "object"
}
update_delay_alert
Edit a live delay alert by id, or pause and resume it with active.
update_delay_alert
Edit a live delay alert by id, or pause and resume it with active.
Edit a live delay alert by id, or pause and resume it with active. Use list_delay_alerts to find the id. Premium feature. Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_id": {
"type": "integer",
"description": "Delay alert id from list_delay_alerts."
},
"airport": {
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"channels": {
"type": "array",
"items": {
"type": "string",
"enum": [
"email",
"sms",
"whatsapp"
]
}
},
"phone_number": {
"type": "string"
},
"min_delay_minutes": {
"type": "integer",
"minimum": 0,
"maximum": 600
},
"label": {
"type": "string"
},
"active": {
"type": "boolean",
"description": "false pauses the alert, true resumes it."
}
},
"required": [
"alert_id"
],
"type": "object"
}
update_flight_alert
Edit an award flight alert by id, or pause and resume it with active.
update_flight_alert
Edit an award flight alert by id, or pause and resume it with active.
Edit an award flight alert by id, or pause and resume it with active. Use list_flight_alerts to find the id. Resuming counts against the free-account alert limit. Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"alert_id": {
"type": "integer",
"description": "Flight alert id from list_flight_alerts."
},
"airline": {
"type": "string",
"enum": [
"BA",
"VS",
"CX",
"IB",
"QR",
"EY",
"JL",
"B6",
"UA",
"TP",
"HA",
"FI"
]
},
"departure": {
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"date_range_start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_range_end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cabin_class": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
]
},
"active": {
"type": "boolean",
"description": "false pauses the alert, true resumes it."
}
},
"required": [
"alert_id"
],
"type": "object"
}
update_flight_booking
Update a tracked flight booking.
update_flight_booking
Update a tracked flight booking.
Update a tracked flight booking. Use to correct details or add confirmation numbers. Do NOT use this to cancel a booking — use delete_flight_booking instead. Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"booking_id": {
"type": "integer",
"minimum": 1
},
"airline": {
"type": "string"
},
"flight_number": {
"type": "string"
},
"origin": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"destination": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"departure_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"return_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"cabin_class": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
]
},
"kind": {
"type": "string",
"enum": [
"award",
"cash"
]
},
"points_spent": {
"type": "integer",
"minimum": 0
},
"program": {
"type": "string"
},
"cash_paid": {
"type": "number",
"minimum": 0
},
"taxes_paid": {
"type": "number"
},
"trip_id": {
"type": "string"
},
"confirmation_number": {
"type": "string"
},
"notes": {
"type": "string"
}
},
"required": [
"booking_id"
],
"type": "object"
}
update_hotel_booking
Update a tracked hotel booking — correct dates, room type, points, rate, confirmation number, etc.
update_hotel_booking
Update a tracked hotel booking — correct dates, room type, points, rate, confirmation number, etc.
Update a tracked hotel booking — correct dates, room type, points, rate, confirmation number, etc. Do NOT use this to cancel a booking — use delete_hotel_booking instead. Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"booking_id": {
"type": "integer",
"minimum": 1
},
"hotel_id": {
"type": "string"
},
"check_in_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"check_out_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"kind": {
"type": "string",
"enum": [
"award",
"cash"
]
},
"original_points": {
"type": "integer",
"minimum": 0
},
"original_pay_rate_usd": {
"type": "number",
"minimum": 0
},
"cash_rate_currency": {
"type": "string"
},
"room_type": {
"type": "string"
},
"rate_plan": {
"type": "string"
},
"confirmation_number": {
"type": "string"
},
"monitoring_enabled": {
"type": "boolean"
},
"notes": {
"type": "string"
}
},
"required": [
"booking_id"
],
"type": "object"
}
update_itinerary
Write a section onto a trip's itinerary canvas — the persistent, editable trip document the agent builds.
update_itinerary
Write a section onto a trip's itinerary canvas — the persistent, editable trip document the agent builds.
Write a section onto a trip's itinerary canvas — the persistent, editable trip document the agent builds. Appends a new section, or updates an existing one when section_id is given. Returns the full updated canvas. Premium tier (itinerary canvas).
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"trip_id": {
"type": "integer",
"description": "Target trip. If omitted, the user's most recent active trip is used (or a new one is created)."
},
"section_id": {
"type": "string",
"description": "Existing section id to update. Omit to append a new section."
},
"heading": {
"type": "string",
"description": "Section heading, e.g. 'Outbound flight' or 'Hotel: Tokyo'"
},
"body": {
"type": "string",
"description": "Section body in markdown"
},
"kind": {
"type": "string",
"enum": [
"flight",
"hotel",
"note",
"budget"
],
"description": "Section kind (default: note)"
}
},
"required": [
"heading",
"body"
],
"type": "object"
}
update_points_balance
Update your points/miles balance for a loyalty program.
update_points_balance
Update your points/miles balance for a loyalty program.
Update your points/miles balance for a loyalty program. Creates the program if it doesn't exist, or updates the balance if it does. Call list_points_balances first and reuse the existing program slugs; never invent a new slug for a program the user already has. Amex Membership Rewards is two different currencies: use amex-membership-rewards for US points and amex-membership-rewards-uk for UK points, and a user can hold both. Use with Gmail to extract balance notifications and keep your portfolio current. Paid feature. An agent with browser or computer use can read this from the user's signed-in account page (see skill capture-from-airline-hotel-account). Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"program": {
"type": "string",
"description": "Canonical loyalty program slug. Reuse the slug shown by list_points_balances.",
"enum": [
"accor-all",
"aegean-miles-bonus",
"aer-lingus-aerclub",
"air-canada-aeroplan",
"air-france-klm-flying-blue",
"air-india-maharaja-club",
"air-new-zealand-koru",
"alaska-atmos-rewards",
"american-aadvantage",
"amex-membership-rewards",
"amex-membership-rewards-uk",
"ana-mileage-club",
"best-western-rewards",
"bilt-rewards",
"british-airways-executive-club",
"capital-one-miles",
"cathay-pacific-cathay",
"chase-ultimate-rewards",
"china-airlines-dynasty-flyer",
"choice-privileges",
"citi-thankyou-points",
"delta-skymiles",
"emirates-skywards",
"etihad-guest",
"eva-air-infinity-mileagelands",
"finnair-plus",
"frontier-miles",
"garuda-indonesia-garudamiles",
"hilton-honors",
"iberia-club",
"ihg-one-rewards",
"jal-mileage-bank",
"jetblue-trueblue",
"korean-air-skypass",
"lufthansa-miles-and-more",
"malaysia-airlines-enrich",
"marriott-bonvoy",
"mea-cedar-miles",
"meliarewards",
"minor-discovery",
"oman-air-sindbad",
"philippine-airlines-mabuhay-miles",
"qantas-frequent-flyer",
"qatar-privilege-club",
"radisson-rewards",
"royal-jordanian-royal-club",
"sas-eurobonus",
"singapore-krisflyer",
"southwest-rapid-rewards",
"tap-miles-go",
"thai-airways-royal-orchid-plus",
"turkish-airlines-miles-and-smiles",
"united-mileageplus",
"velocity-frequent-flyer",
"vietnam-airlines-lotusmiles",
"virgin-atlantic-flying-club",
"world-of-hyatt",
"wyndham-rewards"
]
},
"balance": {
"type": "integer",
"minimum": 0,
"maximum": 50000000
},
"expires_on": {
"type": "string",
"format": "date",
"description": "Optional expiry date of the points (YYYY-MM-DD), when the account page shows one."
}
},
"required": [
"program",
"balance"
],
"type": "object"
}
update_route_monitor
Edit a saved route monitor by ID — change the date window, cabin, airline filter, passenger count, max-points cap, or pause/resume it.
update_route_monitor
Edit a saved route monitor by ID — change the date window, cabin, airline filter, passenger count, max-points cap, or pause/resume it.
Edit a saved route monitor by ID — change the date window, cabin, airline filter, passenger count, max-points cap, or pause/resume it.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"monitor_id": {
"type": "integer"
},
"cabin": {
"type": "string",
"enum": [
"economy",
"premium_economy",
"business",
"first"
]
},
"earliest_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"latest_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"airlines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replaces the existing airline filter; pass [] to watch all carriers"
},
"passengers": {
"type": "integer",
"minimum": 1,
"maximum": 9
},
"max_points": {
"type": "integer"
},
"status": {
"type": "string",
"enum": [
"active",
"paused"
],
"description": "Pause or resume the monitor"
}
},
"required": [
"monitor_id"
],
"type": "object"
}
update_voucher
Edit a voucher in the user's inventory: its expiry date, reference code, notes, or status (held, applied, used, expired).
update_voucher
Edit a voucher in the user's inventory: its expiry date, reference code, notes, or status (held, applied, used, expired).
Edit a voucher in the user's inventory: its expiry date, reference code, notes, or status (held, applied, used, expired). Use list_my_vouchers to find the voucher id. To attach a voucher to a booking use apply_voucher_to_booking. Paid feature. Confirm with the user before it overwrites saved data.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"voucher_id": {
"type": "integer",
"minimum": 1,
"description": "Voucher id from list_my_vouchers."
},
"expires_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Voucher expiry date (YYYY-MM-DD)."
},
"reference": {
"type": "string",
"description": "Voucher code or membership reference."
},
"notes": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"held",
"applied",
"used",
"expired"
]
}
},
"required": [
"voucher_id"
],
"type": "object"
}
whats_on_sale
List currently-active points sales: buy-points promos (airline + hotel) and transfer bonuses across credit-card and loyalty programs.
whats_on_sale
List currently-active points sales: buy-points promos (airline + hotel) and transfer bonuses across credit-card and loyalty programs.
List currently-active points sales: buy-points promos (airline + hotel) and transfer bonuses across credit-card and loyalty programs. No auth required. Useful as a starting point when a user asks 'what's a good deal right now?'.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"category": {
"type": "string",
"enum": [
"all",
"airline",
"hotel",
"transfer"
],
"description": "Filter (default: all)"
},
"program": {
"type": "string",
"description": "Filter to a single program (e.g. 'Avios', 'Marriott Bonvoy')"
}
},
"type": "object"
}
wikipedia_airports
Look up airline service from a Wikipedia airport page.
wikipedia_airports
Look up airline service from a Wikipedia airport page.
Look up airline service from a Wikipedia airport page. Use when fare/award tools say a route doesn't exist (false negative on small markets) or when you need the full destination list for an airport. Free, no auth.
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"airport_code": {
"type": "string",
"pattern": "^[A-Z]{3,4}$",
"description": "IATA (3-letter) or ICAO (4-letter) airport code"
},
"airline": {
"type": "string",
"description": "Optional — filter the result to this airline name (substring match)"
},
"destination": {
"type": "string",
"description": "Optional — filter to flights serving this destination IATA or city"
}
},
"required": [
"airport_code"
],
"type": "object"
}
Endpoints
Everything you need is under one host. No SDK lock-in.
| Path | Method | Purpose |
|---|---|---|
| /mcp | POST | JSON-RPC 2.0 endpoint — tools/list, tools/call, resources/read |
| /oauth/authorize | GET | User-facing consent screen — redirect users here to start the OAuth flow |
| /oauth/token | POST | Exchange an authorization code (or refresh token) for a Bearer access token |
| /dashboard/api-apps | GET | Manage your OAuth client credentials (sign-in required) |
| /.well-known/oauth-authorization-server | GET | RFC 8414 metadata document — auto-discovery for MCP clients |
Ready to ship?
Register an app and get a Bearer token in under two minutes.