nasa-power-mcp-server
An open-source MCP server that allows AI agents to query NASA POWER historical solar and meteorological observations for renewable energy, sustainable buildings, and agroclimatology. It supports retrieving point time series, climatology, native-grid regions, and comparing labeled locations without requiring a NASA account or API key.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://nasa-power.caseyjhand.com/mcpWhat you can do with it
- Retrieve hourly, daily, or monthly solar and wind observations at specific coordinates
- Get monthly and annual point climatology including tilted solar profiles
- Search the complete community/resolution parameter dictionary
- Run bounded read-only SQL against staged data tables
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- nasa-power-mcp-server 0.4.2
- MCP protocol
- 2025-06-18
- Tools
- 8 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": true
},
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"subscribe": true,
"listChanged": true
},
"extensions": {
"io.modelcontextprotocol/skills": {
"directoryRead": true
}
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
8 advertised
nasa_power_get_timeseries — Get NASA POWER timeseries
Retrieve complete hourly, daily or monthly observations at latitude/longitude. Hourly and daily require startDate/endDate; monthly requires startYear/endYear. Use nasa_power_search_parameters for codes and nasa_power_list_reference for presets. Large results return a full-table canvas handle and preview; oversized summaries stage as summaryDataset with exact summaryCount, queried in summaryIndex order.
{
"type": "object",
"oneOf": [
{
"type": "object",
"required": [
"latitude",
"longitude",
"temporalResolution",
"startDate",
"endDate"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse a returned canvas token for an oversized result"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"selection": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"preset"
],
"properties": {
"mode": {
"type": "string",
"const": "preset",
"description": "Select a named group"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
}
},
"description": "Named preset selection",
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"parameters"
],
"properties": {
"mode": {
"type": "string",
"const": "parameters",
"description": "Select exact codes"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"maxItems": 15,
"minItems": 1,
"description": "Unique codes from nasa_power_search_parameters for the selected community and temporalResolution; PSC/WSC corrections count toward the effective limit"
}
},
"description": "Explicit hourly parameter selection",
"additionalProperties": false
}
],
"default": {
"mode": "preset",
"preset": "solar_pv"
},
"description": "Hourly parameter selection; at most 15 effective codes including PSC/WSC corrections"
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"type": "string",
"const": "hourly",
"description": "Hourly observations"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"latitude",
"longitude",
"startDate",
"endDate"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse a returned canvas token for an oversized result"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"selection": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"preset"
],
"properties": {
"mode": {
"type": "string",
"const": "preset",
"description": "Select a named group"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
}
},
"description": "Named preset selection",
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"parameters"
],
"properties": {
"mode": {
"type": "string",
"const": "parameters",
"description": "Select exact codes"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"maxItems": 20,
"minItems": 1,
"description": "Unique codes from nasa_power_search_parameters for the selected community and temporalResolution; PSC/WSC corrections count toward the effective limit"
}
},
"description": "Explicit parameter selection",
"additionalProperties": false
}
],
"default": {
"mode": "preset",
"preset": "solar_pv"
},
"description": "Parameter selection"
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"type": "string",
"const": "daily",
"default": "daily",
"description": "Daily observations"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"latitude",
"longitude",
"temporalResolution",
"startYear",
"endYear"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse a returned canvas token for an oversized result"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"selection": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"preset"
],
"properties": {
"mode": {
"type": "string",
"const": "preset",
"description": "Select a named group"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
}
},
"description": "Named preset selection",
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"parameters"
],
"properties": {
"mode": {
"type": "string",
"const": "parameters",
"description": "Select exact codes"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"maxItems": 20,
"minItems": 1,
"description": "Unique codes from nasa_power_search_parameters for the selected community and temporalResolution; PSC/WSC corrections count toward the effective limit"
}
},
"description": "Explicit parameter selection",
"additionalProperties": false
}
],
"default": {
"mode": "preset",
"preset": "solar_pv"
},
"description": "Parameter selection"
},
"startYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"type": "string",
"const": "monthly",
"description": "Monthly and annual observations"
}
},
"additionalProperties": false
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}{
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"request",
"metadata",
"parameters",
"expansions",
"omittedParameters",
"summaries",
"rows",
"rowCount",
"dataset"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"periodKey",
"periodKind",
"date",
"year",
"month",
"hour",
"latitude",
"longitude",
"elevation"
],
"properties": {
"date": {
"type": [
"string",
"null"
],
"description": "Normalized date/hour text; null for undated aggregates"
},
"hour": {
"type": [
"number",
"null"
],
"description": "Hour 0 through 23 for hourly observations"
},
"year": {
"type": [
"number",
"null"
],
"description": "Calendar year when the source key has one"
},
"month": {
"type": [
"number",
"null"
],
"description": "Month 1 through 12; null for annual records"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"elevation": {
"type": [
"number",
"null"
],
"description": "Source elevation in meters, unknown when null"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"periodKey": {
"type": "string",
"description": "Original lossless upstream period identifier"
},
"periodKind": {
"enum": [
"hour",
"day",
"month",
"annual",
"climatology_month",
"climatology_annual"
],
"type": "string",
"description": "Original source period classification; annual records remain separate"
}
},
"description": "One original returned period",
"additionalProperties": {
"type": [
"string",
"number",
"null"
],
"description": "Returned parameter value or cell/location identity"
}
},
"description": "Complete inline observations or bounded preview with a full-data handle and exact rowCount"
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"unsupported_parameter",
"unsupported_preset",
"invalid_window",
"invalid_correction",
"upstream_rejected",
"upstream_rate_limited",
"request_queue_full",
"dataset_limit",
"producer_capacity_exhausted",
"canvas_capacity_exhausted",
"canvas_busy",
"canvas_required",
"canvas_not_found"
],
"description": "Machine-readable failure mode. Declared by this tool: `unsupported_parameter`: Selected parameter is unavailable for this community and resolution. `unsupported_preset`: Preset is unavailable at this resolution. `invalid_window`: Window is reversed, impossible or outside source coverage. `invalid_correction`: Wind settings are unpaired or correction inputs are missing. `upstream_rejected`: NASA rejects the scientific request. `upstream_rate_limited`: NASA responds with a rate limit. `request_queue_full`: Source scheduling capacity is exhausted. `dataset_limit`: Complete data exceeds a bounded workload limit. `producer_capacity_exhausted`: Other data calls hold the in-flight capacity this call needs past its admission wait. `canvas_capacity_exhausted`: Canvas count, table or retained staging capacity is exhausted. `canvas_busy`: Another query, staging or removal occupies the supplied canvas. `canvas_required`: Oversized observations or summaries require an enabled workspace. `canvas_not_found`: The supplied workspace token is absent or expired. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"dataset": {
"anyOf": [
{
"type": "object",
"required": [
"canvas_id",
"table",
"rowCount",
"expiresAt",
"columns",
"describeTool",
"queryTool"
],
"properties": {
"table": {
"type": "string",
"description": "Registered full-data table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Exact registered column name"
},
"type": {
"type": "string",
"description": "Explicit DuckDB column type"
},
"units": {
"type": "string",
"description": "Exact source units for scientific columns"
},
"nullable": {
"type": "boolean",
"description": "Whether this column permits null values"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value kind when applicable"
}
},
"description": "One explicitly typed staged column",
"additionalProperties": false
},
"description": "Explicit schema of every staged column"
},
"rowCount": {
"type": "number",
"description": "Exact full staged row count"
},
"canvas_id": {
"type": "string",
"description": "Explicit process-local canvas access token"
},
"expiresAt": {
"type": "string",
"description": "Table expiry timestamp"
},
"queryTool": {
"type": "string",
"const": "nasa_power_dataframe_query",
"description": "Tool for querying this dataset"
},
"describeTool": {
"type": "string",
"const": "nasa_power_dataframe_describe",
"description": "Tool for inspecting this dataset"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Full-table handle when observations exceed inline budget; null otherwise"
},
"request": {
"type": "object",
"required": [
"community",
"units",
"timeStandard",
"latitude",
"longitude",
"selection",
"temporalResolution"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endDate": {
"type": "string",
"description": "Inclusive end date for hourly or daily data"
},
"endYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "End calendar year for monthly or custom climatology data"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"selection": {
"type": "object",
"required": [
"mode"
],
"properties": {
"mode": {
"enum": [
"preset",
"parameters"
],
"type": "string",
"description": "Normalized selection mode"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"description": "Normalized unique parameter code"
},
"description": "Codes in first-seen order for explicit selection"
}
},
"description": "Normalized preset or explicit code selection",
"additionalProperties": false
},
"startDate": {
"type": "string",
"description": "Inclusive start date for hourly or daily data"
},
"startYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Start calendar year for monthly or custom climatology data"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"enum": [
"hourly",
"daily",
"monthly",
"climatology"
],
"type": "string",
"description": "Source temporal resolution"
}
},
"description": "Normalized scientific request and corrections",
"additionalProperties": false
},
"metadata": {
"type": "object",
"required": [
"endpointUrl",
"fetchedAt",
"cacheHit",
"unitsMode",
"messages",
"extra"
],
"properties": {
"api": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Reported source API name"
},
"version": {
"type": "string",
"description": "Reported source API version"
}
},
"description": "Reported API identity",
"additionalProperties": false
},
"extra": {
"type": "object",
"description": "Additional upstream JSON fields",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"range": {
"type": "string",
"description": "Original climatology range explanation"
},
"sources": {
"type": "array",
"items": {
"type": "string",
"description": "Source dataset identifier"
},
"description": "Source datasets reported by NASA"
},
"cacheHit": {
"type": "boolean",
"description": "Whether this response reuses cached source data"
},
"messages": {
"type": "array",
"items": {
"type": "string",
"description": "Unmodified upstream message"
},
"description": "NASA messages preserved as data"
},
"fetchedAt": {
"type": "string",
"description": "Original retrieval timestamp, retained on cache hits"
},
"fillValue": {
"type": "number",
"description": "Original source missing-value sentinel"
},
"unitsMode": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"description": "Requested units mode"
},
"endpointUrl": {
"type": "string",
"description": "Exact NASA endpoint URL used for retrieval"
},
"reportedEnd": {
"type": "string",
"description": "Original source end-window identifier"
},
"timeStandard": {
"type": "string",
"description": "Actual response time standard; LST has no UTC offset"
},
"reportedStart": {
"type": "string",
"description": "Original source start-window identifier"
},
"returnedCoordinates": {
"type": "object",
"required": [
"latitude",
"longitude",
"elevation"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"elevation": {
"type": [
"number",
"null"
],
"description": "Returned elevation in meters, unknown when null"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "Returned point coordinates and source elevation; not proof of a grid center",
"additionalProperties": false
},
"requestedCoordinates": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "Requested point coordinates",
"additionalProperties": false
}
},
"description": "Original source provenance and access information",
"additionalProperties": false
},
"rowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Exact full normalized observation count"
},
"summaries": {
"type": "array",
"items": {
"type": "object",
"required": [
"parameter",
"periodKind",
"validCount",
"missingCount",
"fillCount",
"absentKeyCount",
"firstReturnedKey",
"lastReturnedKey",
"lastValidPeriodKey",
"lastValidDate",
"mean",
"min",
"max"
],
"properties": {
"max": {
"type": [
"number",
"null"
],
"description": "Maximum valid observation; null when none exist"
},
"min": {
"type": [
"number",
"null"
],
"description": "Minimum valid observation; null when none exist"
},
"mean": {
"type": [
"number",
"null"
],
"description": "Arithmetic observation mean; null when no valid values exist"
},
"units": {
"type": "string",
"description": "Exact source units for this statistic"
},
"fillCount": {
"type": "number",
"description": "Returned values matching the source fill sentinel"
},
"parameter": {
"type": "string",
"description": "Parameter code summarized independently"
},
"periodKind": {
"enum": [
"hour",
"day",
"month",
"annual",
"climatology_month",
"climatology_annual"
],
"type": "string",
"description": "Original source period classification; annual records remain separate"
},
"validCount": {
"type": "number",
"description": "Number of valid numeric values"
},
"missingCount": {
"type": "number",
"description": "Fill count plus absent-key count"
},
"lastValidDate": {
"type": [
"string",
"null"
],
"description": "Latest valid chronological date; null for undated aggregates"
},
"absentKeyCount": {
"type": "number",
"description": "Union period keys absent from this returned series"
},
"lastReturnedKey": {
"type": [
"string",
"null"
],
"description": "Last returned union key in this period kind"
},
"firstReturnedKey": {
"type": [
"string",
"null"
],
"description": "First returned union key in this period kind"
},
"lastValidPeriodKey": {
"type": [
"string",
"null"
],
"description": "Latest period key containing a valid number"
}
},
"description": "One parameter/period-kind summary",
"additionalProperties": false
},
"description": "Numeric observation summaries with explicit missingness"
},
"expansions": {
"type": "object",
"description": "Requested alias to actual returned member codes",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"description": "Returned alias member"
},
"description": "Returned member codes"
}
},
"parameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"valueKind",
"extra"
],
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"extra": {
"type": "object",
"description": "Additional upstream JSON fields",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"units": {
"type": "string",
"description": "Exact source units without conversion"
},
"longName": {
"type": "string",
"description": "Long parameter name supplied by NASA"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Numeric measurement, numeric category code or orientation text"
}
},
"description": "Returned scientific parameter metadata",
"additionalProperties": false
},
"description": "Returned parameter columns, including dynamic alias members"
},
"summaryCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Exact complete summary count when summaries are staged; summaries then holds one"
},
"summaryDataset": {
"type": "object",
"required": [
"canvas_id",
"table",
"rowCount",
"expiresAt",
"columns",
"describeTool",
"queryTool"
],
"properties": {
"table": {
"type": "string",
"description": "Registered full-data table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Exact registered column name"
},
"type": {
"type": "string",
"description": "Explicit DuckDB column type"
},
"units": {
"type": "string",
"description": "Exact source units for scientific columns"
},
"nullable": {
"type": "boolean",
"description": "Whether this column permits null values"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value kind when applicable"
}
},
"description": "One explicitly typed staged column",
"additionalProperties": false
},
"description": "Explicit schema of every staged column"
},
"rowCount": {
"type": "number",
"description": "Exact full staged row count"
},
"canvas_id": {
"type": "string",
"description": "Explicit process-local canvas access token"
},
"expiresAt": {
"type": "string",
"description": "Table expiry timestamp"
},
"queryTool": {
"type": "string",
"const": "nasa_power_dataframe_query",
"description": "Tool for querying this dataset"
},
"describeTool": {
"type": "string",
"const": "nasa_power_dataframe_describe",
"description": "Tool for inspecting this dataset"
}
},
"description": "Complete summaries ordered by summaryIndex; SQL NULL units restore an omitted source unit",
"additionalProperties": false
},
"omittedParameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"messages"
],
"properties": {
"code": {
"type": "string",
"description": "Requested code with no returned series"
},
"messages": {
"type": "array",
"items": {
"type": "string",
"description": "Applicable NASA message"
},
"description": "Source messages associated with omission"
}
},
"description": "One requested parameter with no returned series",
"additionalProperties": false
},
"description": "Requested parameters omitted by the source, distinct from fill values"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}nasa_power_get_climatology — Get NASA POWER climatology
Retrieve complete monthly and annual climatology at latitude/longitude. Optionally supply both startYear and endYear; omitted years use the source product range. Use nasa_power_list_reference for presets and tilted solar aliases. Small profiles remain inline; larger profiles return a complete table handle and bounded preview, preserving orientation text. Oversized summaries stage as summaryDataset with exact summaryCount, queried in summaryIndex order. Supply canvas_id to reuse a returned workspace.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"latitude",
"longitude"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse a returned canvas token for an oversized profile"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"selection": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"preset"
],
"properties": {
"mode": {
"type": "string",
"const": "preset",
"description": "Select a named group"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
}
},
"description": "Named preset selection",
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"parameters"
],
"properties": {
"mode": {
"type": "string",
"const": "parameters",
"description": "Select exact codes"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"maxItems": 20,
"minItems": 1,
"description": "Unique codes from nasa_power_search_parameters for the selected community and temporalResolution; PSC/WSC corrections count toward the effective limit"
}
},
"description": "Explicit parameter selection",
"additionalProperties": false
}
],
"default": {
"mode": "preset",
"preset": "solar_pv"
},
"description": "Parameter selection"
},
"startYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
}
},
"additionalProperties": false
}{
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"request",
"metadata",
"parameters",
"expansions",
"omittedParameters",
"summaries",
"rows",
"rowCount",
"dataset"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"periodKey",
"periodKind",
"date",
"year",
"month",
"hour",
"latitude",
"longitude",
"elevation"
],
"properties": {
"date": {
"type": [
"string",
"null"
],
"description": "Normalized date/hour text; null for undated aggregates"
},
"hour": {
"type": [
"number",
"null"
],
"description": "Hour 0 through 23 for hourly observations"
},
"year": {
"type": [
"number",
"null"
],
"description": "Calendar year when the source key has one"
},
"month": {
"type": [
"number",
"null"
],
"description": "Month 1 through 12; null for annual records"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"elevation": {
"type": [
"number",
"null"
],
"description": "Source elevation in meters, unknown when null"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"periodKey": {
"type": "string",
"description": "Original lossless upstream period identifier"
},
"periodKind": {
"enum": [
"hour",
"day",
"month",
"annual",
"climatology_month",
"climatology_annual"
],
"type": "string",
"description": "Original source period classification; annual records remain separate"
}
},
"description": "One original returned period",
"additionalProperties": {
"type": [
"string",
"number",
"null"
],
"description": "Returned parameter value or cell/location identity"
}
},
"description": "Complete inline observations or bounded preview with a full-data handle and exact rowCount"
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"canvas_required",
"canvas_not_found",
"unsupported_parameter",
"unsupported_preset",
"invalid_window",
"invalid_correction",
"upstream_rejected",
"upstream_rate_limited",
"request_queue_full",
"dataset_limit",
"producer_capacity_exhausted",
"canvas_capacity_exhausted",
"canvas_busy"
],
"description": "Machine-readable failure mode. Declared by this tool: `canvas_required`: Oversized observations or summaries require an enabled workspace. `canvas_not_found`: The supplied workspace token is absent or expired. `unsupported_parameter`: Selected parameter is unavailable for this community and resolution. `unsupported_preset`: Preset is unavailable at this resolution. `invalid_window`: Window is reversed, impossible or outside source coverage. `invalid_correction`: Wind settings are unpaired or correction inputs are missing. `upstream_rejected`: NASA rejects the scientific request. `upstream_rate_limited`: NASA responds with a rate limit. `request_queue_full`: Source scheduling capacity is exhausted. `dataset_limit`: Complete data exceeds a bounded workload limit. `producer_capacity_exhausted`: Other data calls hold the in-flight capacity this call needs past its admission wait. `canvas_capacity_exhausted`: Canvas count, table or retained staging capacity is exhausted. `canvas_busy`: Another query, staging or removal occupies the supplied canvas. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"dataset": {
"anyOf": [
{
"type": "object",
"required": [
"canvas_id",
"table",
"rowCount",
"expiresAt",
"columns",
"describeTool",
"queryTool"
],
"properties": {
"table": {
"type": "string",
"description": "Registered full-data table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Exact registered column name"
},
"type": {
"type": "string",
"description": "Explicit DuckDB column type"
},
"units": {
"type": "string",
"description": "Exact source units for scientific columns"
},
"nullable": {
"type": "boolean",
"description": "Whether this column permits null values"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value kind when applicable"
}
},
"description": "One explicitly typed staged column",
"additionalProperties": false
},
"description": "Explicit schema of every staged column"
},
"rowCount": {
"type": "number",
"description": "Exact full staged row count"
},
"canvas_id": {
"type": "string",
"description": "Explicit process-local canvas access token"
},
"expiresAt": {
"type": "string",
"description": "Table expiry timestamp"
},
"queryTool": {
"type": "string",
"const": "nasa_power_dataframe_query",
"description": "Tool for querying this dataset"
},
"describeTool": {
"type": "string",
"const": "nasa_power_dataframe_describe",
"description": "Tool for inspecting this dataset"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Full-table handle when observations exceed inline budget; null otherwise"
},
"request": {
"type": "object",
"required": [
"community",
"units",
"timeStandard",
"latitude",
"longitude",
"selection",
"temporalResolution"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "End calendar year for monthly or custom climatology data"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"selection": {
"type": "object",
"required": [
"mode"
],
"properties": {
"mode": {
"enum": [
"preset",
"parameters"
],
"type": "string",
"description": "Normalized selection mode"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"description": "Normalized unique parameter code"
},
"description": "Codes in first-seen order for explicit selection"
}
},
"description": "Normalized preset or explicit code selection",
"additionalProperties": false
},
"startYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Start calendar year for monthly or custom climatology data"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"type": "string",
"const": "climatology",
"description": "Monthly and annual climatology"
}
},
"description": "Normalized climatology request and corrections",
"additionalProperties": false
},
"metadata": {
"type": "object",
"required": [
"endpointUrl",
"fetchedAt",
"cacheHit",
"unitsMode",
"messages",
"extra"
],
"properties": {
"api": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Reported source API name"
},
"version": {
"type": "string",
"description": "Reported source API version"
}
},
"description": "Reported API identity",
"additionalProperties": false
},
"extra": {
"type": "object",
"description": "Additional upstream JSON fields",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"range": {
"type": "string",
"description": "Original climatology range explanation"
},
"sources": {
"type": "array",
"items": {
"type": "string",
"description": "Source dataset identifier"
},
"description": "Source datasets reported by NASA"
},
"cacheHit": {
"type": "boolean",
"description": "Whether this response reuses cached source data"
},
"messages": {
"type": "array",
"items": {
"type": "string",
"description": "Unmodified upstream message"
},
"description": "NASA messages preserved as data"
},
"fetchedAt": {
"type": "string",
"description": "Original retrieval timestamp, retained on cache hits"
},
"fillValue": {
"type": "number",
"description": "Original source missing-value sentinel"
},
"unitsMode": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"description": "Requested units mode"
},
"endpointUrl": {
"type": "string",
"description": "Exact NASA endpoint URL used for retrieval"
},
"reportedEnd": {
"type": "string",
"description": "Original source end-window identifier"
},
"timeStandard": {
"type": "string",
"description": "Actual response time standard; LST has no UTC offset"
},
"reportedStart": {
"type": "string",
"description": "Original source start-window identifier"
},
"returnedCoordinates": {
"type": "object",
"required": [
"latitude",
"longitude",
"elevation"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"elevation": {
"type": [
"number",
"null"
],
"description": "Returned elevation in meters, unknown when null"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "Returned point coordinates and source elevation; not proof of a grid center",
"additionalProperties": false
},
"requestedCoordinates": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "Requested point coordinates",
"additionalProperties": false
}
},
"description": "Original source provenance and access information",
"additionalProperties": false
},
"rowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Exact full normalized observation count"
},
"summaries": {
"type": "array",
"items": {
"type": "object",
"required": [
"parameter",
"periodKind",
"validCount",
"missingCount",
"fillCount",
"absentKeyCount",
"firstReturnedKey",
"lastReturnedKey",
"lastValidPeriodKey",
"lastValidDate",
"mean",
"min",
"max"
],
"properties": {
"max": {
"type": [
"number",
"null"
],
"description": "Maximum valid observation; null when none exist"
},
"min": {
"type": [
"number",
"null"
],
"description": "Minimum valid observation; null when none exist"
},
"mean": {
"type": [
"number",
"null"
],
"description": "Arithmetic observation mean; null when no valid values exist"
},
"units": {
"type": "string",
"description": "Exact source units for this statistic"
},
"fillCount": {
"type": "number",
"description": "Returned values matching the source fill sentinel"
},
"parameter": {
"type": "string",
"description": "Parameter code summarized independently"
},
"periodKind": {
"enum": [
"hour",
"day",
"month",
"annual",
"climatology_month",
"climatology_annual"
],
"type": "string",
"description": "Original source period classification; annual records remain separate"
},
"validCount": {
"type": "number",
"description": "Number of valid numeric values"
},
"missingCount": {
"type": "number",
"description": "Fill count plus absent-key count"
},
"lastValidDate": {
"type": [
"string",
"null"
],
"description": "Latest valid chronological date; null for undated aggregates"
},
"absentKeyCount": {
"type": "number",
"description": "Union period keys absent from this returned series"
},
"lastReturnedKey": {
"type": [
"string",
"null"
],
"description": "Last returned union key in this period kind"
},
"firstReturnedKey": {
"type": [
"string",
"null"
],
"description": "First returned union key in this period kind"
},
"lastValidPeriodKey": {
"type": [
"string",
"null"
],
"description": "Latest period key containing a valid number"
}
},
"description": "One parameter/period-kind summary",
"additionalProperties": false
},
"description": "Numeric observation summaries with explicit missingness"
},
"expansions": {
"type": "object",
"description": "Requested alias to actual returned member codes",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"description": "Returned alias member"
},
"description": "Returned member codes"
}
},
"parameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"valueKind",
"extra"
],
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"extra": {
"type": "object",
"description": "Additional upstream JSON fields",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"units": {
"type": "string",
"description": "Exact source units without conversion"
},
"longName": {
"type": "string",
"description": "Long parameter name supplied by NASA"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Numeric measurement, numeric category code or orientation text"
}
},
"description": "Returned scientific parameter metadata",
"additionalProperties": false
},
"description": "Returned parameter columns, including dynamic alias members"
},
"summaryCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Exact complete summary count when summaries are staged; summaries then holds one"
},
"summaryDataset": {
"type": "object",
"required": [
"canvas_id",
"table",
"rowCount",
"expiresAt",
"columns",
"describeTool",
"queryTool"
],
"properties": {
"table": {
"type": "string",
"description": "Registered full-data table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Exact registered column name"
},
"type": {
"type": "string",
"description": "Explicit DuckDB column type"
},
"units": {
"type": "string",
"description": "Exact source units for scientific columns"
},
"nullable": {
"type": "boolean",
"description": "Whether this column permits null values"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value kind when applicable"
}
},
"description": "One explicitly typed staged column",
"additionalProperties": false
},
"description": "Explicit schema of every staged column"
},
"rowCount": {
"type": "number",
"description": "Exact full staged row count"
},
"canvas_id": {
"type": "string",
"description": "Explicit process-local canvas access token"
},
"expiresAt": {
"type": "string",
"description": "Table expiry timestamp"
},
"queryTool": {
"type": "string",
"const": "nasa_power_dataframe_query",
"description": "Tool for querying this dataset"
},
"describeTool": {
"type": "string",
"const": "nasa_power_dataframe_describe",
"description": "Tool for inspecting this dataset"
}
},
"description": "Complete summaries ordered by summaryIndex; SQL NULL units restore an omitted source unit",
"additionalProperties": false
},
"omittedParameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"messages"
],
"properties": {
"code": {
"type": "string",
"description": "Requested code with no returned series"
},
"messages": {
"type": "array",
"items": {
"type": "string",
"description": "Applicable NASA message"
},
"description": "Source messages associated with omission"
}
},
"description": "One requested parameter with no returned series",
"additionalProperties": false
},
"description": "Requested parameters omitted by the source, distinct from fill values"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}nasa_power_get_region — Get NASA POWER region
Retrieve one parameter over ordered latitude/longitude bounds spanning 2–10 degrees per axis, at daily, monthly or climatology resolution. Regional climatology uses the precomputed source period and accepts no year fields; use nasa_power_get_climatology for custom years at a point. Split antimeridian regions into separate calls. Returns cell identities and separate per-period equal-weight cell statistics, not area-weighted estimates. Oversized observations and summaries stage completely with previews, exact counts and SQL handles; query summaryDataset in summaryIndex order.
{
"type": "object",
"oneOf": [
{
"type": "object",
"required": [
"latitudeMin",
"latitudeMax",
"longitudeMin",
"longitudeMax",
"parameter",
"startDate",
"endDate"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse an explicit canvas token for staging"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"parameter": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "One code from nasa_power_search_parameters for the selected community and temporalResolution; point corrections PSC/WSC are unsupported"
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"latitudeMax": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"latitudeMin": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitudeMax": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"longitudeMin": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"temporalResolution": {
"type": "string",
"const": "daily",
"default": "daily",
"description": "Daily observations"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"latitudeMin",
"latitudeMax",
"longitudeMin",
"longitudeMax",
"parameter",
"temporalResolution",
"startYear",
"endYear"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse an explicit canvas token for staging"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"parameter": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "One code from nasa_power_search_parameters for the selected community and temporalResolution; point corrections PSC/WSC are unsupported"
},
"startYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"latitudeMax": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"latitudeMin": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitudeMax": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"longitudeMin": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"temporalResolution": {
"type": "string",
"const": "monthly",
"description": "Monthly and annual observations"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"latitudeMin",
"latitudeMax",
"longitudeMin",
"longitudeMax",
"parameter",
"temporalResolution"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse an explicit canvas token for staging"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"parameter": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "One code from nasa_power_search_parameters for the selected community and temporalResolution; point corrections PSC/WSC are unsupported"
},
"latitudeMax": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"latitudeMin": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitudeMax": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"longitudeMin": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"temporalResolution": {
"type": "string",
"const": "climatology",
"description": "Monthly and annual climatology"
}
},
"additionalProperties": false
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}{
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"metadata",
"parameters",
"expansions",
"omittedParameters",
"rows",
"request",
"cellCount",
"summaries",
"rowCount",
"dataset"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"periodKey",
"periodKind",
"date",
"year",
"month",
"hour",
"latitude",
"longitude",
"elevation"
],
"properties": {
"date": {
"type": [
"string",
"null"
],
"description": "Normalized date/hour text; null for undated aggregates"
},
"hour": {
"type": [
"number",
"null"
],
"description": "Hour 0 through 23 for hourly observations"
},
"year": {
"type": [
"number",
"null"
],
"description": "Calendar year when the source key has one"
},
"month": {
"type": [
"number",
"null"
],
"description": "Month 1 through 12; null for annual records"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"elevation": {
"type": [
"number",
"null"
],
"description": "Source elevation in meters, unknown when null"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"periodKey": {
"type": "string",
"description": "Original lossless upstream period identifier"
},
"periodKind": {
"enum": [
"hour",
"day",
"month",
"annual",
"climatology_month",
"climatology_annual"
],
"type": "string",
"description": "Original source period classification; annual records remain separate"
}
},
"description": "One original returned period",
"additionalProperties": {
"type": [
"string",
"number",
"null"
],
"description": "Returned parameter value or cell/location identity"
}
},
"description": "Complete inline observations or bounded preview with a full-data handle and exact rowCount"
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"unsupported_parameter",
"invalid_window",
"invalid_correction",
"upstream_rejected",
"upstream_rate_limited",
"request_queue_full",
"canvas_required",
"canvas_not_found",
"producer_capacity_exhausted",
"canvas_capacity_exhausted",
"canvas_busy",
"invalid_region",
"dataset_limit"
],
"description": "Machine-readable failure mode. Declared by this tool: `unsupported_parameter`: A selected code is unavailable for the community and resolution. `invalid_window`: The requested window is reversed or outside source coverage. `invalid_correction`: Correction inputs are unsupported or missing required dependencies. `upstream_rejected`: NASA rejects the scientific request or reference lookup. `upstream_rate_limited`: NASA rate limits a request or shared reference lookup. `request_queue_full`: Source scheduling capacity is exhausted. `canvas_required`: Oversized observations or summaries require an enabled workspace. `canvas_not_found`: The supplied canvas token is absent or expired. `producer_capacity_exhausted`: Other data calls hold the in-flight capacity this call needs past its admission wait. `canvas_capacity_exhausted`: Canvas count, table or retained staging capacity is exhausted. `canvas_busy`: Another query, staging or removal occupies the supplied canvas. `invalid_region`: Regional axes are reversed or span outside 2–10 degrees. `dataset_limit`: The complete native-grid dataset exceeds workload bounds. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"dataset": {
"anyOf": [
{
"type": "object",
"required": [
"canvas_id",
"table",
"rowCount",
"expiresAt",
"columns",
"describeTool",
"queryTool"
],
"properties": {
"table": {
"type": "string",
"description": "Registered full-data table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Exact registered column name"
},
"type": {
"type": "string",
"description": "Explicit DuckDB column type"
},
"units": {
"type": "string",
"description": "Exact source units for scientific columns"
},
"nullable": {
"type": "boolean",
"description": "Whether this column permits null values"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value kind when applicable"
}
},
"description": "One explicitly typed staged column",
"additionalProperties": false
},
"description": "Explicit schema of every staged column"
},
"rowCount": {
"type": "number",
"description": "Exact full staged row count"
},
"canvas_id": {
"type": "string",
"description": "Explicit process-local canvas access token"
},
"expiresAt": {
"type": "string",
"description": "Table expiry timestamp"
},
"queryTool": {
"type": "string",
"const": "nasa_power_dataframe_query",
"description": "Tool for querying this dataset"
},
"describeTool": {
"type": "string",
"const": "nasa_power_dataframe_describe",
"description": "Tool for inspecting this dataset"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Full-table handle on overflow, otherwise null"
},
"request": {
"type": "object",
"required": [
"community",
"units",
"timeStandard",
"latitudeMin",
"latitudeMax",
"longitudeMin",
"longitudeMax",
"parameter",
"temporalResolution"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endDate": {
"type": "string",
"description": "Inclusive end date for hourly or daily data"
},
"endYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "End calendar year for monthly or custom climatology data"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"parameter": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "One code from nasa_power_search_parameters for the selected community and temporalResolution; point corrections PSC/WSC are unsupported"
},
"startDate": {
"type": "string",
"description": "Inclusive start date for hourly or daily data"
},
"startYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Start calendar year for monthly or custom climatology data"
},
"latitudeMax": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"latitudeMin": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitudeMax": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"longitudeMin": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"temporalResolution": {
"enum": [
"hourly",
"daily",
"monthly",
"climatology"
],
"type": "string",
"description": "Source temporal resolution"
}
},
"description": "Normalized regional bounds, window and parameter",
"additionalProperties": false
},
"metadata": {
"type": "object",
"required": [
"endpointUrl",
"fetchedAt",
"cacheHit",
"unitsMode",
"messages",
"extra"
],
"properties": {
"api": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Reported source API name"
},
"version": {
"type": "string",
"description": "Reported source API version"
}
},
"description": "Reported API identity",
"additionalProperties": false
},
"extra": {
"type": "object",
"description": "Additional upstream JSON fields",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"range": {
"type": "string",
"description": "Original climatology range explanation"
},
"sources": {
"type": "array",
"items": {
"type": "string",
"description": "Source dataset identifier"
},
"description": "Source datasets reported by NASA"
},
"cacheHit": {
"type": "boolean",
"description": "Whether this response reuses cached source data"
},
"messages": {
"type": "array",
"items": {
"type": "string",
"description": "Unmodified upstream message"
},
"description": "NASA messages preserved as data"
},
"fetchedAt": {
"type": "string",
"description": "Original retrieval timestamp, retained on cache hits"
},
"fillValue": {
"type": "number",
"description": "Original source missing-value sentinel"
},
"unitsMode": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"description": "Requested units mode"
},
"endpointUrl": {
"type": "string",
"description": "Exact NASA endpoint URL used for retrieval"
},
"reportedEnd": {
"type": "string",
"description": "Original source end-window identifier"
},
"timeStandard": {
"type": "string",
"description": "Actual response time standard; LST has no UTC offset"
},
"reportedStart": {
"type": "string",
"description": "Original source start-window identifier"
},
"returnedCoordinates": {
"type": "object",
"required": [
"latitude",
"longitude",
"elevation"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"elevation": {
"type": [
"number",
"null"
],
"description": "Returned elevation in meters, unknown when null"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "Returned point coordinates and source elevation; not proof of a grid center",
"additionalProperties": false
},
"requestedCoordinates": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "Requested point coordinates",
"additionalProperties": false
}
},
"description": "Original source provenance and access information",
"additionalProperties": false
},
"rowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Exact full normalized observation count"
},
"cellCount": {
"type": "number",
"description": "Total features returned by NASA"
},
"summaries": {
"type": "array",
"items": {
"type": "object",
"required": [
"parameter",
"periodKey",
"periodKind",
"validCellCount",
"missingCellCount",
"min",
"mean",
"max"
],
"properties": {
"max": {
"type": [
"number",
"null"
],
"description": "Maximum valid cell value"
},
"min": {
"type": [
"number",
"null"
],
"description": "Minimum valid cell value"
},
"mean": {
"type": [
"number",
"null"
],
"description": "Equal-weight grid-cell mean; not area-weighted"
},
"units": {
"type": "string",
"description": "Exact source units"
},
"parameter": {
"type": "string",
"description": "Parameter code compared across grid cells"
},
"periodKey": {
"type": "string",
"description": "Original period key shared across cells"
},
"periodKind": {
"enum": [
"hour",
"day",
"month",
"annual",
"climatology_month",
"climatology_annual"
],
"type": "string",
"description": "Original source period classification; annual records remain separate"
},
"validCellCount": {
"type": "number",
"description": "Cells with a valid numeric value at this period"
},
"missingCellCount": {
"type": "number",
"description": "Cells lacking a valid numeric value at this period"
}
},
"description": "One parameter/period cross-cell statistic",
"additionalProperties": false
},
"description": "Cross-cell summaries kept separate for every period"
},
"expansions": {
"type": "object",
"description": "Requested alias to actual returned member codes",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"description": "Returned alias member"
},
"description": "Returned member codes"
}
},
"parameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"valueKind",
"extra"
],
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"extra": {
"type": "object",
"description": "Additional upstream JSON fields",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"units": {
"type": "string",
"description": "Exact source units without conversion"
},
"longName": {
"type": "string",
"description": "Long parameter name supplied by NASA"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Numeric measurement, numeric category code or orientation text"
}
},
"description": "Returned scientific parameter metadata",
"additionalProperties": false
},
"description": "Returned parameter columns, including dynamic alias members"
},
"summaryCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Exact complete cross-cell summary count when summaries are staged"
},
"summaryDataset": {
"type": "object",
"required": [
"canvas_id",
"table",
"rowCount",
"expiresAt",
"columns",
"describeTool",
"queryTool"
],
"properties": {
"table": {
"type": "string",
"description": "Registered full-data table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Exact registered column name"
},
"type": {
"type": "string",
"description": "Explicit DuckDB column type"
},
"units": {
"type": "string",
"description": "Exact source units for scientific columns"
},
"nullable": {
"type": "boolean",
"description": "Whether this column permits null values"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value kind when applicable"
}
},
"description": "One explicitly typed staged column",
"additionalProperties": false
},
"description": "Explicit schema of every staged column"
},
"rowCount": {
"type": "number",
"description": "Exact full staged row count"
},
"canvas_id": {
"type": "string",
"description": "Explicit process-local canvas access token"
},
"expiresAt": {
"type": "string",
"description": "Table expiry timestamp"
},
"queryTool": {
"type": "string",
"const": "nasa_power_dataframe_query",
"description": "Tool for querying this dataset"
},
"describeTool": {
"type": "string",
"const": "nasa_power_dataframe_describe",
"description": "Tool for inspecting this dataset"
}
},
"description": "Complete cross-cell summaries ordered by summaryIndex; SQL NULL units restore an omitted source unit",
"additionalProperties": false
},
"omittedParameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"messages"
],
"properties": {
"code": {
"type": "string",
"description": "Requested code with no returned series"
},
"messages": {
"type": "array",
"items": {
"type": "string",
"description": "Applicable NASA message"
},
"description": "Source messages associated with omission"
}
},
"description": "One requested parameter with no returned series",
"additionalProperties": false
},
"description": "Requested parameters omitted by the source, distinct from fill values"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}nasa_power_compare_locations — Compare NASA POWER locations
Compare 2–10 labeled coordinates with a shared parameter selection and window; climatology is the default resolution. Duplicate labels retain separate input-position identities. Returns per-site provenance and valid-only annual/seasonal summaries; operational site failures preserve successes. Optional numeric sort uses observation means, monthly annual records or climatology ANN, with nulls last and stable ties; differing or unknown units cannot sort. Oversized observations and summaries stage completely; summaryDatasets handles and summaryIndex preserve complete ordered summary arrays.
{
"type": "object",
"oneOf": [
{
"type": "object",
"required": [
"locations",
"temporalResolution",
"startDate",
"endDate"
],
"properties": {
"sort": {
"type": "object",
"required": [
"parameter",
"direction"
],
"properties": {
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Numeric sort direction"
},
"parameter": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "Selected numeric parameter code to sort; units must be known and identical across successful locations"
}
},
"description": "Optional comparable annual or observation mean sort",
"additionalProperties": false
},
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse an explicit canvas token for staging"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"locations": {
"type": "array",
"items": {
"type": "object",
"required": [
"latitude",
"longitude",
"label"
],
"properties": {
"label": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Verbatim caller label"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "One labeled coordinate in stable input order",
"additionalProperties": false
},
"maxItems": 10,
"minItems": 2,
"description": "Locations in stable input order"
},
"selection": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"preset"
],
"properties": {
"mode": {
"type": "string",
"const": "preset",
"description": "Select a named group"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
}
},
"description": "Named preset selection",
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"parameters"
],
"properties": {
"mode": {
"type": "string",
"const": "parameters",
"description": "Select exact codes"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"maxItems": 15,
"minItems": 1,
"description": "Unique codes from nasa_power_search_parameters for the selected community and temporalResolution; PSC/WSC corrections count toward the effective limit"
}
},
"description": "Explicit hourly parameter selection",
"additionalProperties": false
}
],
"default": {
"mode": "preset",
"preset": "solar_pv"
},
"description": "Hourly parameter selection; at most 15 effective codes including PSC/WSC corrections"
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"type": "string",
"const": "hourly",
"description": "Hourly observations"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"locations",
"temporalResolution",
"startDate",
"endDate"
],
"properties": {
"sort": {
"type": "object",
"required": [
"parameter",
"direction"
],
"properties": {
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Numeric sort direction"
},
"parameter": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "Selected numeric parameter code to sort; units must be known and identical across successful locations"
}
},
"description": "Optional comparable annual or observation mean sort",
"additionalProperties": false
},
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse an explicit canvas token for staging"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"locations": {
"type": "array",
"items": {
"type": "object",
"required": [
"latitude",
"longitude",
"label"
],
"properties": {
"label": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Verbatim caller label"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "One labeled coordinate in stable input order",
"additionalProperties": false
},
"maxItems": 10,
"minItems": 2,
"description": "Locations in stable input order"
},
"selection": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"preset"
],
"properties": {
"mode": {
"type": "string",
"const": "preset",
"description": "Select a named group"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
}
},
"description": "Named preset selection",
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"parameters"
],
"properties": {
"mode": {
"type": "string",
"const": "parameters",
"description": "Select exact codes"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"maxItems": 20,
"minItems": 1,
"description": "Unique codes from nasa_power_search_parameters for the selected community and temporalResolution; PSC/WSC corrections count toward the effective limit"
}
},
"description": "Explicit parameter selection",
"additionalProperties": false
}
],
"default": {
"mode": "preset",
"preset": "solar_pv"
},
"description": "Parameter selection"
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive Gregorian date in YYYY-MM-DD format"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"type": "string",
"const": "daily",
"description": "Daily comparison"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"locations",
"temporalResolution",
"startYear",
"endYear"
],
"properties": {
"sort": {
"type": "object",
"required": [
"parameter",
"direction"
],
"properties": {
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Numeric sort direction"
},
"parameter": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "Selected numeric parameter code to sort; units must be known and identical across successful locations"
}
},
"description": "Optional comparable annual or observation mean sort",
"additionalProperties": false
},
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse an explicit canvas token for staging"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"locations": {
"type": "array",
"items": {
"type": "object",
"required": [
"latitude",
"longitude",
"label"
],
"properties": {
"label": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Verbatim caller label"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "One labeled coordinate in stable input order",
"additionalProperties": false
},
"maxItems": 10,
"minItems": 2,
"description": "Locations in stable input order"
},
"selection": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"preset"
],
"properties": {
"mode": {
"type": "string",
"const": "preset",
"description": "Select a named group"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
}
},
"description": "Named preset selection",
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"parameters"
],
"properties": {
"mode": {
"type": "string",
"const": "parameters",
"description": "Select exact codes"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"maxItems": 20,
"minItems": 1,
"description": "Unique codes from nasa_power_search_parameters for the selected community and temporalResolution; PSC/WSC corrections count toward the effective limit"
}
},
"description": "Explicit parameter selection",
"additionalProperties": false
}
],
"default": {
"mode": "preset",
"preset": "solar_pv"
},
"description": "Parameter selection"
},
"startYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"type": "string",
"const": "monthly",
"description": "Monthly and annual observations"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"locations"
],
"properties": {
"sort": {
"type": "object",
"required": [
"parameter",
"direction"
],
"properties": {
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Numeric sort direction"
},
"parameter": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "Selected numeric parameter code to sort; units must be known and identical across successful locations"
}
},
"description": "Optional comparable annual or observation mean sort",
"additionalProperties": false
},
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Reuse an explicit canvas token for staging"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"locations": {
"type": "array",
"items": {
"type": "object",
"required": [
"latitude",
"longitude",
"label"
],
"properties": {
"label": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Verbatim caller label"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "One labeled coordinate in stable input order",
"additionalProperties": false
},
"maxItems": 10,
"minItems": 2,
"description": "Locations in stable input order"
},
"selection": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"preset"
],
"properties": {
"mode": {
"type": "string",
"const": "preset",
"description": "Select a named group"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
}
},
"description": "Named preset selection",
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"parameters"
],
"properties": {
"mode": {
"type": "string",
"const": "parameters",
"description": "Select exact codes"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"maxItems": 20,
"minItems": 1,
"description": "Unique codes from nasa_power_search_parameters for the selected community and temporalResolution; PSC/WSC corrections count toward the effective limit"
}
},
"description": "Explicit parameter selection",
"additionalProperties": false
}
],
"default": {
"mode": "preset",
"preset": "solar_pv"
},
"description": "Parameter selection"
},
"startYear": {
"type": "integer",
"maximum": 9999,
"minimum": 1981,
"description": "Calendar year"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"type": "string",
"const": "climatology",
"default": "climatology",
"description": "Climatology comparison"
}
},
"additionalProperties": false
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}{
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"request",
"metadata",
"parameters",
"locations",
"failed",
"partial",
"summaries",
"comparable",
"sort",
"possibleSharedGridCell",
"rows",
"rowCount",
"dataset"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"periodKey",
"periodKind",
"date",
"year",
"month",
"hour",
"latitude",
"longitude",
"elevation"
],
"properties": {
"date": {
"type": [
"string",
"null"
],
"description": "Normalized date/hour text; null for undated aggregates"
},
"hour": {
"type": [
"number",
"null"
],
"description": "Hour 0 through 23 for hourly observations"
},
"year": {
"type": [
"number",
"null"
],
"description": "Calendar year when the source key has one"
},
"month": {
"type": [
"number",
"null"
],
"description": "Month 1 through 12; null for annual records"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"elevation": {
"type": [
"number",
"null"
],
"description": "Source elevation in meters, unknown when null"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"periodKey": {
"type": "string",
"description": "Original lossless upstream period identifier"
},
"periodKind": {
"enum": [
"hour",
"day",
"month",
"annual",
"climatology_month",
"climatology_annual"
],
"type": "string",
"description": "Original source period classification; annual records remain separate"
}
},
"description": "One original period with location identity",
"additionalProperties": {
"type": [
"string",
"number",
"null"
],
"description": "Returned parameter value or cell/location identity"
}
},
"description": "Complete observations or bounded preview when staged"
},
"sort": {
"anyOf": [
{
"type": "object",
"required": [
"parameter",
"direction",
"criterion",
"nulls",
"ties"
],
"properties": {
"ties": {
"type": "string",
"const": "input_order",
"description": "Stable ordering for equal metrics"
},
"nulls": {
"type": "string",
"const": "last",
"description": "Missing metric ordering"
},
"criterion": {
"enum": [
"observation_mean",
"annual_record_mean",
"source_ANN"
],
"type": "string",
"description": "Explicit scientific sort criterion"
},
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Numeric ordering direction"
},
"parameter": {
"type": "string",
"description": "Selected comparable numeric parameter"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Applied numeric sort; null preserves input order"
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_window",
"invalid_correction",
"upstream_rejected",
"upstream_rate_limited",
"request_queue_full",
"canvas_required",
"canvas_not_found",
"producer_capacity_exhausted",
"canvas_capacity_exhausted",
"canvas_busy",
"unsupported_preset",
"all_locations_failed",
"unsupported_parameter",
"dataset_limit"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_window`: The requested window is reversed or outside source coverage. `invalid_correction`: Correction inputs are unsupported or missing required dependencies. `upstream_rejected`: NASA rejects the scientific request or reference lookup. `upstream_rate_limited`: NASA rate limits a request or shared reference lookup. `request_queue_full`: Source scheduling capacity is exhausted. `canvas_required`: Oversized observations or summaries require an enabled workspace. `canvas_not_found`: The supplied canvas token is absent or expired. `producer_capacity_exhausted`: Other data calls hold the in-flight capacity this call needs past its admission wait. `canvas_capacity_exhausted`: Canvas count, table or retained staging capacity is exhausted. `canvas_busy`: Another query, staging or removal occupies the supplied canvas. `unsupported_preset`: The selected preset is unavailable at this resolution. `all_locations_failed`: Every requested location failed operationally. `unsupported_parameter`: Selection or sort is unsupported or requested units are incomparable. `dataset_limit`: The complete merged dataset exceeds workload bounds. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"failed": {
"type": "array",
"items": {
"type": "object",
"required": [
"locationId",
"label",
"latitude",
"longitude",
"code",
"reason",
"message",
"recovery"
],
"properties": {
"code": {
"type": "number",
"description": "Typed JSON-RPC error code"
},
"label": {
"type": "string",
"description": "Verbatim caller label, possibly duplicated"
},
"reason": {
"type": "string",
"description": "Machine-readable failure reason"
},
"message": {
"type": "string",
"description": "Failure explanation"
},
"latitude": {
"type": "number",
"description": "Requested latitude in degrees north"
},
"recovery": {
"type": "string",
"description": "Actionable next step"
},
"longitude": {
"type": "number",
"description": "Requested longitude in degrees east"
},
"locationId": {
"type": "string",
"description": "Stable identity assigned by input position"
}
},
"description": "Failed or unscheduled location",
"additionalProperties": false
},
"description": "Operational failures in original input order"
},
"dataset": {
"anyOf": [
{
"type": "object",
"required": [
"canvas_id",
"table",
"rowCount",
"expiresAt",
"columns",
"describeTool",
"queryTool"
],
"properties": {
"table": {
"type": "string",
"description": "Registered full-data table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Exact registered column name"
},
"type": {
"type": "string",
"description": "Explicit DuckDB column type"
},
"units": {
"type": "string",
"description": "Exact source units for scientific columns"
},
"nullable": {
"type": "boolean",
"description": "Whether this column permits null values"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value kind when applicable"
}
},
"description": "One explicitly typed staged column",
"additionalProperties": false
},
"description": "Explicit schema of every staged column"
},
"rowCount": {
"type": "number",
"description": "Exact full staged row count"
},
"canvas_id": {
"type": "string",
"description": "Explicit process-local canvas access token"
},
"expiresAt": {
"type": "string",
"description": "Table expiry timestamp"
},
"queryTool": {
"type": "string",
"const": "nasa_power_dataframe_query",
"description": "Tool for querying this dataset"
},
"describeTool": {
"type": "string",
"const": "nasa_power_dataframe_describe",
"description": "Tool for inspecting this dataset"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Full-table handle on overflow, otherwise null"
},
"partial": {
"type": "boolean",
"description": "Whether any requested location failed"
},
"request": {
"type": "object",
"required": [
"community",
"units",
"timeStandard",
"selection",
"temporalResolution",
"locations"
],
"properties": {
"sort": {
"type": "object",
"required": [
"parameter",
"direction"
],
"properties": {
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Numeric sort direction"
},
"parameter": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "Selected numeric parameter code to sort; units must be known and identical across successful locations"
}
},
"description": "Optional comparable annual or observation mean sort",
"additionalProperties": false
},
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endDate": {
"type": "string",
"description": "Inclusive end date for hourly or daily data"
},
"endYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "End calendar year for monthly or custom climatology data"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"locations": {
"type": "array",
"items": {
"type": "object",
"required": [
"latitude",
"longitude",
"label"
],
"properties": {
"label": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Verbatim caller label"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "One labeled coordinate in stable input order",
"additionalProperties": false
},
"maxItems": 10,
"minItems": 2,
"description": "Locations in stable input order"
},
"selection": {
"type": "object",
"required": [
"mode"
],
"properties": {
"mode": {
"enum": [
"preset",
"parameters"
],
"type": "string",
"description": "Normalized selection mode"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"description": "Normalized unique parameter code"
},
"description": "Codes in first-seen order for explicit selection"
}
},
"description": "Normalized preset or explicit code selection",
"additionalProperties": false
},
"startDate": {
"type": "string",
"description": "Inclusive start date for hourly or daily data"
},
"startYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Start calendar year for monthly or custom climatology data"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"enum": [
"hourly",
"daily",
"monthly",
"climatology"
],
"type": "string",
"description": "Source temporal resolution"
}
},
"description": "Normalized shared request and original location order",
"additionalProperties": false
},
"metadata": {
"type": "object",
"required": [
"fetchedAt",
"endpointUrls"
],
"properties": {
"fetchedAt": {
"type": "string",
"description": "Comparison assembly access time"
},
"endpointUrls": {
"type": "array",
"items": {
"type": "string",
"description": "Exact successful NASA endpoint"
},
"description": "Successful source endpoints in returned location order"
}
},
"description": "Comparison access information; per-site provenance is in locations",
"additionalProperties": false
},
"rowCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Exact full merged observation count"
},
"locations": {
"type": "array",
"items": {
"type": "object",
"required": [
"locationId",
"label",
"latitude",
"longitude",
"request",
"metadata",
"parameters",
"expansions",
"omittedParameters",
"summaries",
"sortMetric"
],
"properties": {
"label": {
"type": "string",
"description": "Verbatim caller label, possibly duplicated"
},
"request": {
"type": "object",
"required": [
"community",
"units",
"timeStandard",
"latitude",
"longitude",
"selection",
"temporalResolution"
],
"properties": {
"units": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"default": "metric",
"description": "Requested units mode; response units remain authoritative"
},
"endDate": {
"type": "string",
"description": "Inclusive end date for hourly or daily data"
},
"endYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "End calendar year for monthly or custom climatology data"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
},
"selection": {
"type": "object",
"required": [
"mode"
],
"properties": {
"mode": {
"enum": [
"preset",
"parameters"
],
"type": "string",
"description": "Normalized selection mode"
},
"preset": {
"enum": [
"solar_pv",
"wind_turbine",
"building_hvac",
"agroclimatology",
"water_balance"
],
"type": "string",
"description": "Parameter group from nasa_power_list_reference topic presets"
},
"parameters": {
"type": "array",
"items": {
"type": "string",
"description": "Normalized unique parameter code"
},
"description": "Codes in first-seen order for explicit selection"
}
},
"description": "Normalized preset or explicit code selection",
"additionalProperties": false
},
"startDate": {
"type": "string",
"description": "Inclusive start date for hourly or daily data"
},
"startYear": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Start calendar year for monthly or custom climatology data"
},
"windSurface": {
"enum": [
"vegtype_1",
"vegtype_2",
"vegtype_3",
"vegtype_4",
"vegtype_5",
"vegtype_6",
"vegtype_7",
"vegtype_8",
"vegtype_9",
"vegtype_10",
"vegtype_11",
"vegtype_12",
"vegtype_20",
"seaice",
"openwater",
"airportice",
"airportgrass",
"airport_ice",
"airport ice"
],
"type": "string",
"description": "Wind surface paired with windElevation; airport_ice and airport ice alias airportice"
},
"timeStandard": {
"enum": [
"LST",
"UTC"
],
"type": "string",
"default": "LST",
"description": "Local solar time or UTC"
},
"siteElevation": {
"type": "number",
"description": "Site elevation in meters; supplying it adds PSC to the effective parameter selection"
},
"windElevation": {
"type": "number",
"maximum": 300,
"minimum": 10,
"description": "Wind correction height in meters; requires windSurface and adds WSC to the effective parameter selection"
},
"temporalResolution": {
"enum": [
"hourly",
"daily",
"monthly",
"climatology"
],
"type": "string",
"description": "Source temporal resolution"
}
},
"description": "Normalized scientific request and corrections",
"additionalProperties": false
},
"latitude": {
"type": "number",
"description": "Requested latitude in degrees north"
},
"metadata": {
"type": "object",
"required": [
"endpointUrl",
"fetchedAt",
"cacheHit",
"unitsMode",
"messages",
"extra"
],
"properties": {
"api": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Reported source API name"
},
"version": {
"type": "string",
"description": "Reported source API version"
}
},
"description": "Reported API identity",
"additionalProperties": false
},
"extra": {
"type": "object",
"description": "Additional upstream JSON fields",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"range": {
"type": "string",
"description": "Original climatology range explanation"
},
"sources": {
"type": "array",
"items": {
"type": "string",
"description": "Source dataset identifier"
},
"description": "Source datasets reported by NASA"
},
"cacheHit": {
"type": "boolean",
"description": "Whether this response reuses cached source data"
},
"messages": {
"type": "array",
"items": {
"type": "string",
"description": "Unmodified upstream message"
},
"description": "NASA messages preserved as data"
},
"fetchedAt": {
"type": "string",
"description": "Original retrieval timestamp, retained on cache hits"
},
"fillValue": {
"type": "number",
"description": "Original source missing-value sentinel"
},
"unitsMode": {
"enum": [
"metric",
"imperial"
],
"type": "string",
"description": "Requested units mode"
},
"endpointUrl": {
"type": "string",
"description": "Exact NASA endpoint URL used for retrieval"
},
"reportedEnd": {
"type": "string",
"description": "Original source end-window identifier"
},
"timeStandard": {
"type": "string",
"description": "Actual response time standard; LST has no UTC offset"
},
"reportedStart": {
"type": "string",
"description": "Original source start-window identifier"
},
"returnedCoordinates": {
"type": "object",
"required": [
"latitude",
"longitude",
"elevation"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"elevation": {
"type": [
"number",
"null"
],
"description": "Returned elevation in meters, unknown when null"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "Returned point coordinates and source elevation; not proof of a grid center",
"additionalProperties": false
},
"requestedCoordinates": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in degrees north"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in degrees east"
}
},
"description": "Requested point coordinates",
"additionalProperties": false
}
},
"description": "Original source provenance and access information",
"additionalProperties": false
},
"longitude": {
"type": "number",
"description": "Requested longitude in degrees east"
},
"summaries": {
"type": "array",
"items": {
"type": "object",
"required": [
"parameter",
"periodKind",
"validCount",
"missingCount",
"fillCount",
"absentKeyCount",
"firstReturnedKey",
"lastReturnedKey",
"lastValidPeriodKey",
"lastValidDate",
"mean",
"min",
"max"
],
"properties": {
"max": {
"type": [
"number",
"null"
],
"description": "Maximum valid observation; null when none exist"
},
"min": {
"type": [
"number",
"null"
],
"description": "Minimum valid observation; null when none exist"
},
"mean": {
"type": [
"number",
"null"
],
"description": "Arithmetic observation mean; null when no valid values exist"
},
"units": {
"type": "string",
"description": "Exact source units for this statistic"
},
"fillCount": {
"type": "number",
"description": "Returned values matching the source fill sentinel"
},
"parameter": {
"type": "string",
"description": "Parameter code summarized independently"
},
"periodKind": {
"enum": [
"hour",
"day",
"month",
"annual",
"climatology_month",
"climatology_annual"
],
"type": "string",
"description": "Original source period classification; annual records remain separate"
},
"validCount": {
"type": "number",
"description": "Number of valid numeric values"
},
"missingCount": {
"type": "number",
"description": "Fill count plus absent-key count"
},
"lastValidDate": {
"type": [
"string",
"null"
],
"description": "Latest valid chronological date; null for undated aggregates"
},
"absentKeyCount": {
"type": "number",
"description": "Union period keys absent from this returned series"
},
"lastReturnedKey": {
"type": [
"string",
"null"
],
"description": "Last returned union key in this period kind"
},
"firstReturnedKey": {
"type": [
"string",
"null"
],
"description": "First returned union key in this period kind"
},
"lastValidPeriodKey": {
"type": [
"string",
"null"
],
"description": "Latest period key containing a valid number"
}
},
"description": "One parameter/period-kind summary",
"additionalProperties": false
},
"description": "Numeric observation summaries with explicit missingness"
},
"expansions": {
"type": "object",
"description": "Requested alias to actual returned member codes",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"description": "Returned alias member"
},
"description": "Returned member codes"
}
},
"locationId": {
"type": "string",
"description": "Stable identity assigned by input position"
},
"parameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"valueKind",
"extra"
],
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"extra": {
"type": "object",
"description": "Additional upstream JSON fields",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"units": {
"type": "string",
"description": "Exact source units without conversion"
},
"longName": {
"type": "string",
"description": "Long parameter name supplied by NASA"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Numeric measurement, numeric category code or orientation text"
}
},
"description": "Returned scientific parameter metadata",
"additionalProperties": false
},
"description": "Returned parameter columns, including dynamic alias members"
},
"sortMetric": {
"type": [
"number",
"null"
],
"description": "Valid numeric metric used for the requested sort, otherwise null"
},
"summaryCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Exact number of summaries for this location when summaries are previews"
},
"omittedParameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"messages"
],
"properties": {
"code": {
"type": "string",
"description": "Requested code with no returned series"
},
"messages": {
"type": "array",
"items": {
"type": "string",
"description": "Applicable NASA message"
},
"description": "Source messages associated with omission"
}
},
"description": "One requested parameter with no returned series",
"additionalProperties": false
},
"description": "Requested parameters omitted by the source, distinct from fill values"
}
},
"description": "Successful location with complete scientific provenance",
"additionalProperties": false
},
"description": "Successful locations in input or explicit metric order"
},
"summaries": {
"type": "array",
"items": {
"type": "object",
"required": [
"parameter",
"locationId",
"bucket",
"year",
"method",
"includedPeriods",
"returnedPeriods",
"expectedPeriods",
"complete",
"windowClipped",
"mean"
],
"properties": {
"mean": {
"type": [
"number",
"null"
],
"description": "Valid-only arithmetic mean, null without valid values"
},
"year": {
"type": [
"number",
"null"
],
"description": "Calendar or DJF ending year; null for climatology"
},
"units": {
"type": "string",
"description": "Exact source units"
},
"bucket": {
"enum": [
"annual",
"DJF",
"MAM",
"JJA",
"SON"
],
"type": "string",
"description": "Calendar bucket independent of hemisphere"
},
"method": {
"enum": [
"observation_mean",
"monthly_mean",
"source_annual",
"climatology_month_mean"
],
"type": "string",
"description": "Exact aggregation method"
},
"complete": {
"type": "boolean",
"description": "Whether included count equals expected count"
},
"parameter": {
"type": "string",
"description": "Numeric parameter code"
},
"locationId": {
"type": "string",
"description": "Stable input-position location identity"
},
"windowClipped": {
"type": "boolean",
"description": "Whether the request cuts this calendar bucket"
},
"expectedPeriods": {
"type": "number",
"description": "Full-calendar expected observation count"
},
"includedPeriods": {
"type": "number",
"description": "Valid numeric observations included"
},
"returnedPeriods": {
"type": "number",
"description": "Returned union keys in the bucket"
}
},
"description": "One valid-only annual or seasonal bucket",
"additionalProperties": false
},
"description": "Independent per-location calendar summaries"
},
"comparable": {
"type": "boolean",
"description": "Whether every returned numeric metric has consistent known units across successful sites"
},
"parameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"valueKind",
"extra"
],
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]*$",
"maxLength": 128,
"minLength": 1,
"description": "NASA POWER parameter code"
},
"extra": {
"type": "object",
"description": "Additional upstream JSON fields",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"units": {
"type": "string",
"description": "Exact source units without conversion"
},
"longName": {
"type": "string",
"description": "Long parameter name supplied by NASA"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Numeric measurement, numeric category code or orientation text"
}
},
"description": "Returned scientific parameter metadata",
"additionalProperties": false
},
"description": "Returned parameter columns, including dynamic alias members"
},
"summaryDatasets": {
"type": "object",
"required": [
"buckets",
"locations"
],
"properties": {
"buckets": {
"type": "object",
"required": [
"canvas_id",
"table",
"rowCount",
"expiresAt",
"columns",
"describeTool",
"queryTool"
],
"properties": {
"table": {
"type": "string",
"description": "Registered full-data table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Exact registered column name"
},
"type": {
"type": "string",
"description": "Explicit DuckDB column type"
},
"units": {
"type": "string",
"description": "Exact source units for scientific columns"
},
"nullable": {
"type": "boolean",
"description": "Whether this column permits null values"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value kind when applicable"
}
},
"description": "One explicitly typed staged column",
"additionalProperties": false
},
"description": "Explicit schema of every staged column"
},
"rowCount": {
"type": "number",
"description": "Exact full staged row count"
},
"canvas_id": {
"type": "string",
"description": "Explicit process-local canvas access token"
},
"expiresAt": {
"type": "string",
"description": "Table expiry timestamp"
},
"queryTool": {
"type": "string",
"const": "nasa_power_dataframe_query",
"description": "Tool for querying this dataset"
},
"describeTool": {
"type": "string",
"const": "nasa_power_dataframe_describe",
"description": "Tool for inspecting this dataset"
}
},
"description": "Complete bucket summaries ordered by summaryIndex",
"additionalProperties": false
},
"locations": {
"type": "object",
"required": [
"canvas_id",
"table",
"rowCount",
"expiresAt",
"columns",
"describeTool",
"queryTool"
],
"properties": {
"table": {
"type": "string",
"description": "Registered full-data table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Exact registered column name"
},
"type": {
"type": "string",
"description": "Explicit DuckDB column type"
},
"units": {
"type": "string",
"description": "Exact source units for scientific columns"
},
"nullable": {
"type": "boolean",
"description": "Whether this column permits null values"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value kind when applicable"
}
},
"description": "One explicitly typed staged column",
"additionalProperties": false
},
"description": "Explicit schema of every staged column"
},
"rowCount": {
"type": "number",
"description": "Exact full staged row count"
},
"canvas_id": {
"type": "string",
"description": "Explicit process-local canvas access token"
},
"expiresAt": {
"type": "string",
"description": "Table expiry timestamp"
},
"queryTool": {
"type": "string",
"const": "nasa_power_dataframe_query",
"description": "Tool for querying this dataset"
},
"describeTool": {
"type": "string",
"const": "nasa_power_dataframe_describe",
"description": "Tool for inspecting this dataset"
}
},
"description": "Complete per-location summaries with locationId, ordered by summaryIndex",
"additionalProperties": false
}
},
"description": "Full summary handles when summary arrays are bounded previews; summaryIndex restores original order",
"additionalProperties": false
},
"possibleSharedGridCell": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string",
"description": "Location identity"
},
"description": "Locations with identical complete values and elevation"
},
"description": "Possible shared-grid notice only; coordinates are not asserted grid centers"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true
}nasa_power_search_parameters — Search NASA POWER parameters
Find parameter codes supported by a community and temporalResolution. Every whitespace-separated filter token must match code, name or definition, ignoring case. Filtering covers the complete dictionary before sorted pagination. Codes NASA lists but does not serve at that resolution are left out, and a notice names any the filter matched. Blank filter browses all codes; pass returned codes to a producing tool.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Positive maximum entry count; values above 100 use an effective cap of 100"
},
"filter": {
"type": "string",
"default": "",
"maxLength": 256,
"description": "Local case-insensitive code/name/definition token filter"
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based offset within all filtered matches"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"default": "RE",
"description": "NASA community controlling parameter units"
},
"temporalResolution": {
"enum": [
"hourly",
"daily",
"monthly",
"climatology"
],
"type": "string",
"default": "daily",
"description": "Source temporal resolution"
}
},
"additionalProperties": false
}{
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"community",
"temporalResolution",
"filter",
"offset",
"limit",
"total",
"hasMore",
"truncated",
"entries"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"upstream_rate_limited",
"request_queue_full",
"dataset_limit",
"upstream_rejected"
],
"description": "Machine-readable failure mode. Declared by this tool: `upstream_rate_limited`: NASA rate limits dictionary retrieval. `request_queue_full`: Source scheduling capacity is exhausted. `dataset_limit`: Dictionary response exceeds the bounded source body limit. `upstream_rejected`: NASA rejects dictionary retrieval. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"limit": {
"type": "number",
"description": "Effective maximum entry count, capped at 100"
},
"total": {
"type": "number",
"description": "Total matches across the complete dictionary, excluding codes NASA does not serve"
},
"filter": {
"type": "string",
"description": "Effective local token filter"
},
"notice": {
"type": "string",
"description": "Effective output cap, matched codes left out because NASA does not serve them at this resolution, or guidance when the complete filter has no matches"
},
"offset": {
"type": "number",
"description": "Requested filtered offset"
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "Exact source parameter code"
},
"name": {
"type": [
"string",
"null"
],
"description": "NASA parameter name"
},
"type": {
"type": [
"string",
"null"
],
"description": "Source parameter family"
},
"units": {
"type": [
"string",
"null"
],
"description": "Exact parameter units for the selected pair"
},
"inputs": {
"$ref": "#/$defs/__schema0",
"description": "Original calculation inputs, including explicit null"
},
"source": {
"type": [
"string",
"null"
],
"description": "Reported source dataset or calculation provider"
},
"temporal": {
"type": "string",
"description": "Source temporal resolution designation"
},
"community": {
"type": "string",
"description": "Source community designation"
},
"calculated": {
"type": "boolean",
"description": "Whether NASA reports this parameter as calculated"
},
"definition": {
"type": [
"string",
"null"
],
"description": "NASA parameter definition preserved verbatim"
}
},
"description": "One complete source dictionary entry",
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"description": "Matching complete source entries"
},
"hasMore": {
"type": "boolean",
"description": "Whether another filtered page follows"
},
"community": {
"enum": [
"RE",
"SB",
"AG"
],
"type": "string",
"description": "NASA community controlling parameter units"
},
"truncated": {
"type": "boolean",
"description": "Whether matching entries remain after this page"
},
"temporalResolution": {
"enum": [
"hourly",
"daily",
"monthly",
"climatology"
],
"type": "string",
"description": "Source temporal resolution"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}nasa_power_list_reference — List NASA POWER reference
Explain exact presets, communities and units, source coverage, missing values, wind corrections or current dataframe availability. Choose topic presets before a producing call, or coverage when revising a date window. Reference entries include public documentation and verification dates.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"topic": {
"enum": [
"presets",
"communities",
"coverage",
"missing_data",
"wind_surfaces",
"dataframes"
],
"type": "string",
"default": "presets",
"description": "Reference topic"
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"topic",
"verifiedOn",
"documentationUrls",
"entries",
"guidance"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"topic": {
"enum": [
"presets",
"communities",
"coverage",
"missing_data",
"wind_surfaces",
"dataframes"
],
"type": "string",
"description": "Reference topic"
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"description"
],
"properties": {
"code": {
"type": "string",
"description": "Reference identifier"
},
"aliases": {
"type": "array",
"items": {
"type": "string"
},
"description": "Accepted one-to-one aliases"
},
"members": {
"type": "array",
"items": {
"type": "string"
},
"description": "Verified returned members of a request alias; new source members remain preserved"
},
"available": {
"type": "boolean",
"description": "Whether the analytical provider is configured"
},
"parameters": {
"type": "array",
"items": {
"type": "string"
},
"description": "Exact requested preset codes"
},
"description": {
"type": "string",
"description": "Scientific meaning and limitations"
},
"dropEnabled": {
"type": "boolean",
"description": "Whether explicit table removal is enabled"
},
"resolutions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Supported source temporal resolutions"
},
"earliestDate": {
"type": "string",
"description": "Earliest source date for this family"
},
"tableTtlInMs": {
"type": "number",
"description": "Sliding staged-table TTL in milliseconds"
},
"canvasTtlInMs": {
"type": "number",
"description": "Sliding canvas TTL in milliseconds"
},
"maximumInMeters": {
"type": "number",
"description": "Maximum supported wind height in meters"
},
"minimumInMeters": {
"type": "number",
"description": "Minimum supported wind height in meters"
},
"absoluteLifetimeInMs": {
"type": "number",
"description": "Absolute canvas lifetime in milliseconds"
}
},
"description": "One typed scientific reference entry",
"additionalProperties": false
},
"description": "Typed entries for the selected reference topic"
},
"guidance": {
"type": "array",
"items": {
"type": "string"
},
"description": "Scientific interpretation and next-call guidance"
},
"verifiedOn": {
"type": "string",
"description": "Date the source reference was verified"
},
"documentationUrls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical public NASA documentation links"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}nasa_power_dataframe_describe — Describe staged POWER tables
Inspect table schemas, physical units and original scientific provenance within a canvas_id returned by a producing POWER tool. Tokens are process-local capabilities; only the supplied canvas is inspected.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"canvas_id"
],
"properties": {
"table": {
"type": "string",
"description": "One table name from a producing response; omit to inspect this canvas"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Canvas token returned by a producing POWER tool"
}
},
"additionalProperties": false
}{
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"canvas_id",
"expiresAt",
"tables"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"query_limit",
"canvas_unavailable",
"canvas_not_found",
"canvas_busy",
"missing_table"
],
"description": "Machine-readable failure mode. Declared by this tool: `query_limit`: Complete table provenance exceeds the structured or rendered response budget. `canvas_unavailable`: Analytical workspace is disabled or native support is unavailable. `canvas_not_found`: Token is absent, expired or belongs to another tenant. `canvas_busy`: Another query, staging or removal occupies this canvas. `missing_table`: The named table is absent. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"tables": {
"type": "array",
"items": {
"type": "object",
"required": [
"table",
"rowCount",
"expiresAt",
"columns",
"provenance"
],
"properties": {
"table": {
"type": "string",
"description": "Canvas-local table name"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"nullable"
],
"properties": {
"name": {
"type": "string",
"description": "Column name"
},
"type": {
"type": "string",
"description": "Actual native SQL type"
},
"units": {
"type": "string",
"description": "Source physical units"
},
"nullable": {
"type": "boolean",
"description": "Whether SQL NULL is permitted"
},
"valueKind": {
"enum": [
"number",
"categorical",
"orientation"
],
"type": "string",
"description": "Scientific value interpretation"
}
},
"description": "One native column with its scientific interpretation",
"additionalProperties": false
},
"description": "Actual schema with source interpretation"
},
"rowCount": {
"type": "number",
"description": "Exact staged row count"
},
"expiresAt": {
"type": [
"string",
"null"
],
"description": "Current table expiry when independently tracked"
},
"provenance": {
"type": "object",
"required": [
"sourceTool",
"envelope",
"createdAt"
],
"properties": {
"envelope": {
"type": "object",
"description": "Complete scientific envelope excluding observation rows",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"createdAt": {
"type": "string",
"description": "Table creation timestamp"
},
"sourceTool": {
"type": "string",
"description": "Tool that staged this dataset"
}
},
"description": "Original scientific provenance",
"additionalProperties": false
}
},
"description": "One staged table and its source provenance",
"additionalProperties": false
},
"description": "Only tables within the supplied canvas"
},
"canvas_id": {
"type": "string",
"description": "Explicit canvas capability token"
},
"expiresAt": {
"type": "string",
"description": "Current canvas expiry"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}nasa_power_dataframe_query — Query staged POWER observations
Run one read-only SELECT over tables in an explicitly supplied canvas_id. Inspect names and units with nasa_power_dataframe_describe. External files, imports, writes and system catalogs are refused. Returns at most 1,000 rows and 40,000 JSON characters; truncated rowCount counts only materialized rows.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"canvas_id",
"sql"
],
"properties": {
"sql": {
"type": "string",
"maxLength": 16384,
"minLength": 1,
"description": "One read-only SELECT, at most 16,384 characters"
},
"rowLimit": {
"type": "integer",
"default": 100,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Positive maximum row count; values above 1,000 use an effective cap of 1,000"
},
"canvas_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{10}$",
"description": "Canvas token returned by a producing POWER tool"
}
},
"additionalProperties": false
}{
"type": "object",
"$defs": {
"__schema0": {
"anyOf": [
{
"type": "null"
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
}
]
}
},
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"canvas_id",
"columns",
"rows",
"rowCount",
"shownCount",
"truncated",
"countSemantics"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/__schema0"
}
},
"description": "JSON-safe projected values"
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"canvas_unavailable",
"canvas_not_found",
"canvas_busy",
"missing_table",
"invalid_sql",
"sql_execution_error",
"non_select_statement",
"multi_statement",
"denied_function",
"system_catalog_access",
"sql_read_only",
"plan_operator_not_allowed",
"query_limit"
],
"description": "Machine-readable failure mode. Declared by this tool: `canvas_unavailable`: Analytical workspace is disabled or native support is unavailable. `canvas_not_found`: Token is absent, expired or belongs to another tenant. `canvas_busy`: Another operation occupies this canvas, or the process query pool is full. `missing_table`: SQL names an absent table. `invalid_sql`: SQL has invalid syntax or binding. `sql_execution_error`: SQL conversion or evaluation fails. `non_select_statement`: SQL is not a SELECT. `multi_statement`: SQL contains several statements. `denied_function`: SQL invokes a denied function. `system_catalog_access`: SQL accesses system catalogs. `sql_read_only`: SQL reaches outside read-only staged data. `plan_operator_not_allowed`: SQL plan uses an unavailable operator. `query_limit`: SQL length or projected values exceed the response budget. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"notice": {
"type": "string",
"description": "Effective output row cap when the requested limit is larger"
},
"columns": {
"type": "array",
"items": {
"type": "string"
},
"description": "Projected SQL column names"
},
"rowCount": {
"type": "number",
"description": "Number of materialized rows; capped when truncated"
},
"canvas_id": {
"type": "string",
"description": "Explicit canvas capability token"
},
"truncated": {
"type": "boolean",
"description": "Whether additional result rows exist"
},
"shownCount": {
"type": "number",
"description": "Rows shown in this response"
},
"countSemantics": {
"enum": [
"exact",
"materialized_prefix"
],
"type": "string",
"description": "Meaning of rowCount"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}Prompts
0 advertised
Resources
1 advertised
nasa-power-guide
Plan nasa_power_* calls for NASA POWER solar, wind, temperature, precipitation, and degree-day history. Covers which tool answers a typical-month versus a dated question, overlapping data calls, grid-cell size, data freshness, rate versus total units, degree days, and SQL over staged tables. Use before solar sizing, wind screening, site comparison, regional, or agroclimate work with these tools.
skill://nasa-power-guide/SKILL.mdio.modelcontextprotocol/skills
skill://{+path}30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 804 ms
- 95th percentile latency
- 804 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 804 ms · metadata changed · 8 tool(s), 1 resource(s), 1 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http nasa-power-mcp-server-caseyjhand https://nasa-power.caseyjhand.com/mcpCodex
codex mcp add nasa-power-mcp-server-caseyjhand --url https://nasa-power.caseyjhand.com/mcpCursor
{
"mcpServers": {
"nasa-power-mcp-server-caseyjhand": {
"url": "https://nasa-power.caseyjhand.com/mcp"
}
}
}Cline
{
"mcpServers": {
"nasa-power-mcp-server-caseyjhand": {
"type": "streamableHttp",
"url": "https://nasa-power.caseyjhand.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"nasa-power-mcp-server-caseyjhand": {
"type": "http",
"url": "https://nasa-power.caseyjhand.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http nasa-power-mcp-server-caseyjhand https://nasa-power.caseyjhand.com/mcpClaude Desktop
{
"mcpServers": {
"nasa-power-mcp-server-caseyjhand": {
"url": "https://nasa-power.caseyjhand.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"nasa-power-mcp-server-caseyjhand": {
"serverUrl": "https://nasa-power.caseyjhand.com/mcp"
}
}
}Let your agent find its tools
Find servers like nasa-power-mcp-server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.