Skip to main content
Glama
SoapyRED

FreightUtils MCP Server

airport_lookup

Read-onlyIdempotent

Find airport details by IATA code, ICAO code, or city/name search. Returns location, type, and coordinates for 85,555 airports worldwide.

Instructions

Look up an airport by IATA code (3 letters, e.g. "LHR"), ICAO code (4 chars, e.g. "EGLL"), or free-text name/city search (e.g. "heathrow"). Covers 85,555 airports worldwide (OurAirports, public domain, cross-checked vs OpenFlights + Wikidata).

Provide ONE of iata, icao, or query; the optional type filter narrows results. Behavior: read-only; exact code hits return one record; ambiguous name searches return ranked candidates (exact codes first, then larger airports) with match quality reported via the envelope's confidence (basis match_quality); an unknown code errors with a not-found message. Rate-limited (anonymous use: 25 requests/day per IP): a 429 error body carries retry_after_seconds and a Retry-After header — back off and retry, or call get_subscribe_link for higher limits.

Returns: count and results[] — per airport: IATA + ICAO/ident, name, type (large/medium/small/heliport/closed/seaplane), municipality, region, country, latitude/longitude and elevation_ft — under result, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: reference data only — not for navigation; verify operationally critical codes with IATA / ICAO.

Related: nearest_airport (find airports FROM a coordinate), airline_lookup (searches CARRIERS / AWB prefixes, not airports), unlocode_lookup (general transport locations, of which airports are one function).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
iataNoExact 3-letter IATA code. Example: "LHR".
icaoNoExact 4-character ICAO / ident. Example: "EGLL".
typeNoOptional filter by airport type.
queryNoName / city / municipality search (min 2 chars). Example: "heathrow".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo
Install Server

TDQS

A5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behaviors: exact code hits return one record, ambiguous name searches return ranked candidates with match_quality confidence, unknown codes produce a not-found error, and rate limits with 429/retry_after_seconds/Retry-After behavior are clearly explained. It also backs off recommendation and points to get_subscribe_link for higher limits.

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?

The description is long but every sentence earns its place: usage modes, data coverage, behavioral rules, rate limiting, response envelope, limitations, and sibling distinctions. It is front-loaded with the most essential information—lookup methods—and then provides structured depth without repetition.

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?

The description is fully complete for a lookup tool of this complexity. It covers input constraints, output shape, error/rate-limit behavior, limitations, and relationships to siblings. Combined with a rich output schema and full annotation coverage, there is no critical missing context for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds significant semantic value: it states that iata, icao, and query are mutually exclusive ('Provide ONE of iata, icao, or query'), that type is a narrowing filter, and that query is free-text with minimum length. It also explains ranking behavior based on input choice, which is not captured in the schema.

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?

The description states a specific action—'Look up an airport'—and clearly enumerates the supported lookup keys (IATA, ICAO, free-text name/city). It differentiates itself from related tools by explicitly naming nearest_airport, airline_lookup, and unlocode_lookup, making its purpose unambiguous.

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?

The description tells the agent exactly when to use this tool and when not: it explicitly says 'Provide ONE of iata, icao, or query' and gives a dedicated 'Related' section contrasting this tool with nearest_airport (coordinate-based lookup), airline_lookup (carrier/AWB search), and unlocode_lookup (general transport locations). This removes ambiguity about alternative selections.

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

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SoapyRED/freightutils-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server