Historical Airport Temperature Series (by Station & Date Range)
omnial/get-historical-airport-temperature-series
Given an airport's ICAO station code, country, IANA timezone, and a start/end date range, returns every historical weather observation recorded at that station across the range (temperature, humidity, wind, pressure, visibility, sky conditions, weather phrase) plus a derived per-local-day maximum-temperature summary. A station code that does not resolve still completes with an empty observation set and explanatory warnings rather than failing.
Price
Up to $0.0137 per call; you pay what the call used
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.00.
Data source
Data from Weather Underground.
Use it
Your AI assistant does the work: it finds this tool, shows you the price first, runs it, and you are charged when the run finishes. There is nothing to set up for this tool in particular.
Connect once and your AI can find and run this tool, and any other it needs.
For developers: the calls your assistant makes
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/get-historical-airport-temperature-series" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/get-historical-airport-temperature-series" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/get-historical-airport-temperature-series", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/get-historical-airport-temperature-series", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0137 |
- Updated
- Oct 27, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"end_date",
"country_code",
"station_id",
"timezone_name",
"start_date"
],
"properties": {
"end_date": {
"type": "string",
"description": "End date in YYYYMMDD format, inclusive local calendar date."
},
"start_date": {
"type": "string",
"description": "Start date in YYYYMMDD format, interpreted as a local calendar date."
},
"station_id": {
"type": "string",
"description": "Airport station ICAO code (e.g. EFHK, KJFK). Obtain from search endpoint's icaoCode field."
},
"country_code": {
"type": "string",
"description": "Two-letter ISO country code for the station (e.g. FI, US)."
},
"timezone_name": {
"type": "string",
"description": "IANA timezone name for local date grouping (e.g. Europe/Helsinki, America/New_York). DST transitions are handled automatically."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"daily_maxima": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"max_temp_c": {
"type": "number"
},
"provenance": {
"type": "string",
"description": "'DERIVED_FROM_RETURNED_ROWS' on the one real populated example observed."
},
"duplicate_count": {
"type": "number"
},
"observation_count": {
"type": "number"
},
"largest_gap_minutes": {
"type": "number"
},
"max_observed_at_utc": {
"type": "string"
},
"max_observed_at_local": {
"type": "string"
},
"last_observed_at_local": {
"type": "string"
},
"first_observed_at_local": {
"type": "string"
}
},
"additionalProperties": true
},
"description": "One derived per-local-day summary entry, computed from the returned observation rows (see provenance below). Empty when observations is empty."
},
"observations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rh": {
"type": "number",
"description": "Relative humidity, percent."
},
"vis": {
"type": "number",
"description": "Visibility, unit per request_metadata.units."
},
"clds": {
"type": "string",
"description": "Cloud layer code, e.g. 'OVC', 'BKN', 'CLR'."
},
"gust": {
"type": [
"number",
"null"
],
"description": "Populated with the observed gust speed when a wind gust occurred at that reading (e.g. values of 46, 44, 57 observed on a January week at KJFK); null otherwise."
},
"temp": {
"type": "number",
"description": "Degrees, unit per request_metadata.units."
},
"wdir": {
"type": [
"number",
"null"
],
"description": "Compass degrees. Null observed on calm-wind rows (wdir_cardinal 'CALM')."
},
"wspd": {
"type": "number"
},
"class": {
"type": "string",
"description": "'observation' on every row observed."
},
"dewPt": {
"type": "number"
},
"obs_id": {
"type": "string"
},
"max_temp": {
"type": [
"number",
"null"
],
"description": "Populated only on the rare summary-style row within a local day (observed on a small minority of rows); null on ordinary observation rows."
},
"min_temp": {
"type": [
"number",
"null"
],
"description": "Same pairing/behavior as max_temp above -- populated only on rare summary-style rows."
},
"obs_name": {
"type": "string",
"description": "The station's registered public display name, repeated per row."
},
"pressure": {
"type": "number"
},
"row_type": {
"type": "string",
"description": "'original_station_report' on every row observed."
},
"temp_unit": {
"type": "string"
},
"wx_phrase": {
"type": "string"
},
"local_date": {
"type": "string"
},
"station_id": {
"type": "string"
},
"precip_hrly": {
"type": [
"number",
"null"
],
"description": "Often 0 or null for every reading (e.g. 0 at KJFK, null throughout at EFHK)."
},
"wdir_cardinal": {
"type": "string"
},
"valid_time_gmt": {
"type": "number",
"description": "Unix epoch seconds."
},
"observed_at_utc": {
"type": "string"
},
"observed_at_local": {
"type": "string"
}
},
"additionalProperties": true
},
"description": "One entry per recorded observation, chronologically sorted. Empty when the station code does not resolve or the range has no data."
},
"data_source_note": {
"type": "string",
"description": "'UNVERIFIED_TWC_AIRPORT_HISTORY_PROXY' on all three real calls observed -- a note on data provenance, not a live status flag."
},
"request_metadata": {
"type": "object",
"properties": {
"units": {
"type": "string",
"description": "'m' (metric) on all three real calls observed."
},
"complete": {
"type": "boolean",
"description": "False when the requested station/date range could not be fully resolved (e.g. an invalid station code, where it is false with row_count 0)."
},
"warnings": {
"type": "array",
"items": {
"type": "string"
},
"description": "Human-readable diagnostic strings, e.g. an upstream error for a date chunk or 'No observations for date <date>' -- populated on an invalid/unresolvable station, empty on both real successful pulls observed."
},
"row_count": {
"type": "number"
},
"station_id": {
"type": "string",
"description": "Echoes the input station_id."
},
"country_code": {
"type": "string"
},
"retrieved_at": {
"type": "string",
"description": "ISO 8601 UTC timestamp of the call itself."
},
"timezone_name": {
"type": "string"
},
"duplicate_count": {
"type": "number"
},
"requested_end_date": {
"type": "string"
},
"missing_local_dates": {
"type": "array",
"items": {
"type": "string"
},
"description": "Local calendar dates in the requested range with no observation data."
},
"last_observed_at_utc": {
"type": [
"string",
"null"
],
"description": "Null when no observations were returned at all (invalid station code)."
},
"requested_start_date": {
"type": "string"
},
"first_observed_at_utc": {
"type": [
"string",
"null"
],
"description": "Null when no observations were returned at all (invalid station code)."
},
"invalid_timestamp_count": {
"type": "number"
},
"invalid_temperature_count": {
"type": "number"
}
},
"description": "Echoes and summarizes the request, including how much data actually came back.",
"additionalProperties": true
},
"station_metadata": {
"type": "object",
"properties": {
"icao": {
"type": "string"
},
"obs_name": {
"type": [
"string",
"null"
],
"description": "The station's registered public display name, e.g. 'New York/JFK Intl'. Null when the station code does not resolve."
},
"station_id": {
"type": "string"
},
"source_product_name": {
"type": "string"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"status": {
"type": "string",
"description": "'success' on all three real calls observed."
}
},
"description": "The observation record.",
"additionalProperties": true
}