{"tools":["list_imagery_presets","get_observation_schema","search_places","search_scenes","get_satellite_image"],"collection":"sentinel-2-l2a","search":"https://earth-search.aws.element84.com/v1/search","defaults":{"radius_m":3000,"preset":"true_color","max_cloud_cover":20,"lookback_days":30,"tolerance_days":10,"selection":"latest","format":"png","max_dimension":768,"delivery":"inline","resampling":"bilinear","stretch":"percentile","percentile_low":2,"percentile_high":98,"gamma":1,"brightness":0,"saturation":1,"cloud_mask":false,"mask_snow":false,"annotated":false,"show_coordinates":true,"show_scale":true,"show_legend":true},"bounds":{"radius_m":{"min":500,"max":50000},"cloud_pct":{"min":0,"max":100},"tolerance_days":{"min":1,"max":60},"lookback_days":{"min":1,"max":365},"scene_limit":{"min":1,"max":20},"dimension":{"min":64,"max":1536},"max_output_pixels":2000000,"max_decoded_pixels":6000000,"max_decoded_bytes":48000000,"max_fetch_bytes":28000000,"max_bbox_span_deg":2.5,"max_response_bytes":3670016,"max_body_bytes":65536,"max_query_bytes":8192,"max_concurrent_fetches":6,"max_redirects":3,"polar_abs_lat":83,"index_eps":0.000001,"rate_limit_observe":{"max":8,"window_ms":10000},"rate_limit_mcp":{"max":24,"window_ms":10000}},"presets":[{"id":"true_color","title":"True color","kind":"rgb","bands":["red","green","blue"],"label":"Natural color (red, green, blue reflectance)","native_hint_m":[10,10,10],"limitations":["Optical Sentinel-2 only. Not a photograph; atmospheric residual and sunglint remain."]},{"id":"false_color","title":"False color (NIR)","kind":"rgb","bands":["nir","red","green"],"label":"False color infrared (NIR, red, green). Vegetation appears red.","native_hint_m":[10,10,10],"limitations":["This is not true color. NIR is displayed in the red channel."]},{"id":"swir","title":"SWIR composite","kind":"rgb","bands":["swir22","swir16","red"],"label":"Short-wave infrared composite (SWIR22, SWIR16, red). Not temperature.","native_hint_m":[20,20,10],"limitations":["SWIR is reflected infrared, not a thermal temperature product.","SWIR bands are native 20 m; red is 10 m and is aligned to the working grid."]},{"id":"ndvi","title":"NDVI","kind":"index","bands":["nir","red"],"label":"NDVI = (NIR − red) / (NIR + red) from reflectance, not the 8-bit visual asset.","native_hint_m":[10,10],"index_range":[-0.2,0.8],"limitations":["Index values are unitless. The legend matches the applied palette range."]},{"id":"ndwi","title":"NDWI","kind":"index","bands":["green","nir"],"label":"NDWI = (green − NIR) / (green + NIR).","native_hint_m":[10,10],"index_range":[-0.5,0.5],"limitations":["McFeeters NDWI. Not a depth or flood map."]},{"id":"mndwi","title":"MNDWI","kind":"index","bands":["green","swir16"],"label":"MNDWI = (green − SWIR16) / (green + SWIR16).","native_hint_m":[10,20],"index_range":[-0.5,0.5],"limitations":["Modified NDWI. SWIR16 is native 20 m."]},{"id":"custom_rgb","title":"Custom RGB","kind":"rgb","bands":[],"label":"Three explicitly allowlisted spectral COG assets.","native_hint_m":[],"limitations":["Allowed assets: coastal, blue, green, red, rededge1, rededge2, rededge3, nir, nir08, nir09, swir16, swir22.","Arbitrary expressions and the visual asset are rejected."]}],"observation_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"location":{"type":"object","properties":{"lat":{"description":"WGS84 latitude in decimal degrees. Pair with lon. Order is latitude, longitude.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"WGS84 longitude in decimal degrees. Pair with lat. GeoJSON/bbox arrays remain longitude-first.","type":"number","minimum":-180,"maximum":180},"radius_m":{"description":"Half-width of a ground-distance crop in meters (default 3000). Not valid with bbox.","type":"number","minimum":500,"maximum":50000},"bbox":{"description":"WGS84 bounding box [west, south, east, north] (longitude first).","type":"array","prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}],"items":false,"minItems":4,"maxItems":4},"query":{"description":"City name or 'latitude, longitude' text. Ambiguous cities return candidates, not an image.","type":"string","minLength":1,"maxLength":200}},"additionalProperties":false,"description":"Area of interest. Required even when scene_id is set."},"scene":{"type":"object","properties":{"scene_id":{"description":"Earth Search STAC item id. Pins the acquisition; do not also request date selection.","type":"string","minLength":3,"maxLength":120,"pattern":"^[A-Za-z0-9:_-]+$"},"date":{"description":"Target UTC date YYYY-MM-DD. Uses tolerance_days around this date.","type":"string"},"start_date":{"description":"UTC start date YYYY-MM-DD for an explicit range.","type":"string"},"end_date":{"description":"UTC end date YYYY-MM-DD for an explicit range.","type":"string"},"tolerance_days":{"description":"Days on either side of date (default 10).","type":"integer","minimum":1,"maximum":60},"max_cloud_cover":{"description":"Maximum STAC tile cloud cover percent (default 20).","type":"number","minimum":0,"maximum":100},"selection":{"description":"latest | least_cloudy | closest_date. Ties: remaining tile cloud (lower wins), then later datetime, then lexicographically greater scene_id.","type":"string","enum":["latest","least_cloudy","closest_date"]}},"additionalProperties":false},"render":{"type":"object","properties":{"preset":{"description":"Visualization preset. Default true_color.","type":"string","enum":["true_color","false_color","swir","ndvi","ndwi","mndwi","custom_rgb"]},"rgb_bands":{"description":"Required for custom_rgb. Named Earth Search COG assets only, never visual/jp2.","type":"array","prefixItems":[{"type":"string","enum":["coastal","blue","green","red","rededge1","rededge2","rededge3","nir","nir08","nir09","swir16","swir22"]},{"type":"string","enum":["coastal","blue","green","red","rededge1","rededge2","rededge3","nir","nir08","nir09","swir16","swir22"]},{"type":"string","enum":["coastal","blue","green","red","rededge1","rededge2","rededge3","nir","nir08","nir09","swir16","swir22"]}],"items":false,"minItems":3,"maxItems":3},"stretch":{"type":"string","enum":["percentile","minmax","none"]},"gamma":{"type":"number","minimum":0.3,"maximum":3},"brightness":{"type":"number","minimum":-0.5,"maximum":0.5},"saturation":{"type":"number","minimum":0,"maximum":2},"index_range":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}],"items":false,"minItems":2,"maxItems":2},"palette":{"type":"string","enum":["ndvi","ndwi","mndwi","viridis","greyscale"]},"resampling":{"type":"string","enum":["nearest","bilinear"]},"cloud_mask":{"description":"If true, SCL cloud classes 8/9/10 become missing pixels.","type":"boolean"},"mask_snow":{"description":"If true, SCL snow/ice class 11 becomes missing pixels.","type":"boolean"}},"additionalProperties":false},"output":{"type":"object","properties":{"formats":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"string","enum":["png","jpeg","webp","json"]}},"width":{"type":"integer","minimum":64,"maximum":1536},"height":{"type":"integer","minimum":64,"maximum":1536},"delivery":{"type":"string","enum":["inline","url","both"]},"annotated":{"type":"boolean"},"title":{"type":"string","maxLength":120},"show_coordinates":{"type":"boolean"},"show_scale":{"type":"boolean"},"show_legend":{"type":"boolean"},"background":{"type":"string","enum":["transparent","greige","black","white"]}},"additionalProperties":false}},"required":["location"],"additionalProperties":false},"examples":{"simple_coordinates":{"location":{"lat":45.4388,"lon":12.3271}},"city_query":{"location":{"query":"Dubai, AE","radius_m":4000},"render":{"preset":"true_color"}},"pinned_scene":{"location":{"lat":45.4388,"lon":12.3271,"radius_m":3000},"scene":{"scene_id":"S2A_32TQR_20240713_0_L2A"},"render":{"preset":"ndvi"},"output":{"formats":["png"],"width":768,"delivery":"both"}},"bbox_swir":{"location":{"bbox":[55.24,25.16,55.32,25.23]},"scene":{"start_date":"2024-01-01","end_date":"2024-03-01","max_cloud_cover":15,"selection":"least_cloudy"},"render":{"preset":"swir"}}},"instructions":"Lookout serves Copernicus Sentinel-2 L2A optical imagery from Element 84 Earth Search (https://earth-search.aws.element84.com/v1, collection sentinel-2-l2a). No API key or account. The one-call tool is get_satellite_image: pass location.lat and location.lon (latitude first) or location.query. Defaults: 3000 m crop, true_color, latest available in this collection within 30 days, tile cloud ≤ 20%, PNG, 768 px. Ambiguous city names return candidates, not an image. Coordinates bypass geocoding. Do not switch collections, request radar/thermal/night products, or assume real-time. Inline images are PNG/JPEG/WebP display crops, not GeoTIFFs."}