Skip to main content
Glama

get_city_pairs

City Pair contract airfares

Return every GSA contract award matching the airport/city code pair and date (today by default). Codes are returned in alphabetical order; fares are one-way USD and valid in either direction. Source start/end dates are inclusive; overlapping amendments are both returned. No fallback to other fiscal years or dates. Null fare categories are unavailable. Sandbox and Google add-on: today only. Pro: current US fiscal year. Business (including Enterprise accounts): any loaded fiscal year, including published future awards. Data reflects the latest imported table, not past publication snapshots. These are eligible government travelers' contract prices, not live seat availability or booking offers. Domestic fares exclude passenger facility, segment and security fees; international fares exclude taxes/fees but include fuel surcharges. Book through the agency's authorized system. Official CPP rules and price caveats; fare definitions.

Example (fixed date; use Business access for dates outside the current fiscal year):

curl --get 'https://api.allowancesapi.com/v1/gsa/city-pairs/ABE/ATL' -H 'X-API-Key: YOUR_KEY' -H 'X-Bypass-Cache: 1' --data-urlencode 'date=2026-10-28' --data-urlencode 'verification_url=true'

See the 200 response example for all result fields. Importing does not invalidate existing cached responses; use X-Bypass-Cache: 1 to verify newly imported data.

Input Schema

NameRequiredDescriptionDefault
dateNoSpecific date in YYYY-MM-DD format
originYesThree-letter airport or international city code; case-insensitive. No city-name expansion.
destinationYesThree-letter airport or international city code; case-insensitive. No city-name expansion.
verification_urlNoIf 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: output ordering, one-way USD fares valid in either direction, inclusive source dates, overlapping amendments both returned, null fare categories unavailable, no cross-fiscal-year fallback, tier-based date limits, and data freshness ('latest imported table, not past publication snapshots'). It also discloses that these are eligible contract prices, not live availability, and that caching means newly imported data needs X-Bypass-Cache: 1.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is stated in the first content sentence and nearly every subsequent sentence adds a genuine caveat (fees, tiers, caching, freshness). It is dense and slightly over-long — the external links and full curl example could be trimmed — and the opening bare fragment 'City Pair contract airfares' delays the actual verb.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with no annotations and no output schema, the description covers behavior, data provenance, pricing caveats, and access-tier limits well, but defers result field details to an external '200 response example' and does not say what an empty match set looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so origin/destination/date/verification_url are already documented, and the description largely restates the code-pair semantics. It adds only the 'today by default' date behavior and tier-dependent date ranges beyond the schema, which is a marginal increment over the baseline for fully described parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns GSA City Pair contract award airfares for an airport/city code pair and date. It is clearly distinguishable from siblings like get_city_pair_locations (location lookup) or get_gsa_perdiem_by_destination (per diem rates).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit access-tier conditions (Sandbox/Google add-on = today only; Pro = current fiscal year; Business = any loaded fiscal year), states there is no fallback to other dates/fiscal years, and says to book through the agency's authorized system. It stops short of routing the agent to a specific sibling (e.g., get_city_pair_locations) when the code itself is unknown.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources