UK Environmental Intelligence MCP Server from MCPBundles
What this MCP does
Provides UK environmental intelligence covering flood warnings, river and groundwater readings, bathing water quality, ecology observations, weather-related grid carbon data, and monitoring locations.
Tools
Input schema
{'type': 'object', 'required': [], 'properties': {'region_id': {'type': 'integer', 'maximum': 14, 'minimum': 1, 'description': 'Optional region ID (1-14) for regional generation mix. Omit for national mix.'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'region_id': {'type': 'integer', 'maximum': 14, 'minimum': 1, 'description': 'Optional region ID (1-14) to get regional intensity. 1=North Scotland, 2=South Scotland, 3=North West England, 4=North East England, 5=Yorkshire, 6=North Wales & Merseyside, 7=South Wales, 8=West Midlands, 9=East Midlands, 10=East England, 11=South West England, 12=South England, 13=London, 14=South East England. Omit for national average.'}}}
Input schema
{'type': 'object', 'required': ['date_from', 'date_to'], 'properties': {'date_to': {'type': 'string', 'description': "End date in YYYY-MM-DD format (e.g. '2026-03-31')."}, 'date_from': {'type': 'string', 'description': "Start date in YYYY-MM-DD format (e.g. '2026-03-01')."}}}
Input schema
{'type': 'object', 'required': ['eubwid'], 'properties': {'page': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Page number (0-based)'}, 'eubwid': {'type': 'string', 'description': "EU bathing water ID notation (e.g. 'ukc2102-03600'). Use eubwidNotation from a designated-site listing."}, 'page_size': {'type': 'integer', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Number of profile versions to return (default 10)'}}}
Input schema
{'type': 'object', 'required': ['eubwid'], 'properties': {'eubwid': {'type': 'string', 'description': "EU bathing water ID notation (e.g. 'ukc2102-03600'). Use eubwidNotation from a designated-site listing."}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'page': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Page number (0-based)'}, 'page_size': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': 'Number of results per page (default 20, max 500)'}, 'sampling_point_id': {'type': 'string', 'description': "Sampling point ID to filter results for a specific site (e.g. '03600'). This is the numeric suffix of the eubwid. Without this, returns compliance assessments across all sites."}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'page': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Page number (0-based)'}, 'page_size': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': 'Number of results per page (default 20, max 500)'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'page': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Page number (0-based)'}, 'page_size': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': 'Number of results per page (default 20, max 500)'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 50, 'minimum': 1, 'description': 'Maximum number of results to return'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination'}, 'local_id': {'type': 'string', 'description': "Filter by site local ID (numeric string, e.g. '1', '10', '500')"}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 50, 'minimum': 1, 'description': 'Maximum number of results to return'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 50, 'minimum': 1, 'description': 'Maximum number of results to return'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination'}, 'site_id': {'type': 'string', 'description': "Filter by site URI (e.g. 'http://environment.data.gov.uk/ecology/site/bio/1'). Get site URIs from the list_sites tool."}, 'observation_type': {'type': 'string', 'description': "Filter by observation type URI (e.g. 'http://environment.data.gov.uk/ecology/def/bio/RiverInvTaxaObservation'). Get type URIs from the observation_types tool."}}}
Input schema
{'type': 'object', 'required': [], 'properties': {}}
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 500, 'minimum': 1, 'description': 'Maximum number of results (default 50, max 500).'}, 'county': {'type': 'string', 'description': "Filter by county name (e.g. 'Somerset', 'Devon')."}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number of results to skip for pagination.'}, 'search': {'type': 'string', 'description': 'Search term to filter flood areas by label or description.'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'lat': {'type': 'number', 'description': "Latitude for geo-filter (WGS84). Must be used with 'long' and 'dist'."}, 'dist': {'type': 'number', 'description': "Radius in km for geo-filter. Must be used with 'lat' and 'long'."}, 'long': {'type': 'number', 'description': "Longitude for geo-filter (WGS84). Must be used with 'lat' and 'dist'."}, 'limit': {'type': 'integer', 'default': 50, 'minimum': 1, 'description': 'Maximum number of results to return'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination'}, 'search': {'type': 'string', 'description': 'Text search in flood area labels'}}}
Input schema
{'type': 'object', 'required': ['station_id'], 'properties': {'station_id': {'type': 'string', 'description': "Station reference ID (e.g. '1029TH', '1491TH')"}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'lat': {'type': 'number', 'description': "Latitude for geo-filter (WGS84). Must be used with 'long' and 'dist'."}, 'dist': {'type': 'number', 'description': "Radius in km for geo-filter. Must be used with 'lat' and 'long'."}, 'long': {'type': 'number', 'description': "Longitude for geo-filter (WGS84). Must be used with 'lat' and 'dist'."}, 'limit': {'type': 'integer', 'minimum': 1, 'description': 'Maximum number of results to return'}, 'county': {'type': 'string', 'description': "Filter by county name (e.g. 'Somerset'). Comma-separated for multiple counties."}, 'min_severity': {'type': 'integer', 'maximum': 4, 'minimum': 1, 'description': 'Minimum severity level (1=Severe Flood Warning, 2=Flood Warning, 3=Flood Alert, 4=Warning no longer in force)'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 50, 'minimum': 1, 'description': 'Maximum number of readings to return'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination'}, 'parameter': {'type': 'string', 'description': "Filter by measurement parameter (e.g. 'level', 'flow', 'rainfall')"}, 'qualifier': {'type': 'string', 'description': "Filter by qualifier (e.g. 'Stage', 'Downstream Stage', 'Tidal Level')"}, 'station_reference': {'type': 'string', 'description': 'Filter by station reference ID'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'lat': {'type': 'number', 'description': "Latitude for geo-filter (WGS84). Must be used with 'long' and 'dist'."}, 'dist': {'type': 'number', 'description': "Radius in km for geo-filter. Must be used with 'lat' and 'long'."}, 'long': {'type': 'number', 'description': "Longitude for geo-filter (WGS84). Must be used with 'lat' and 'dist'."}, 'town': {'type': 'string', 'description': 'Filter by town name'}, 'limit': {'type': 'integer', 'default': 50, 'minimum': 1, 'description': 'Maximum number of results to return'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination'}, 'search': {'type': 'string', 'description': 'Text search in station labels'}, 'status': {'enum': ['Active', 'Closed', 'Suspended'], 'type': 'string', 'description': 'Filter by station status'}, 'parameter': {'type': 'string', 'description': "Filter by measurement parameter (e.g. 'level', 'flow', 'rainfall', 'temperature', 'wind')"}, 'qualifier': {'type': 'string', 'description': "Filter by qualifier (e.g. 'Stage', 'Downstream Stage', 'Tidal Level', 'Groundwater')"}, 'river_name': {'type': 'string', 'description': "Filter by river name (e.g. 'River Thames')"}, 'station_type': {'enum': ['SingleLevel', 'MultiTraceLevel', 'Coastal', 'Groundwater', 'Meteorological'], 'type': 'string', 'description': 'Filter by station type: SingleLevel, MultiTraceLevel, Coastal, Groundwater, or Meteorological'}, 'catchment_name': {'type': 'string', 'description': "Filter by catchment name (e.g. 'Cotswolds')"}}}
Input schema
{'type': 'object', 'required': ['station_id'], 'properties': {'date': {'type': 'string', 'description': 'Return readings for a specific date (YYYY-MM-DD format)'}, 'limit': {'type': 'integer', 'default': 100, 'minimum': 1, 'description': 'Maximum number of readings to return'}, 'since': {'type': 'string', 'description': "Return readings since this datetime (ISO 8601 format, e.g. '2024-01-01T00:00:00Z')"}, 'today': {'type': 'boolean', 'default': False, 'description': "If true, return only today's readings"}, 'latest': {'type': 'boolean', 'default': False, 'description': 'If true, return only the latest reading for each measure at this station'}, 'sorted': {'type': 'boolean', 'default': True, 'description': 'If true, sort readings by date-time (most recent first)'}, 'end_date': {'type': 'string', 'description': 'End date for a date range (YYYY-MM-DD). Must be used with start_date.'}, 'parameter': {'type': 'string', 'description': "Filter by measurement parameter (e.g. 'level', 'flow')"}, 'start_date': {'type': 'string', 'description': 'Start date for a date range (YYYY-MM-DD). Must be used with end_date.'}, 'station_id': {'type': 'string', 'description': "Station reference ID (e.g. '1029TH', '1491TH')"}}}
Input schema
{'type': 'object', 'required': ['flood_area_id'], 'properties': {'flood_area_id': {'type': 'string', 'description': "Flood area notation/ID (e.g. '111FAGWDGW', '053FWFPUWI06'). Use floodAreaID or notation from active warning listings or flood area listings."}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 500, 'minimum': 1, 'description': 'Maximum number of results (default 50, max 500).'}, 'county': {'type': 'string', 'description': "Filter by county name (e.g. 'Somerset', 'Devon')."}, 'severity': {'enum': [1, 2, 3, 4], 'type': 'integer', 'description': 'Filter by severity level: 1=Severe Flood Warning, 2=Flood Warning, 3=Flood Alert, 4=No longer in force.'}}}
Input schema
{'type': 'object', 'required': ['station_id'], 'properties': {'station_id': {'type': 'string', 'description': "Station UUID from search results (e.g. '052d0819-2a32-47df-9b99-c243c9c8235b')."}}}
Input schema
{'type': 'object', 'required': ['measure_id'], 'properties': {'date': {'type': 'string', 'description': 'Return readings for a specific date (YYYY-MM-DD format)'}, 'limit': {'type': 'integer', 'default': 100, 'minimum': 1, 'description': 'Maximum number of readings to return'}, 'since': {'type': 'string', 'description': "Return readings since this datetime (ISO 8601 format, e.g. '2026-01-01T00:00:00Z')"}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination'}, 'measure_id': {'type': 'string', 'description': "Measure ID from station detail results (e.g. 'c7e13884-...-gw-logged-i-subdaily-mAOD-qualified')"}}}
Input schema
{'type': 'object', 'required': ['station_id'], 'properties': {'station_id': {'type': 'string', 'description': "Station notation ID (e.g. 'c7e13884-4a02-4df3-b184-09aea28cf8e8_3_020'). Get from station list results."}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'lat': {'type': 'number', 'description': "Latitude for geo-filter (WGS84). Must be used with 'long' and 'dist'."}, 'dist': {'type': 'number', 'description': "Radius in km for geo-filter. Must be used with 'lat' and 'long'."}, 'long': {'type': 'number', 'description': "Longitude for geo-filter (WGS84). Must be used with 'lat' and 'dist'."}, 'limit': {'type': 'integer', 'default': 50, 'minimum': 1, 'description': 'Maximum number of results to return'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination'}, 'status': {'enum': ['Active', 'Closed', 'Suspended'], 'type': 'string', 'description': 'Filter by station status'}, 'aquifer': {'type': 'string', 'description': "Filter by aquifer name (e.g. 'Chalk', 'Lincolnshire Limestone', 'Greensand')"}}}
Input schema
{'type': 'object', 'required': ['measure_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 500, 'minimum': 1, 'description': 'Maximum number of readings to return (default 50, max 500).'}, 'measure_id': {'type': 'string', 'description': "Measure notation string identifying the time series (e.g. '052d0819-...-flow-m-86400-m3s-qualified'). Obtain from station detail."}}}
Input schema
{'type': 'object', 'required': ['station_id'], 'properties': {'station_id': {'type': 'string', 'description': "Station UUID identifier (e.g. '052d0819-2a32-47df-9b99-c243c9c8235b')."}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 500, 'minimum': 1, 'description': 'Maximum number of stations to return (default 10, max 500).'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Pagination offset (default 0).'}, 'search': {'type': 'string', 'description': "Free-text search for station name (e.g. 'Thames', 'Severn')."}}}
Input schema
{'type': 'object', 'required': ['lat', 'long'], 'properties': {'lat': {'type': 'number', 'description': 'Latitude (WGS84) of the centre point (e.g. 51.5074 for London).'}, 'dist': {'type': 'number', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Search radius in kilometres (default 10, max 100).'}, 'long': {'type': 'number', 'description': 'Longitude (WGS84) of the centre point (e.g. -0.1278 for London).'}}}
Input schema
{'type': 'object', 'required': ['station_id'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'minimum': 1, 'description': 'Maximum number of readings to return'}, 'sorted': {'type': 'boolean', 'default': True, 'description': 'If true, request sorted readings (API _sorted)'}, 'station_id': {'type': 'string', 'description': 'Station ID from the API'}}}
Input schema
{'type': 'object', 'required': ['station_id'], 'properties': {'station_id': {'type': 'string', 'description': 'Station ID from the API (e.g. notation/stationReference from list results)'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 5, 'minimum': 1, 'description': 'Maximum number of stations to return'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Offset for pagination'}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': 'Maximum number of stations to return (default 20, max 500).'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Pagination offset (default 0).'}, 'river_name': {'type': 'string', 'description': "Exact river name to filter by (e.g. 'River Thames', 'River Severn', 'Wye'). Case-sensitive."}, 'observed_property': {'enum': ['waterFlow', 'waterLevel', 'groundwaterLevel', 'rainfall'], 'type': 'string', 'description': "Filter by measurement type. Values: 'waterFlow', 'waterLevel', 'groundwaterLevel', 'rainfall'."}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'skip': {'type': 'integer', 'minimum': 0, 'description': 'Number of records to skip for pagination'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 250, 'minimum': 1, 'description': 'Maximum number of results to return (max 250)'}}}
Input schema
{'type': 'object', 'required': ['point_notation'], 'properties': {'date': {'type': 'string', 'description': 'Filter by exact date (YYYY-MM-DD). Cannot be used with date_from/date_to.'}, 'skip': {'type': 'integer', 'minimum': 0, 'description': 'Number of records to skip for pagination'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 250, 'minimum': 1, 'description': 'Maximum number of results to return (max 250)'}, 'date_to': {'type': 'string', 'description': 'Filter by date range end (YYYY-MM-DD). Must be used with date_from.'}, 'date_from': {'type': 'string', 'description': 'Filter by date range start (YYYY-MM-DD). Must be used with date_to.'}, 'determinand': {'type': 'integer', 'description': 'Filter by determinand code (e.g. 0076 for pH, 0180 for dissolved oxygen). Use the determinands tool to look up codes.'}, 'point_notation': {'type': 'string', 'description': "Sampling point notation ID (e.g. 'AN-011262')"}, 'compliance_only': {'type': 'boolean', 'default': False, 'description': 'If true, return only compliance samples'}, 'sampling_purpose': {'type': 'string', 'description': 'Filter by sampling purpose code(s), comma-separated for multiple'}, 'sample_material_type': {'type': 'string', 'description': 'Filter by sample material type code(s), comma-separated for multiple'}}}
Input schema
{'type': 'object', 'required': ['point_notation'], 'properties': {'date': {'type': 'string', 'description': 'Filter by exact date (YYYY-MM-DD). Cannot be used with date_from/date_to.'}, 'skip': {'type': 'integer', 'minimum': 0, 'description': 'Number of records to skip for pagination'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 250, 'minimum': 1, 'description': 'Maximum number of results to return (max 250)'}, 'date_to': {'type': 'string', 'description': 'Filter by date range end (YYYY-MM-DD). Must be used with date_from.'}, 'date_from': {'type': 'string', 'description': 'Filter by date range start (YYYY-MM-DD). Must be used with date_to.'}, 'point_notation': {'type': 'string', 'description': "Sampling point notation ID (e.g. 'AN-011262')"}, 'compliance_only': {'type': 'boolean', 'default': False, 'description': 'If true, return only compliance samples'}, 'sampling_purpose': {'type': 'string', 'description': 'Filter by sampling purpose code(s), comma-separated for multiple'}, 'sample_material_type': {'type': 'string', 'description': 'Filter by sample material type code(s), comma-separated for multiple'}}}
Input schema
{'type': 'object', 'required': ['point_notation'], 'properties': {'point_notation': {'type': 'string', 'description': "Sampling point notation ID (e.g. 'AN-011262', 'MD-009632')"}}}
Input schema
{'type': 'object', 'required': [], 'properties': {'area': {'type': 'string', 'description': 'Filter by area code within a region'}, 'skip': {'type': 'integer', 'minimum': 0, 'description': 'Number of records to skip for pagination'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 250, 'minimum': 1, 'description': 'Maximum number of results to return (max 250)'}, 'radius': {'type': 'number', 'description': "Search radius in kilometres. Must be used with 'latitude' and 'longitude'."}, 'region': {'type': 'string', 'description': "Filter by region code (e.g. 'AN' for Anglian, 'TH' for Thames, 'NW' for North West)"}, 'latitude': {'type': 'number', 'description': "Latitude for radius-based search (WGS84). Must be used with 'longitude' and 'radius'."}, 'sub_area': {'type': 'string', 'description': 'Filter by sub-area code'}, 'longitude': {'type': 'number', 'description': "Longitude for radius-based search (WGS84). Must be used with 'latitude' and 'radius'."}, 'pref_label': {'type': 'string', 'description': "Filter by name (contains match, e.g. 'Thames')"}, 'sampling_point_type': {'type': 'string', 'description': "Filter by type code(s), comma-separated for multiple (e.g. 'FJ,SA')"}, 'sampling_point_status': {'type': 'string', 'description': "Filter by status code: 'O' (Open), 'C' (Closed)"}}}
Input schema
{'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude of the location (-90 to 90, e.g. 51.5074 for London)'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude of the location (-180 to 180, e.g. -0.1278 for London)'}, 'include_location_name': {'type': 'boolean', 'description': 'Include the nearest named location in the response (default false)'}}}
Input schema
{'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude of the location (-90 to 90, e.g. 51.5074 for London)'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude of the location (-180 to 180, e.g. -0.1278 for London)'}, 'include_location_name': {'type': 'boolean', 'description': 'Include the nearest named location in the response (default false)'}}}
Input schema
{'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude of the location (-90 to 90, e.g. 51.5074 for London)'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude of the location (-180 to 180, e.g. -0.1278 for London)'}, 'include_location_name': {'type': 'boolean', 'description': 'Include the nearest named location in the response (default false)'}}}
Input schema
{'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number', 'maximum': 61.0, 'minimum': 49.0, 'description': 'Latitude of the location (UK coverage, e.g. 51.5074 for London)'}, 'longitude': {'type': 'number', 'maximum': 2.0, 'minimum': -8.0, 'description': 'Longitude of the location (e.g. -0.1278 for London)'}}}
Input schema
{'type': 'object', 'required': ['geohash'], 'properties': {'geohash': {'type': 'string', 'maxLength': 6, 'minLength': 6, 'description': "6-character geohash of the observation station (from the find-nearest-station tool). Example: 'gcj8ds' for a Devon station."}}}
Input schema
{'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number', 'maximum': 61.0, 'minimum': 49.0, 'description': 'Latitude of the location (UK coverage, e.g. 51.5074 for London)'}, 'longitude': {'type': 'number', 'maximum': 2.0, 'minimum': -8.0, 'description': 'Longitude of the location (e.g. -0.1278 for London)'}}}
Recent tool changes
Similar MCP servers
Meteoswiss
Discovers and searches Swiss weather stations and federal geospatial datasets from MeteoSwiss and swisstopo, with links to data a…
Global Forest Watch
Browses and queries Global Forest Watch datasets covering forest loss and gain, alerts, fires, carbon, protected areas and relate…
Global Fishing Watch
Searches Global Fishing Watch vessel identities and AIS-derived events, and aggregates apparent fishing effort by location, date,…
Smarter Weather
Provides weather forecasts, observations, alerts, air quality, climate data, severe-weather analysis, maps, and gridded meteorolo…
DeepMap AI -- Earth Grounding
Provides evidence-backed, location-specific information on water availability, ground stability, seismic and space-weather hazard…
Atlas Data Exchange
Discovers, samples, evaluates, purchases, and monitors spatial datasets covering infrastructure, hazards, logistics, commodities,…
MAD Synapse · World
Provides geocoding, weather, exchange rates, holidays, time-zone conversion, astronomical data, country facts, and earthquake inf…
DeepPVMapper
Queries and aggregates a French registry of rooftop solar detections, including locations, estimated capacity, imagery validation…