Historical Airport Weather Observations (Hourly, by Station Code)
omnial/get-historical-airport
Given an airport's ICAO station code and a date range of up to 31 days, returns the hourly historical weather observations recorded there (temperature, humidity, wind, pressure, visibility, and sky condition) plus a per-day summary of that day's highest reported temperature. An unrecognized station code settles successfully with an empty result rather than an error.
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 $0.50.
Data source
Data from Weather Underground.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/get-historical-airport" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/get-historical-airport" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/get-historical-airport", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/get-historical-airport", 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 25, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"end_date",
"station_id",
"start_date"
],
"properties": {
"end_date": {
"type": "string",
"description": "End date in YYYYMMDD format."
},
"start_date": {
"type": "string",
"description": "Start date in YYYYMMDD format."
},
"station_id": {
"type": "string",
"description": "Airport station ICAO code (e.g. KJFK, EGLL). Obtain from search endpoint's icaoCode field."
},
"country_code": {
"type": "string",
"description": "Two-letter ISO country code for the station (e.g. US, GB)."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"metadata": {
"type": "object",
"properties": {
"units": {
"type": "string",
"description": "'m' (metric) on the one real call observed; unconfirmed whether an imperial variant exists."
},
"language": {
"type": "string"
}
},
"description": "Response-envelope metadata. Only `language` (response text locale, e.g. 'en-US') and `units` (the measurement-system flag, e.g. 'm' for metric on the one real call observed) are kept -- the endpoint's own transaction id, cache-expiry epoch, response schema version, and internal location key are vendor session plumbing, not customer-facing data, and are left out of this shape.",
"additionalProperties": false
},
"observations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rh": {
"type": "number",
"description": "Relative humidity, percent."
},
"wc": {
"type": "number",
"description": "Wind chill."
},
"key": {
"type": "string",
"description": "Repeats the station code."
},
"vis": {
"type": "number",
"description": "Visibility, kilometers under the observed metric unit setting."
},
"clds": {
"type": "string",
"description": "Cloud-cover code, e.g. 'OVC', 'BKN', 'FEW', 'CLR', 'SCT'."
},
"gust": {
"type": [
"number",
"null"
],
"description": "Null on most rows on the one real call observed; populated with a wind-gust reading (e.g. 46, 54) on a number of rows, mostly during a windier stretch of the week."
},
"temp": {
"type": "number"
},
"wdir": {
"type": [
"number",
"null"
],
"description": "Null on calm-wind rows (wdir_cardinal='CALM') on the one real call observed."
},
"wspd": {
"type": "number"
},
"class": {
"type": "string",
"description": "'observation' on every row observed."
},
"dewPt": {
"type": "number"
},
"obs_id": {
"type": "string",
"description": "Repeats the station code."
},
"day_ind": {
"type": "string",
"description": "'D' or 'N' (day/night) on the observed rows."
},
"uv_desc": {
"type": "string",
"description": "e.g. 'Low'."
},
"wx_icon": {
"type": "number"
},
"max_temp": {
"type": [
"number",
"null"
],
"description": "Null on almost every row; populated on a small number of rows on the one real call observed -- appears to mark a daily-max reading row, not a per-hour running max."
},
"min_temp": {
"type": [
"number",
"null"
],
"description": "Null on almost every row; populated on a small number of rows on the one real call observed -- appears to mark a daily-min reading row, not a per-hour running min."
},
"obs_name": {
"type": "string",
"description": "The station's display name, e.g. 'New York/JFK Intl'."
},
"pressure": {
"type": "number"
},
"row_type": {
"type": "string",
"description": "'original_station_report' on every observation observed; other values unconfirmed."
},
"uv_index": {
"type": "number"
},
"qc_status": {
"type": "null",
"description": "Null on every observation on the one real call observed; no populated example was captured, so a populated value's type is unconfirmed."
},
"snow_hrly": {
"type": "null",
"description": "Null on every observation on the one real call observed; no populated example was captured, so a populated value's type is unconfirmed."
},
"temp_unit": {
"type": "string",
"description": "'C' on the one real call observed, matching metadata.units='m'."
},
"wx_phrase": {
"type": "string",
"description": "e.g. 'Cloudy', 'Fair'."
},
"feels_like": {
"type": "number"
},
"heat_index": {
"type": "number"
},
"utc_offset": {
"type": "null",
"description": "Null on every observation on the one real call observed; no populated example was captured, so a populated value's type is unconfirmed."
},
"precip_hrly": {
"type": "number",
"description": "0 on every observation on the one real call observed (no precipitation that week)."
},
"precip_total": {
"type": [
"number",
"null"
],
"description": "Null on nearly every row on the one real call observed; populated on a single row (16.26) -- appears to mark a cumulative-total reading row, not a per-hour running total."
},
"pressure_desc": {
"type": [
"string",
"null"
],
"description": "Null on many rows on the one real call observed -- not reported every hour."
},
"pressure_tend": {
"type": [
"number",
"null"
],
"description": "Null on many rows on the one real call observed -- not reported every hour."
},
"timezone_name": {
"type": "null",
"description": "Null on every observation on the one real call observed; no populated example was captured, so a populated value's type is unconfirmed."
},
"wdir_cardinal": {
"type": "string",
"description": "e.g. 'WSW', 'CALM'."
},
"valid_time_gmt": {
"type": "number",
"description": "Unix epoch seconds for the observation."
},
"observed_at_utc": {
"type": "string",
"description": "ISO 8601 UTC timestamp of the observation."
},
"observed_at_local": {
"type": "null",
"description": "Null on every observation on the one real call observed; no populated example was captured, so a populated value's type is unconfirmed."
},
"revision_timestamp": {
"type": "null",
"description": "Null on every observation on the one real call observed; no populated example was captured, so a populated value's type is unconfirmed."
},
"source_availability_timestamp": {
"type": "null",
"description": "Null on every observation on the one real call observed; no populated example was captured, so a populated value's type is unconfirmed."
}
},
"additionalProperties": false
},
"description": "One entry per hourly observation row actually reported by the station within the requested range."
},
"daily_summary": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD."
},
"max_temp_provenance": {
"type": "string",
"description": "'DERIVED_FROM_ROWS' or 'SOURCE_PUBLISHED' on the one real call observed -- other values unconfirmed."
},
"max_temp_row_timestamp": {
"type": "string",
"description": "ISO 8601 timestamp of the row that produced max_temp_from_returned_rows."
},
"source_published_daily_max": {
"type": "number",
"description": "Present only when max_temp_provenance is 'SOURCE_PUBLISHED'; the source's own officially published daily max, which can differ from max_temp_from_returned_rows."
},
"max_temp_from_returned_rows": {
"type": "number",
"description": "Highest temp among the hourly rows this same call actually returned for that day."
}
},
"additionalProperties": false
},
"description": "One entry per calendar day touched by the requested range."
},
"data_source_note": {
"type": "string",
"description": "A data-provenance flag from the data source, e.g. 'UNVERIFIED_TWC_AIRPORT_HISTORY_PROXY' -- read as a caveat on data reliability, not itself a weather value."
},
"station_metadata": {
"type": "object",
"properties": {
"icao": {
"type": "string"
},
"latitude": {
"type": "null",
"description": "Null on the one real call observed (KJFK); no populated example was captured, so a populated value's type is unconfirmed."
},
"longitude": {
"type": "null",
"description": "Null on the one real call observed (KJFK); no populated example was captured, so a populated value's type is unconfirmed."
},
"station_id": {
"type": "string"
},
"source_product_name": {
"type": "string",
"description": "The upstream data product name, e.g. 'TWC Historical Observations v1'."
}
},
"additionalProperties": false
},
"response_metadata": {
"type": "object",
"properties": {
"warnings": {
"type": "array",
"items": {
"type": "string"
},
"description": "Observed as an empty array on the one real call; the shape of a populated warning is unconfirmed."
},
"row_count": {
"type": "number",
"description": "Number of hourly observation rows actually returned."
},
"retrieved_at": {
"type": "string",
"description": "ISO 8601 timestamp of when the upstream call was made."
},
"missing_hour_count": {
"type": "number",
"description": "0 on the one real call observed (no gaps in the requested range)."
},
"requested_end_date": {
"type": "string"
},
"requested_start_date": {
"type": "string"
}
},
"description": "Bookkeeping about the query itself, not weather data.",
"additionalProperties": false
}
},
"description": "Absent when the station code was not recognized (see `status`'s own note).",
"additionalProperties": false
},
"status": {
"type": "string",
"description": "'success' on the one real populated call observed (KJFK). Absent entirely on the invalid-station-code call -- that run's whole result document was empty, not a populated envelope with an error status string."
}
},
"description": "The historical-observation record. An unrecognized station code returns `{}` -- see `status`/`data`'s own descriptions.",
"additionalProperties": false
}