이 MCP로 할 수 있는 일
Discovers, validates, and queries NOAA and ECMWF weather datasets, parameters, model runs, and time series through the GribStream API.
도구
입력 스키마
{'type': 'object', 'required': ['dataset', 'request'], 'properties': {'accept': {'enum': ['text/csv', 'application/json', 'application/ndjson', 'application/x-ndjson', 'application/vnd.apache.parquet', 'application/x-parquet', 'application/parquet'], 'type': 'string', 'description': 'Desired response format for the eventual HTTP request. Prefer application/vnd.apache.parquet for dense grids and large typed tabular results.'}, 'dataset': {'type': 'string', 'description': 'Dataset code, for example gfs, ifsoper, nbm, hrrr, or urma.'}, 'request': {'type': 'object', 'properties': {'asOf': {'type': 'string', 'description': 'Do not set asOf unless the user explicitly asks for backtesting, time travel, what was known then, or a historical model-run cutoff. Omit asOf for latest or best-available forecasts because it filters out forecast runs newer than the cutoff and can make recent data look missing. This is a UTC model-run-time cutoff for /timeseries, not a live API availability timestamp.'}, 'grid': {'type': 'object', 'required': ['minLatitude', 'maxLatitude', 'minLongitude', 'maxLongitude', 'step'], 'properties': {'step': {'type': 'number', 'description': 'Grid spacing in degrees. Must be greater than 0.'}, 'maxLatitude': {'type': 'number'}, 'minLatitude': {'type': 'number'}, 'maxLongitude': {'type': 'number'}, 'minLongitude': {'type': 'number'}}, 'description': 'Optional regular latitude/longitude grid. Use this instead of or in addition to coordinates. The API preserves the requested step and does not silently coarsen fine grids. The default limit is 120000 expanded coordinates; account-specific plan or token settings may set a different maximum up to 1050000, enough for a full native 0.25-degree global GFS grid, and an oversized-response error reports the applicable maximum. Use URL delivery for dense grids before considering spatial tiling.', 'additionalProperties': False}, 'filter': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Optional row filter expression evaluated from variable aliases.', 'additionalProperties': True}, 'members': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Optional ensemble member numbers.'}, 'fromTime': {'type': 'string', 'description': 'Inclusive UTC valid-time range start for /timeseries, for example 2025-05-01T00:00:00Z. Must be earlier than untilTime; use timesList for one exact valid time.'}, 'timesList': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Exact UTC valid times for /timeseries, or exact UTC model run times for /runs. Use this for one exact time instead of setting range bounds equal.'}, 'untilTime': {'type': 'string', 'description': 'Exclusive UTC valid-time range end for /timeseries, for example 2025-05-01T06:00:00Z. Must be later than fromTime; equal bounds select no times.'}, 'variables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'level', 'info'], 'properties': {'info': {'type': 'string', 'description': 'Exact info string. Use an empty string when the catalog selector has no info value.'}, 'name': {'type': 'string', 'description': 'Exact case-sensitive parameter short name, for example TMP.'}, 'alias': {'type': 'string', 'description': 'Optional response field name. Strongly recommended.'}, 'level': {'type': 'string', 'description': 'Exact level string, for example 2 m above ground.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide intermediate variables used only by expressions.'}}, 'additionalProperties': False}, 'description': 'Variable selectors. This exact field name is required. Do not use parameters, parameter, variable, selector, or selectors. Values must be exact case-sensitive selector tuples discovered from catalog tools.'}, 'maxHorizon': {'type': 'integer', 'description': 'Optional maximum lead time in hours.'}, 'minHorizon': {'type': 'integer', 'description': 'Optional minimum lead time in hours.'}, 'coordinates': {'type': 'array', 'items': {'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude in decimal degrees.'}, 'lon': {'type': 'number', 'description': 'Longitude in decimal degrees.'}, 'name': {'type': 'string', 'description': 'Optional coordinate label copied into the response.'}}, 'additionalProperties': False}, 'description': 'Point coordinates. This exact field name is required. Do not use location, coord, coords, latitude/longitude at top level, or any singular replacement.'}, 'expressions': {'type': 'array', 'items': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Expression object.', 'additionalProperties': True}, 'description': 'Optional derived variables evaluated from variable aliases.'}, 'forecastedFrom': {'type': 'string', 'description': 'Inclusive UTC model-run-time range start for /runs. Must be earlier than forecastedUntil; use timesList for one exact model run time.'}, 'forecastedUntil': {'type': 'string', 'description': 'Exclusive UTC model-run-time range end for /runs. Must be later than forecastedFrom; equal bounds select no times.'}, 'includeMetadata': {'type': 'array', 'items': {'enum': ['index_updated_at'], 'type': 'string'}, 'description': 'Optional additional row metadata. The only supported value is index_updated_at. Do not request forecasted_at or forecasted_time here; both are regular response columns returned automatically.'}}, 'description': 'Runs request body. Use timesList for exact UTC model run times, or the half-open range forecastedFrom+forecastedUntil where forecastedFrom is inclusive, forecastedUntil is exclusive, and forecastedFrom must be earlier than forecastedUntil. Equal bounds select no times. Coordinates must be in request.coordinates, and variable selectors must be in request.variables.', 'additionalProperties': True}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['valid', 'endpoint', 'method', 'url', 'headers', 'body', 'curl', 'timestamp_semantics'], 'properties': {'url': {'type': 'string', 'description': 'Public GribStream API URL.'}, 'body': {'type': 'object', 'description': 'GribStream API request body.', 'additionalProperties': True}, 'curl': {'type': 'string', 'description': 'Copy-pasteable curl command.'}, 'valid': {'type': 'boolean', 'description': 'Whether the request body passed local shape, selector, and expression checks.'}, 'errors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Validation errors.'}, 'method': {'type': 'string', 'description': 'HTTP method for the generated request.'}, 'headers': {'type': 'object', 'description': 'HTTP headers for the generated request. Includes Accept-Encoding: gzip so large direct API responses can be transferred compressed when the client supports decompression.', 'additionalProperties': {'type': 'string'}}, 'endpoint': {'enum': ['timeseries', 'runs'], 'type': 'string', 'description': 'GribStream endpoint.'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Validation warnings.'}, 'timestamp_semantics': {'type': 'string', 'description': 'Endpoint-specific timestamp guidance.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['dataset', 'request'], 'properties': {'accept': {'enum': ['text/csv', 'application/json', 'application/ndjson', 'application/x-ndjson', 'application/vnd.apache.parquet', 'application/x-parquet', 'application/parquet'], 'type': 'string', 'description': 'Desired response format for the eventual HTTP request. Prefer application/vnd.apache.parquet for dense grids and large typed tabular results.'}, 'dataset': {'type': 'string', 'description': 'Dataset code, for example gfs, ifsoper, nbm, hrrr, or urma.'}, 'request': {'type': 'object', 'properties': {'asOf': {'type': 'string', 'description': 'Do not set asOf unless the user explicitly asks for backtesting, time travel, what was known then, or a historical model-run cutoff. Omit asOf for latest or best-available forecasts because it filters out forecast runs newer than the cutoff and can make recent data look missing. This is a UTC model-run-time cutoff for /timeseries, not a live API availability timestamp.'}, 'grid': {'type': 'object', 'required': ['minLatitude', 'maxLatitude', 'minLongitude', 'maxLongitude', 'step'], 'properties': {'step': {'type': 'number', 'description': 'Grid spacing in degrees. Must be greater than 0.'}, 'maxLatitude': {'type': 'number'}, 'minLatitude': {'type': 'number'}, 'maxLongitude': {'type': 'number'}, 'minLongitude': {'type': 'number'}}, 'description': 'Optional regular latitude/longitude grid. Use this instead of or in addition to coordinates. The API preserves the requested step and does not silently coarsen fine grids. The default limit is 120000 expanded coordinates; account-specific plan or token settings may set a different maximum up to 1050000, enough for a full native 0.25-degree global GFS grid, and an oversized-response error reports the applicable maximum. Use URL delivery for dense grids before considering spatial tiling.', 'additionalProperties': False}, 'filter': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Optional row filter expression evaluated from variable aliases.', 'additionalProperties': True}, 'members': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Optional ensemble member numbers.'}, 'fromTime': {'type': 'string', 'description': 'Inclusive UTC valid-time range start for /timeseries, for example 2025-05-01T00:00:00Z. Must be earlier than untilTime; use timesList for one exact valid time.'}, 'timesList': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Exact UTC valid times for /timeseries, or exact UTC model run times for /runs. Use this for one exact time instead of setting range bounds equal.'}, 'untilTime': {'type': 'string', 'description': 'Exclusive UTC valid-time range end for /timeseries, for example 2025-05-01T06:00:00Z. Must be later than fromTime; equal bounds select no times.'}, 'variables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'level', 'info'], 'properties': {'info': {'type': 'string', 'description': 'Exact info string. Use an empty string when the catalog selector has no info value.'}, 'name': {'type': 'string', 'description': 'Exact case-sensitive parameter short name, for example TMP.'}, 'alias': {'type': 'string', 'description': 'Optional response field name. Strongly recommended.'}, 'level': {'type': 'string', 'description': 'Exact level string, for example 2 m above ground.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide intermediate variables used only by expressions.'}}, 'additionalProperties': False}, 'description': 'Variable selectors. This exact field name is required. Do not use parameters, parameter, variable, selector, or selectors. Values must be exact case-sensitive selector tuples discovered from catalog tools.'}, 'maxHorizon': {'type': 'integer', 'description': 'Optional maximum lead time in hours.'}, 'minHorizon': {'type': 'integer', 'description': 'Optional minimum lead time in hours.'}, 'coordinates': {'type': 'array', 'items': {'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude in decimal degrees.'}, 'lon': {'type': 'number', 'description': 'Longitude in decimal degrees.'}, 'name': {'type': 'string', 'description': 'Optional coordinate label copied into the response.'}}, 'additionalProperties': False}, 'description': 'Point coordinates. This exact field name is required. Do not use location, coord, coords, latitude/longitude at top level, or any singular replacement.'}, 'expressions': {'type': 'array', 'items': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Expression object.', 'additionalProperties': True}, 'description': 'Optional derived variables evaluated from variable aliases.'}, 'forecastedFrom': {'type': 'string', 'description': 'Inclusive UTC model-run-time range start for /runs. Must be earlier than forecastedUntil; use timesList for one exact model run time.'}, 'forecastedUntil': {'type': 'string', 'description': 'Exclusive UTC model-run-time range end for /runs. Must be later than forecastedFrom; equal bounds select no times.'}, 'includeMetadata': {'type': 'array', 'items': {'enum': ['index_updated_at'], 'type': 'string'}, 'description': 'Optional additional row metadata. The only supported value is index_updated_at. Do not request forecasted_at or forecasted_time here; both are regular response columns returned automatically.'}}, 'description': 'Timeseries request body. Use timesList for exact UTC valid times, or the half-open range fromTime+untilTime where fromTime is inclusive, untilTime is exclusive, and fromTime must be earlier than untilTime. Equal bounds select no times. Omit asOf unless the user explicitly asks for backtesting, time travel, what was known then, or a historical model-run cutoff. Coordinates must be in request.coordinates, and variable selectors must be in request.variables.', 'additionalProperties': True}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['valid', 'endpoint', 'method', 'url', 'headers', 'body', 'curl', 'timestamp_semantics'], 'properties': {'url': {'type': 'string', 'description': 'Public GribStream API URL.'}, 'body': {'type': 'object', 'description': 'GribStream API request body.', 'additionalProperties': True}, 'curl': {'type': 'string', 'description': 'Copy-pasteable curl command.'}, 'valid': {'type': 'boolean', 'description': 'Whether the request body passed local shape, selector, and expression checks.'}, 'errors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Validation errors.'}, 'method': {'type': 'string', 'description': 'HTTP method for the generated request.'}, 'headers': {'type': 'object', 'description': 'HTTP headers for the generated request. Includes Accept-Encoding: gzip so large direct API responses can be transferred compressed when the client supports decompression.', 'additionalProperties': {'type': 'string'}}, 'endpoint': {'enum': ['timeseries', 'runs'], 'type': 'string', 'description': 'GribStream endpoint.'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Validation warnings.'}, 'timestamp_semantics': {'type': 'string', 'description': 'Endpoint-specific timestamp guidance.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['dataset'], 'properties': {'dataset': {'type': 'string', 'description': 'Dataset code, for example gfs, nbm, ifsoper, hrrr, urma.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'description': 'Public GribStream dataset metadata.', 'additionalProperties': True}
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'description': 'GribStream expression language rules, examples, and available math functions.', 'additionalProperties': True}
입력 스키마
{'type': 'object', 'required': ['dataset', 'parameter'], 'properties': {'dataset': {'type': 'string', 'description': 'Dataset code, for example ifsoper.'}, 'parameter': {'type': 'string', 'description': 'Exact case-sensitive parameter short name, for example 100u, 2t, TMP, or APCP.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'description': 'Detailed parameter metadata with exact selector variations.', 'additionalProperties': True}
입력 스키마
{'type': 'object', 'properties': {'tag': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Tag or list of tags. Multiple tags use AND semantics in the API.'}, 'code': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Dataset code or list of dataset codes, for example gfs or ["gfs", "ifsoper"].'}, 'family': {'type': 'string', 'description': 'Dataset family filter, for example gfs, ifs, nbm, hrrr, rap, rtma, urma.'}, 'is_ensemble': {'type': 'boolean', 'description': 'Filter to ensemble datasets when true, or deterministic datasets when false.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['datasets'], 'properties': {'datasets': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Public GribStream dataset summaries.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['dataset'], 'properties': {'dataset': {'type': 'string', 'description': 'Dataset code, for example ifsoper.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['parameters'], 'properties': {'parameters': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Parameter summaries for one GribStream dataset.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'properties': {'dataset': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Optional dataset code or list of dataset codes to filter supported shared parameters.'}, 'dataset_mode': {'enum': ['any', 'all'], 'type': 'string', 'description': 'Whether every listed dataset must support the preset or any one may support it.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['shared_parameters'], 'properties': {'shared_parameters': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Shared weather parameter summaries.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['dataset', 'request'], 'properties': {'accept': {'enum': ['text/csv', 'application/json', 'application/ndjson', 'application/x-ndjson', 'application/vnd.apache.parquet', 'application/x-parquet', 'application/parquet'], 'type': 'string', 'description': 'Desired response format. Defaults to text/csv for compatibility. For dense grids and large tabular analysis, use application/vnd.apache.parquet only when a compatible reader is already known to be available. If reader availability is unknown, do not probe or install packages; use text/csv with delivery=url immediately.'}, 'dataset': {'type': 'string', 'description': 'Dataset code, for example gfs, ifsoper, nbm, hrrr, or urma.'}, 'request': {'type': 'object', 'properties': {'asOf': {'type': 'string', 'description': 'Do not set asOf unless the user explicitly asks for backtesting, time travel, what was known then, or a historical model-run cutoff. Omit asOf for latest or best-available forecasts because it filters out forecast runs newer than the cutoff and can make recent data look missing. This is a UTC model-run-time cutoff for /timeseries, not a live API availability timestamp.'}, 'grid': {'type': 'object', 'required': ['minLatitude', 'maxLatitude', 'minLongitude', 'maxLongitude', 'step'], 'properties': {'step': {'type': 'number', 'description': 'Grid spacing in degrees. Must be greater than 0.'}, 'maxLatitude': {'type': 'number'}, 'minLatitude': {'type': 'number'}, 'maxLongitude': {'type': 'number'}, 'minLongitude': {'type': 'number'}}, 'description': 'Optional regular latitude/longitude grid. Use this instead of or in addition to coordinates. The API preserves the requested step and does not silently coarsen fine grids. The default limit is 120000 expanded coordinates; account-specific plan or token settings may set a different maximum up to 1050000, enough for a full native 0.25-degree global GFS grid, and an oversized-response error reports the applicable maximum. Use URL delivery for dense grids before considering spatial tiling.', 'additionalProperties': False}, 'filter': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Optional row filter expression evaluated from variable aliases.', 'additionalProperties': True}, 'members': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Optional ensemble member numbers.'}, 'fromTime': {'type': 'string', 'description': 'Inclusive UTC valid-time range start for /timeseries, for example 2025-05-01T00:00:00Z. Must be earlier than untilTime; use timesList for one exact valid time.'}, 'timesList': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Exact UTC valid times for /timeseries, or exact UTC model run times for /runs. Use this for one exact time instead of setting range bounds equal.'}, 'untilTime': {'type': 'string', 'description': 'Exclusive UTC valid-time range end for /timeseries, for example 2025-05-01T06:00:00Z. Must be later than fromTime; equal bounds select no times.'}, 'variables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'level', 'info'], 'properties': {'info': {'type': 'string', 'description': 'Exact info string. Use an empty string when the catalog selector has no info value.'}, 'name': {'type': 'string', 'description': 'Exact case-sensitive parameter short name, for example TMP.'}, 'alias': {'type': 'string', 'description': 'Optional response field name. Strongly recommended.'}, 'level': {'type': 'string', 'description': 'Exact level string, for example 2 m above ground.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide intermediate variables used only by expressions.'}}, 'additionalProperties': False}, 'description': 'Variable selectors. This exact field name is required. Do not use parameters, parameter, variable, selector, or selectors. Values must be exact case-sensitive selector tuples discovered from catalog tools.'}, 'maxHorizon': {'type': 'integer', 'description': 'Optional maximum lead time in hours.'}, 'minHorizon': {'type': 'integer', 'description': 'Optional minimum lead time in hours.'}, 'coordinates': {'type': 'array', 'items': {'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude in decimal degrees.'}, 'lon': {'type': 'number', 'description': 'Longitude in decimal degrees.'}, 'name': {'type': 'string', 'description': 'Optional coordinate label copied into the response.'}}, 'additionalProperties': False}, 'description': 'Point coordinates. This exact field name is required. Do not use location, coord, coords, latitude/longitude at top level, or any singular replacement.'}, 'expressions': {'type': 'array', 'items': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Expression object.', 'additionalProperties': True}, 'description': 'Optional derived variables evaluated from variable aliases.'}, 'forecastedFrom': {'type': 'string', 'description': 'Inclusive UTC model-run-time range start for /runs. Must be earlier than forecastedUntil; use timesList for one exact model run time.'}, 'forecastedUntil': {'type': 'string', 'description': 'Exclusive UTC model-run-time range end for /runs. Must be later than forecastedFrom; equal bounds select no times.'}, 'includeMetadata': {'type': 'array', 'items': {'enum': ['index_updated_at'], 'type': 'string'}, 'description': 'Optional additional row metadata. The only supported value is index_updated_at. Do not request forecasted_at or forecasted_time here; both are regular response columns returned automatically.'}}, 'description': 'Runs request body. Use timesList for exact UTC model run times, or the half-open range forecastedFrom+forecastedUntil where forecastedFrom is inclusive, forecastedUntil is exclusive, and forecastedFrom must be earlier than forecastedUntil. Equal bounds select no times. Coordinates must be in request.coordinates, and variable selectors must be in request.variables.', 'additionalProperties': True}, 'delivery': {'enum': ['inline', 'url'], 'type': 'string', 'description': 'Optional result delivery mode. Set inline for CSV, JSON, or NDJSON in the MCP result, or url for a short-lived signed resource link. Omission defaults to inline for text formats; Parquet always uses URL delivery and rejects delivery=inline. For a resource_link blocked by client network policy, do not retry URL delivery: if a text artifact is at most 10000000 bytes, retry the same request at most once with delivery=inline; otherwise reduce it using the documented split order first.'}, 'max_bytes': {'type': 'integer', 'maximum': 10000000, 'minimum': 1, 'description': 'Maximum inline response bytes to return through MCP for CSV/JSON/NDJSON. Default and server-side maximum are 10000000. This setting does not limit artifacts delivered by signed URL. For dense grids or large tabular results, use delivery=url so MCP returns a short-lived signed HTTPS resource link instead of putting the full dataset into tool output. Prefer application/vnd.apache.parquet only when a compatible Parquet reader is already known to be available. If reader availability is unknown, do not spend tool calls probing or installing packages; use text/csv with delivery=url immediately. Use one grid request, process the downloaded file locally, and never print or serialize the full file into chat or tool output. Do not install a dependency or write a Parquet parser solely for one result. When a real API request limit requires splitting, split by time range first, split variables second, and split coordinates/grid/space last; spatial tiling creates the most extra work.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'uri': {'type': 'string', 'description': 'URI of the result resource. For URL delivery this is the short-lived signed HTTPS URL in the resource_link content block.'}, 'data': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'JSON array response when the GribStream API returns a top-level JSON array.'}, 'rows': {'type': 'integer', 'description': 'Number of tabular data rows in a CSV, NDJSON, or Parquet response. CSV header rows are not counted.'}, 'bytes': {'type': 'integer', 'description': 'Number of bytes in the full inline response or downloadable artifact.'}, 'binary': {'type': 'boolean', 'description': 'Whether the result resource is binary rather than text.'}, 'schema': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Column name.'}, 'type': {'type': 'string', 'description': 'Column type hint.'}}, 'additionalProperties': False}, 'description': 'Best-effort tabular schema. CSV and NDJSON columns are typed as strings unless the client infers richer types; Parquet reports its stored leaf types.'}, 'columns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CSV header columns, keys from the first NDJSON object, or leaf columns read from Parquet metadata.'}, 'dataset': {'type': 'string', 'description': 'Dataset code used for the live query.'}, 'preview': {'type': 'string', 'description': 'Short preview of an inline text response. URL-delivered results omit preview.'}, 'delivery': {'type': 'string', 'description': 'Result delivery mode. URL-delivered results use url; text formats are inline when delivery is omitted.'}, 'endpoint': {'type': 'string', 'description': 'GribStream API endpoint used for the live query, for example timeseries or runs.'}, 'cache_hit': {'type': 'boolean', 'description': 'Whether a URL-delivered artifact was served from the shared short-lived response cache.'}, 'truncated': {'type': 'boolean', 'description': 'Whether the inline tabular response was truncated. Successful live query responses are not truncated; oversized responses return an error instead.'}, 'result_hash': {'type': 'string', 'description': 'SHA-256 hash combining request_hash and response_hash. A short prefix is included in suggested_filename.'}, 'content_type': {'type': 'string', 'description': 'MIME type for a result resource, for example text/csv, application/ndjson, or application/vnd.apache.parquet.'}, 'generated_at': {'type': 'string', 'description': 'UTC timestamp at which a URL-delivered artifact was generated.'}, 'request_hash': {'type': 'string', 'description': 'SHA-256 hash of the endpoint, dataset, response format, and canonical request body.'}, 'response_hash': {'type': 'string', 'description': 'SHA-256 hash of the upstream response body, computed while reading the response.'}, 'split_guidance': {'type': 'string', 'description': 'Recommended split order for oversized MCP live queries.'}, 'ordering_warning': {'type': 'string', 'description': 'Reminder that live query rows are not guaranteed to be sorted.'}, 'fallback_guidance': {'type': 'string', 'description': 'What to do once if client network policy blocks a signed resource link.'}, 'suggested_filename': {'type': 'string', 'description': 'Collision-resistant filename to use when saving this result locally. Use it instead of generic names like timeseries.csv when comparing multiple model or dataset results.'}, 'signed_url_expires_at': {'type': 'string', 'description': 'UTC expiration timestamp for an artifact resource link.'}}, 'description': 'By default, application/json is returned as structured JSON and CSV/NDJSON as inline text resources. Set delivery=url for any supported format to receive a resource_link to the complete file through a short-lived signed HTTPS URL; Parquet always uses URL delivery. Download the exact URL directly without an API token; this consumes the MCP result and is not a direct GribStream API call. Do not use resources/read, and never print, stringify, or base64-encode the full dataset into chat or tool output. If client network policy blocks the link, do not retry URL delivery; follow fallback_guidance. structuredContent contains result metadata such as rows, bytes, delivery, expiration, cache status, and suggested_filename; inline text formats also include a preview and identity hashes. Rows are not guaranteed to be sorted; sort before charting, building complete time series, or detecting missing timestamps. For dense grids or large tabular results, use delivery=url so MCP returns a short-lived signed HTTPS resource link instead of putting the full dataset into tool output. Prefer application/vnd.apache.parquet only when a compatible Parquet reader is already known to be available. If reader availability is unknown, do not spend tool calls probing or installing packages; use text/csv with delivery=url immediately. Use one grid request, process the downloaded file locally, and never print or serialize the full file into chat or tool output. Do not install a dependency or write a Parquet parser solely for one result. When a real API request limit requires splitting, split by time range first, split variables second, and split coordinates/grid/space last; spatial tiling creates the most extra work.', 'additionalProperties': True}
입력 스키마
{'type': 'object', 'required': ['dataset', 'request'], 'properties': {'accept': {'enum': ['text/csv', 'application/json', 'application/ndjson', 'application/x-ndjson', 'application/vnd.apache.parquet', 'application/x-parquet', 'application/parquet'], 'type': 'string', 'description': 'Desired response format. Defaults to text/csv for compatibility. For dense grids and large tabular analysis, use application/vnd.apache.parquet only when a compatible reader is already known to be available. If reader availability is unknown, do not probe or install packages; use text/csv with delivery=url immediately.'}, 'dataset': {'type': 'string', 'description': 'Dataset code, for example gfs, ifsoper, nbm, hrrr, or urma.'}, 'request': {'type': 'object', 'properties': {'asOf': {'type': 'string', 'description': 'Do not set asOf unless the user explicitly asks for backtesting, time travel, what was known then, or a historical model-run cutoff. Omit asOf for latest or best-available forecasts because it filters out forecast runs newer than the cutoff and can make recent data look missing. This is a UTC model-run-time cutoff for /timeseries, not a live API availability timestamp.'}, 'grid': {'type': 'object', 'required': ['minLatitude', 'maxLatitude', 'minLongitude', 'maxLongitude', 'step'], 'properties': {'step': {'type': 'number', 'description': 'Grid spacing in degrees. Must be greater than 0.'}, 'maxLatitude': {'type': 'number'}, 'minLatitude': {'type': 'number'}, 'maxLongitude': {'type': 'number'}, 'minLongitude': {'type': 'number'}}, 'description': 'Optional regular latitude/longitude grid. Use this instead of or in addition to coordinates. The API preserves the requested step and does not silently coarsen fine grids. The default limit is 120000 expanded coordinates; account-specific plan or token settings may set a different maximum up to 1050000, enough for a full native 0.25-degree global GFS grid, and an oversized-response error reports the applicable maximum. Use URL delivery for dense grids before considering spatial tiling.', 'additionalProperties': False}, 'filter': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Optional row filter expression evaluated from variable aliases.', 'additionalProperties': True}, 'members': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Optional ensemble member numbers.'}, 'fromTime': {'type': 'string', 'description': 'Inclusive UTC valid-time range start for /timeseries, for example 2025-05-01T00:00:00Z. Must be earlier than untilTime; use timesList for one exact valid time.'}, 'timesList': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Exact UTC valid times for /timeseries, or exact UTC model run times for /runs. Use this for one exact time instead of setting range bounds equal.'}, 'untilTime': {'type': 'string', 'description': 'Exclusive UTC valid-time range end for /timeseries, for example 2025-05-01T06:00:00Z. Must be later than fromTime; equal bounds select no times.'}, 'variables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'level', 'info'], 'properties': {'info': {'type': 'string', 'description': 'Exact info string. Use an empty string when the catalog selector has no info value.'}, 'name': {'type': 'string', 'description': 'Exact case-sensitive parameter short name, for example TMP.'}, 'alias': {'type': 'string', 'description': 'Optional response field name. Strongly recommended.'}, 'level': {'type': 'string', 'description': 'Exact level string, for example 2 m above ground.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide intermediate variables used only by expressions.'}}, 'additionalProperties': False}, 'description': 'Variable selectors. This exact field name is required. Do not use parameters, parameter, variable, selector, or selectors. Values must be exact case-sensitive selector tuples discovered from catalog tools.'}, 'maxHorizon': {'type': 'integer', 'description': 'Optional maximum lead time in hours.'}, 'minHorizon': {'type': 'integer', 'description': 'Optional minimum lead time in hours.'}, 'coordinates': {'type': 'array', 'items': {'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude in decimal degrees.'}, 'lon': {'type': 'number', 'description': 'Longitude in decimal degrees.'}, 'name': {'type': 'string', 'description': 'Optional coordinate label copied into the response.'}}, 'additionalProperties': False}, 'description': 'Point coordinates. This exact field name is required. Do not use location, coord, coords, latitude/longitude at top level, or any singular replacement.'}, 'expressions': {'type': 'array', 'items': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Expression object.', 'additionalProperties': True}, 'description': 'Optional derived variables evaluated from variable aliases.'}, 'forecastedFrom': {'type': 'string', 'description': 'Inclusive UTC model-run-time range start for /runs. Must be earlier than forecastedUntil; use timesList for one exact model run time.'}, 'forecastedUntil': {'type': 'string', 'description': 'Exclusive UTC model-run-time range end for /runs. Must be later than forecastedFrom; equal bounds select no times.'}, 'includeMetadata': {'type': 'array', 'items': {'enum': ['index_updated_at'], 'type': 'string'}, 'description': 'Optional additional row metadata. The only supported value is index_updated_at. Do not request forecasted_at or forecasted_time here; both are regular response columns returned automatically.'}}, 'description': 'Timeseries request body. Use timesList for exact UTC valid times, or the half-open range fromTime+untilTime where fromTime is inclusive, untilTime is exclusive, and fromTime must be earlier than untilTime. Equal bounds select no times. Omit asOf unless the user explicitly asks for backtesting, time travel, what was known then, or a historical model-run cutoff. Coordinates must be in request.coordinates, and variable selectors must be in request.variables.', 'additionalProperties': True}, 'delivery': {'enum': ['inline', 'url'], 'type': 'string', 'description': 'Optional result delivery mode. Set inline for CSV, JSON, or NDJSON in the MCP result, or url for a short-lived signed resource link. Omission defaults to inline for text formats; Parquet always uses URL delivery and rejects delivery=inline. For a resource_link blocked by client network policy, do not retry URL delivery: if a text artifact is at most 10000000 bytes, retry the same request at most once with delivery=inline; otherwise reduce it using the documented split order first.'}, 'max_bytes': {'type': 'integer', 'maximum': 10000000, 'minimum': 1, 'description': 'Maximum inline response bytes to return through MCP for CSV/JSON/NDJSON. Default and server-side maximum are 10000000. This setting does not limit artifacts delivered by signed URL. For dense grids or large tabular results, use delivery=url so MCP returns a short-lived signed HTTPS resource link instead of putting the full dataset into tool output. Prefer application/vnd.apache.parquet only when a compatible Parquet reader is already known to be available. If reader availability is unknown, do not spend tool calls probing or installing packages; use text/csv with delivery=url immediately. Use one grid request, process the downloaded file locally, and never print or serialize the full file into chat or tool output. Do not install a dependency or write a Parquet parser solely for one result. When a real API request limit requires splitting, split by time range first, split variables second, and split coordinates/grid/space last; spatial tiling creates the most extra work.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'uri': {'type': 'string', 'description': 'URI of the result resource. For URL delivery this is the short-lived signed HTTPS URL in the resource_link content block.'}, 'data': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'JSON array response when the GribStream API returns a top-level JSON array.'}, 'rows': {'type': 'integer', 'description': 'Number of tabular data rows in a CSV, NDJSON, or Parquet response. CSV header rows are not counted.'}, 'bytes': {'type': 'integer', 'description': 'Number of bytes in the full inline response or downloadable artifact.'}, 'binary': {'type': 'boolean', 'description': 'Whether the result resource is binary rather than text.'}, 'schema': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Column name.'}, 'type': {'type': 'string', 'description': 'Column type hint.'}}, 'additionalProperties': False}, 'description': 'Best-effort tabular schema. CSV and NDJSON columns are typed as strings unless the client infers richer types; Parquet reports its stored leaf types.'}, 'columns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CSV header columns, keys from the first NDJSON object, or leaf columns read from Parquet metadata.'}, 'dataset': {'type': 'string', 'description': 'Dataset code used for the live query.'}, 'preview': {'type': 'string', 'description': 'Short preview of an inline text response. URL-delivered results omit preview.'}, 'delivery': {'type': 'string', 'description': 'Result delivery mode. URL-delivered results use url; text formats are inline when delivery is omitted.'}, 'endpoint': {'type': 'string', 'description': 'GribStream API endpoint used for the live query, for example timeseries or runs.'}, 'cache_hit': {'type': 'boolean', 'description': 'Whether a URL-delivered artifact was served from the shared short-lived response cache.'}, 'truncated': {'type': 'boolean', 'description': 'Whether the inline tabular response was truncated. Successful live query responses are not truncated; oversized responses return an error instead.'}, 'result_hash': {'type': 'string', 'description': 'SHA-256 hash combining request_hash and response_hash. A short prefix is included in suggested_filename.'}, 'content_type': {'type': 'string', 'description': 'MIME type for a result resource, for example text/csv, application/ndjson, or application/vnd.apache.parquet.'}, 'generated_at': {'type': 'string', 'description': 'UTC timestamp at which a URL-delivered artifact was generated.'}, 'request_hash': {'type': 'string', 'description': 'SHA-256 hash of the endpoint, dataset, response format, and canonical request body.'}, 'response_hash': {'type': 'string', 'description': 'SHA-256 hash of the upstream response body, computed while reading the response.'}, 'split_guidance': {'type': 'string', 'description': 'Recommended split order for oversized MCP live queries.'}, 'ordering_warning': {'type': 'string', 'description': 'Reminder that live query rows are not guaranteed to be sorted.'}, 'fallback_guidance': {'type': 'string', 'description': 'What to do once if client network policy blocks a signed resource link.'}, 'suggested_filename': {'type': 'string', 'description': 'Collision-resistant filename to use when saving this result locally. Use it instead of generic names like timeseries.csv when comparing multiple model or dataset results.'}, 'signed_url_expires_at': {'type': 'string', 'description': 'UTC expiration timestamp for an artifact resource link.'}}, 'description': 'By default, application/json is returned as structured JSON and CSV/NDJSON as inline text resources. Set delivery=url for any supported format to receive a resource_link to the complete file through a short-lived signed HTTPS URL; Parquet always uses URL delivery. Download the exact URL directly without an API token; this consumes the MCP result and is not a direct GribStream API call. Do not use resources/read, and never print, stringify, or base64-encode the full dataset into chat or tool output. If client network policy blocks the link, do not retry URL delivery; follow fallback_guidance. structuredContent contains result metadata such as rows, bytes, delivery, expiration, cache status, and suggested_filename; inline text formats also include a preview and identity hashes. Rows are not guaranteed to be sorted; sort before charting, building complete time series, or detecting missing timestamps. For dense grids or large tabular results, use delivery=url so MCP returns a short-lived signed HTTPS resource link instead of putting the full dataset into tool output. Prefer application/vnd.apache.parquet only when a compatible Parquet reader is already known to be available. If reader availability is unknown, do not spend tool calls probing or installing packages; use text/csv with delivery=url immediately. Use one grid request, process the downloaded file locally, and never print or serialize the full file into chat or tool output. Do not install a dependency or write a Parquet parser solely for one result. When a real API request limit requires splitting, split by time range first, split variables second, and split coordinates/grid/space last; spatial tiling creates the most extra work.', 'additionalProperties': True}
입력 스키마
{'type': 'object', 'required': ['parameter'], 'properties': {'alias': {'type': 'string', 'description': 'Optional output alias for the resolved request.'}, 'dataset': {'type': 'string', 'description': 'Optional dataset code to resolve the shared parameter against.'}, 'parameter': {'type': 'string', 'description': 'Shared parameter code, for example temperature_2m, wind_speed_10m, mean_sea_level_pressure, or wind_speed_500hpa.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'description': 'Resolved shared parameter request fragments for a dataset.', 'additionalProperties': True}
입력 스키마
{'type': 'object', 'required': ['endpoint', 'dataset', 'request'], 'properties': {'dataset': {'type': 'string', 'description': 'Dataset code, for example gfs, ifsoper, nbm, hrrr, or urma.'}, 'request': {'type': 'object', 'properties': {'asOf': {'type': 'string', 'description': 'Do not set asOf unless the user explicitly asks for backtesting, time travel, what was known then, or a historical model-run cutoff. Omit asOf for latest or best-available forecasts because it filters out forecast runs newer than the cutoff and can make recent data look missing. This is a UTC model-run-time cutoff for /timeseries, not a live API availability timestamp.'}, 'grid': {'type': 'object', 'required': ['minLatitude', 'maxLatitude', 'minLongitude', 'maxLongitude', 'step'], 'properties': {'step': {'type': 'number', 'description': 'Grid spacing in degrees. Must be greater than 0.'}, 'maxLatitude': {'type': 'number'}, 'minLatitude': {'type': 'number'}, 'maxLongitude': {'type': 'number'}, 'minLongitude': {'type': 'number'}}, 'description': 'Optional regular latitude/longitude grid. Use this instead of or in addition to coordinates. The API preserves the requested step and does not silently coarsen fine grids. The default limit is 120000 expanded coordinates; account-specific plan or token settings may set a different maximum up to 1050000, enough for a full native 0.25-degree global GFS grid, and an oversized-response error reports the applicable maximum. Use URL delivery for dense grids before considering spatial tiling.', 'additionalProperties': False}, 'filter': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Optional row filter expression evaluated from variable aliases.', 'additionalProperties': True}, 'members': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Optional ensemble member numbers.'}, 'fromTime': {'type': 'string', 'description': 'Inclusive UTC valid-time range start for /timeseries, for example 2025-05-01T00:00:00Z. Must be earlier than untilTime; use timesList for one exact valid time.'}, 'timesList': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Exact UTC valid times for /timeseries, or exact UTC model run times for /runs. Use this for one exact time instead of setting range bounds equal.'}, 'untilTime': {'type': 'string', 'description': 'Exclusive UTC valid-time range end for /timeseries, for example 2025-05-01T06:00:00Z. Must be later than fromTime; equal bounds select no times.'}, 'variables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'level', 'info'], 'properties': {'info': {'type': 'string', 'description': 'Exact info string. Use an empty string when the catalog selector has no info value.'}, 'name': {'type': 'string', 'description': 'Exact case-sensitive parameter short name, for example TMP.'}, 'alias': {'type': 'string', 'description': 'Optional response field name. Strongly recommended.'}, 'level': {'type': 'string', 'description': 'Exact level string, for example 2 m above ground.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide intermediate variables used only by expressions.'}}, 'additionalProperties': False}, 'description': 'Variable selectors. This exact field name is required. Do not use parameters, parameter, variable, selector, or selectors. Values must be exact case-sensitive selector tuples discovered from catalog tools.'}, 'maxHorizon': {'type': 'integer', 'description': 'Optional maximum lead time in hours.'}, 'minHorizon': {'type': 'integer', 'description': 'Optional minimum lead time in hours.'}, 'coordinates': {'type': 'array', 'items': {'type': 'object', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude in decimal degrees.'}, 'lon': {'type': 'number', 'description': 'Longitude in decimal degrees.'}, 'name': {'type': 'string', 'description': 'Optional coordinate label copied into the response.'}}, 'additionalProperties': False}, 'description': 'Point coordinates. This exact field name is required. Do not use location, coord, coords, latitude/longitude at top level, or any singular replacement.'}, 'expressions': {'type': 'array', 'items': {'type': 'object', 'properties': {'alias': {'type': 'string', 'description': 'Output field name for the expression.'}, 'hidden': {'type': 'boolean', 'description': 'Optional: hide this expression from the response output.'}, 'expression': {'type': 'string', 'description': 'Expression text. Reference variable aliases, not raw selector names.'}}, 'description': 'Expression object.', 'additionalProperties': True}, 'description': 'Optional derived variables evaluated from variable aliases.'}, 'forecastedFrom': {'type': 'string', 'description': 'Inclusive UTC model-run-time range start for /runs. Must be earlier than forecastedUntil; use timesList for one exact model run time.'}, 'forecastedUntil': {'type': 'string', 'description': 'Exclusive UTC model-run-time range end for /runs. Must be later than forecastedFrom; equal bounds select no times.'}, 'includeMetadata': {'type': 'array', 'items': {'enum': ['index_updated_at'], 'type': 'string'}, 'description': 'Optional additional row metadata. The only supported value is index_updated_at. Do not request forecasted_at or forecasted_time here; both are regular response columns returned automatically.'}}, 'description': 'Request body to validate. Omit asOf unless the user explicitly asks for backtesting, time travel, what was known then, or a historical model-run cutoff for /timeseries. Use request.coordinates for point coordinates and request.variables for variable selectors.', 'additionalProperties': True}, 'endpoint': {'enum': ['timeseries', 'runs'], 'type': 'string', 'description': 'Endpoint to validate.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['valid', 'endpoint', 'dataset', 'timestamp_semantics'], 'properties': {'valid': {'type': 'boolean', 'description': 'Whether the request body passed local shape, selector, and expression checks.'}, 'errors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Validation errors.'}, 'dataset': {'type': 'string', 'description': 'Dataset code that was validated.'}, 'endpoint': {'enum': ['timeseries', 'runs'], 'type': 'string', 'description': 'GribStream endpoint.'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Validation warnings.'}, 'timestamp_semantics': {'type': 'string', 'description': 'Endpoint-specific timestamp guidance.'}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
osint
Provides source-cited US data and schemas for power systems, AI infrastructure, semiconductor production and trade, robotics, and…
whatif
Builds, validates, calibrates, compares, and simulates Petri-net process models using event logs, scenarios, invariants, and diag…
Us Iso Grid
Provides real-time and recent electricity grid data for CAISO, ERCOT, and NYISO, including demand, forecasts, fuel mix, emissions…
AOI — Environmental Intelligence for AI Agents
Provides paid, quote-based environmental intelligence assessments covering climate risk, emissions, biodiversity, air quality, ha…
Pharma Intel
Combines clinical trial, FDA, PubMed, drug identification, safety, pipeline, sales, patent, and pharmaceutical sponsor data for d…
Data Gov Sg
Provides Singapore government datasets and environmental feeds, including air quality, dataset metadata, and routed structured re…
Nih Reporter
Searches and analyzes NIH-funded research projects, awards, publications, funding trends, expirations, investigators, organizatio…