Skip to main content
Glama

lookup_airports

Read-onlyIdempotent

Look up airports by name, IATA code, or city code to get city, country, and coordinates. Pass a search term to rank exact matches first.

Instructions

Look up airports by name, IATA code, or city code.

Use when the user names an airport or a code and needs its city, country, or coordinates. For the closest airport to a town that does not share the airport's name, use find_nearest_airports instead of this tool.

The full dataset is ~10k airports, so always pass search — an unfiltered call just returns the first limit entries in dataset order. Results are ranked: exact code, then exact city code, then name matches, with airports you cannot actually fly to last.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (1-500, default 50).
localeNo2-letter locale for names (e.g. "en", "ru"). Defaults to the server's locale.
searchNoAirport name substring, exact IATA code, or city code (e.g. "heathrow", "LHR", "MOW").

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.3

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare this read-only, idempotent, open-world and non-destructive, so the safety profile is covered. The description goes further, disclosing dataset scale (~10k), the consequence of an unfiltered call (first `limit` in dataset order), and the ranking order with 'can't fly to' airports last. This is rich behavioral context beyond annotations; only return-shape detail is missing, and an output schema exists.

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

Conciseness5/5

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

Front-loads the core verb and keys, then the routing rule, then the operational caveat and ranking order. Four tight clauses, each earning its place with no filler.

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

Completeness5/5

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

For a three-parameter lookup with annotations and an output schema, everything an agent needs is present: when to call it, when to call the sibling instead, the mandatory search argument, and how results are ranked. Nothing material is omitted.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are already documented. The description adds meaning beyond the schema by giving examples of each search key (name substring, exact IATA code, city code) and by stating that an unfiltered call behaves differently from a filtered one, which informs how to use `limit`.

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 clear verb and resource ('look up airports') and specifies the three lookup keys (name, IATA code, city code). It explicitly distinguishes itself from the sibling find_nearest_airports, so an agent can route correctly without opening either schema.

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

Usage Guidelines5/5

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

Provides explicit when-to-use ('user names an airport or code and needs city/country/coordinates') and when-not (redirects to find_nearest_airports for towns not sharing the airport's name). It even adds an operational constraint: always pass search. Nothing is left to inference.

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