{"openapi":"3.1.0","info":{"title":"World in Layers","version":"1.0.0"},"paths":{"/api/v1/environment/layers":{"get":{"summary":"Layers","operationId":"layers_api_v1_environment_layers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/environment/layers/{ident}":{"get":{"summary":"Layer Frames","operationId":"layer_frames_api_v1_environment_layers__ident__get","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}},{"name":"at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"At"}},{"name":"frame","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Frame"}},{"name":"max_cloud","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":0,"default":100,"title":"Max Cloud"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/environment/history":{"get":{"summary":"Historical Coverage","operationId":"historical_coverage_api_v1_environment_history_get","parameters":[{"name":"ident","in":"query","required":false,"schema":{"type":"string","default":"temperature","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/environment/availability":{"get":{"summary":"Date Availability","operationId":"date_availability_api_v1_environment_availability_get","parameters":[{"name":"ident","in":"query","required":true,"schema":{"type":"string","title":"Ident"}},{"name":"month","in":"query","required":true,"schema":{"type":"string","title":"Month"}},{"name":"lon","in":"query","required":false,"schema":{"type":"number","maximum":180,"minimum":-180,"default":0,"title":"Lon"}},{"name":"lat","in":"query","required":false,"schema":{"type":"number","maximum":90,"minimum":-90,"default":0,"title":"Lat"}},{"name":"max_cloud","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":0,"default":100,"title":"Max Cloud"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/environment/point":{"get":{"summary":"Environmental Point","operationId":"environmental_point_api_v1_environment_point_get","parameters":[{"name":"ident","in":"query","required":true,"schema":{"type":"string","title":"Ident"}},{"name":"frame","in":"query","required":true,"schema":{"type":"string","title":"Frame"}},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","default":"json","title":"Format"}},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"}},{"name":"radius_km","in":"query","required":false,"schema":{"type":"number","maximum":500,"exclusiveMinimum":0,"default":50,"title":"Radius Km"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sentinel/tiles/{version}/{ident}/{frame}/{z}/{x}/{y}.png":{"get":{"summary":"Tile","operationId":"tile_api_v1_sentinel_tiles__version___ident___frame___z___x___y__png_get","parameters":[{"name":"version","in":"path","required":true,"schema":{"type":"string","title":"Version"}},{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}},{"name":"frame","in":"path","required":true,"schema":{"type":"string","title":"Frame"}},{"name":"z","in":"path","required":true,"schema":{"type":"integer","title":"Z"}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","title":"X"}},{"name":"y","in":"path","required":true,"schema":{"type":"integer","title":"Y"}},{"name":"max_cloud","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":0,"default":100,"title":"Max Cloud"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/seismic/status":{"get":{"summary":"Status","operationId":"status_api_v1_seismic_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/seismic/events":{"get":{"summary":"Events","operationId":"events_api_v1_seismic_events_get","parameters":[{"name":"window","in":"query","required":false,"schema":{"enum":["24h","7d","30d","90d","365d","all","custom"],"type":"string","default":"7d","title":"Window"}},{"name":"min_magnitude","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":15,"minimum":-10},{"type":"null"}],"title":"Min Magnitude"}},{"name":"depth","in":"query","required":false,"schema":{"enum":["all","shallow","intermediate","deep","unknown"],"type":"string","default":"all","title":"Depth"}},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"}},{"name":"format","in":"query","required":false,"schema":{"enum":["json","geojson","csv"],"type":"string","default":"json","title":"Format"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"End Date"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"default":1,"title":"Page"}},{"name":"order","in":"query","required":false,"schema":{"enum":["latest","oldest"],"type":"string","default":"latest","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/seismic/nearby":{"get":{"summary":"Nearby","operationId":"nearby_api_v1_seismic_nearby_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}},{"name":"radius_km","in":"query","required":false,"schema":{"type":"number","maximum":1000,"minimum":1,"default":100,"title":"Radius Km"}},{"name":"window","in":"query","required":false,"schema":{"enum":["24h","7d","30d","90d","365d","all","custom"],"type":"string","default":"7d","title":"Window"}},{"name":"min_magnitude","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":15,"minimum":-10},{"type":"null"}],"title":"Min Magnitude"}},{"name":"depth","in":"query","required":false,"schema":{"enum":["all","shallow","intermediate","deep","unknown"],"type":"string","default":"all","title":"Depth"}},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"End Date"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"default":1,"title":"Page"}},{"name":"order","in":"query","required":false,"schema":{"enum":["latest","oldest"],"type":"string","default":"latest","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/seismic/events/{ident}":{"get":{"summary":"Detail","operationId":"detail_api_v1_seismic_events__ident__get","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/config":{"get":{"tags":["accounts"],"summary":"Config","operationId":"config_api_v1_auth_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/auth/me":{"get":{"tags":["accounts"],"summary":"Me","operationId":"me_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"delete":{"tags":["accounts"],"summary":"Delete Account","operationId":"delete_account_api_v1_auth_me_delete","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/google/callback":{"get":{"tags":["accounts"],"summary":"Google Callback","operationId":"google_callback_api_v1_auth_google_callback_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/email":{"post":{"tags":["accounts"],"summary":"Email Start","operationId":"email_start_api_v1_auth_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailInput"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/email/verify":{"post":{"tags":["accounts"],"summary":"Email Verify","operationId":"email_verify_api_v1_auth_email_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["accounts"],"summary":"Logout","operationId":"logout_api_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/auth/logout-all":{"post":{"tags":["accounts"],"summary":"Logout All","operationId":"logout_all_api_v1_auth_logout_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/auth/google":{"post":{"tags":["accounts"],"summary":"Google Start","operationId":"google_start_api_v1_auth_google_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/favorites":{"get":{"tags":["favorites"],"summary":"List Favorites","operationId":"list_favorites_api_v1_auth_favorites_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["favorites"],"summary":"Save Favorite","operationId":"save_favorite_api_v1_auth_favorites_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FavoriteInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/favorites/{favorite_id}":{"patch":{"tags":["favorites"],"summary":"Rename Favorite","operationId":"rename_favorite_api_v1_auth_favorites__favorite_id__patch","parameters":[{"name":"favorite_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Favorite Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FavoriteName"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["favorites"],"summary":"Remove Favorite","operationId":"remove_favorite_api_v1_auth_favorites__favorite_id__delete","parameters":[{"name":"favorite_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Favorite Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/plans":{"get":{"tags":["billing"],"summary":"Plans","operationId":"plans_api_v1_billing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/billing/me":{"get":{"tags":["billing"],"summary":"Me","operationId":"me_api_v1_billing_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/billing/webhook":{"post":{"tags":["billing"],"summary":"Webhook","operationId":"webhook_api_v1_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/billing/preview":{"post":{"tags":["billing"],"summary":"Preview","operationId":"preview_api_v1_billing_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/checkout":{"post":{"tags":["billing"],"summary":"Checkout","operationId":"checkout_api_v1_billing_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/portal":{"post":{"tags":["billing"],"summary":"Portal","operationId":"portal_api_v1_billing_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/billing/sync":{"post":{"tags":["billing"],"summary":"Sync","operationId":"sync_api_v1_billing_sync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/billing/subscription":{"post":{"tags":["billing"],"summary":"Change","operationId":"change_api_v1_billing_subscription_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/billing/withdrawal":{"post":{"tags":["billing"],"summary":"Withdrawal","operationId":"withdrawal_api_v1_billing_withdrawal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawalInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/theme-maps/draft":{"post":{"tags":["map cards"],"summary":"Draft","operationId":"draft_api_v1_theme_maps_draft_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeMapRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/theme-maps":{"post":{"tags":["map cards"],"summary":"Create","operationId":"create_api_v1_theme_maps_post","parameters":[{"name":"X-Theme-Map-Owner","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Theme-Map-Owner"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemeMapRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/theme-maps/{ident}":{"get":{"tags":["map cards"],"summary":"Read","operationId":"read_api_v1_theme_maps__ident__get","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["map cards"],"summary":"Delete","operationId":"delete_api_v1_theme_maps__ident__delete","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}},{"name":"X-Theme-Map-Owner","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Theme-Map-Owner"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/theme-maps/{ident}/head":{"get":{"tags":["map cards"],"summary":"Head","description":"Always 200: Caddy's template reads the 404/410 markers and sets the status.","operationId":"head_api_v1_theme_maps__ident__head_get","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/theme-maps/{ident}/noscript":{"get":{"tags":["map cards"],"summary":"Noscript","description":"Always 200; empty unless the map is ready.","operationId":"noscript_api_v1_theme_maps__ident__noscript_get","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/chat/status":{"get":{"tags":["chat"],"summary":"Status","operationId":"status_api_v1_chat_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/chat/conversations":{"get":{"tags":["chat"],"summary":"List Conversations","operationId":"list_conversations_api_v1_chat_conversations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/chat/conversations/{conversation_id}":{"get":{"tags":["chat"],"summary":"Get Conversation","operationId":"get_conversation_api_v1_chat_conversations__conversation_id__get","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conversation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["chat"],"summary":"Delete Conversation","operationId":"delete_conversation_api_v1_chat_conversations__conversation_id__delete","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conversation Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/chat/messages":{"post":{"tags":["chat"],"summary":"Send Message","operationId":"send_message_api_v1_chat_messages_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/japan-hazards/point":{"get":{"summary":"Hazard Point","operationId":"hazard_point_api_v1_japan_hazards_point_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/japan-hazards/status":{"get":{"summary":"Hazard Status","operationId":"hazard_status_api_v1_japan_hazards_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/japan-hazards/prefectures":{"get":{"summary":"Hazard Prefectures","operationId":"hazard_prefectures_api_v1_japan_hazards_prefectures_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/japan-hazards/tiles/{layer}/{version}/{z}/{x}/{y}.pbf":{"get":{"summary":"Hazard Tile","operationId":"hazard_tile_api_v1_japan_hazards_tiles__layer___version___z___x___y__pbf_get","parameters":[{"name":"layer","in":"path","required":true,"schema":{"type":"string","title":"Layer"}},{"name":"version","in":"path","required":true,"schema":{"type":"string","title":"Version"}},{"name":"z","in":"path","required":true,"schema":{"type":"string","title":"Z"}},{"name":"x","in":"path","required":true,"schema":{"type":"string","title":"X"}},{"name":"y","in":"path","required":true,"schema":{"type":"string","title":"Y"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/keys":{"get":{"tags":["api keys"],"summary":"List Keys","description":"Every account can list (and revoke) its keys; creating one needs a paid plan.","operationId":"list_keys_api_v1_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["api keys"],"summary":"Create Key","operationId":"create_key_api_v1_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyInput"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/keys/usage":{"get":{"tags":["api keys"],"summary":"Usage","description":"Today's agent API use for the account page; quotas reset at 00:00 UTC.","operationId":"usage_api_v1_keys_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/keys/{key_id}":{"delete":{"tags":["api keys"],"summary":"Revoke Key","operationId":"revoke_key_api_v1_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agent/tools":{"get":{"tags":["agent"],"summary":"The public tool registry","operationId":"agent_tools","responses":{"200":{"description":"Every tool with its schemas, cost and scope; plan limits.","content":{"application/json":{"schema":{"properties":{"tools":{"items":{"type":"object"},"type":"array","description":"Tools in MCP tools/list order: name, title, description, inputSchema, outputSchema, annotations, units, scope, formats, example."},"units":{"type":"object","description":"Unit weights not tied to one tool."},"plans":{"type":"object","description":"Per-plan limits: units, burst, concurrency, cold_loads, cards, batch."}},"type":"object"}}}},"429":{"description":"Too many requests from this address; retry in a minute.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string","description":"What happened."}},"type":"object"}}}}},"security":[]}},"/api/v1/agent/status":{"get":{"tags":["agent"],"summary":"Freshness of every source","operationId":"agent_status","responses":{"200":{"description":"atlas_status, concise, without a key.","content":{"application/json":{"schema":{"properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"items":{"properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false,"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained."}},"additionalProperties":false,"type":"object","description":"One cited source (concise) or value (detailed)."},"type":"array","description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"items":{"type":"string","description":"One provider's credit line."},"type":"array","description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"items":{"type":"string","description":"One note."},"type":"array","description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false,"type":"object","description":"Links for people: the atlas map for this answer."},"usage":{"properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}},"type":"object","description":"This call's cost and today's use against the plan."},"error":{"properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false,"type":"object","description":"A call that is likely to help."},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"items":{"type":"object","description":"One candidate place with its place_id."},"type":"array","description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}},"type":"object","description":"Present when ok is false."},"data":{"properties":{"release":{"type":["string","null"],"description":"Atlas release id."},"checked_at":{"type":["string","null"],"description":"When this was checked, ISO 8601 UTC."},"columns":{"items":{"type":"string","enum":["source","provider","status","run_at","retrieved_at","valid_to","version"],"description":"A column name."},"type":"array","description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"items":{"items":{"description":"One cell: a string, number, boolean or null."},"type":"array","description":"One row; its cells follow `columns`."},"type":"array","description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"sources":{"items":{"properties":{"source":{"type":["string","null"],"description":"The source's source."},"provider":{"type":["string","null"],"description":"The source's provider."},"status":{"type":["string","null"],"description":"The source's status."},"run_at":{"type":["string","null"],"description":"The source's run at."},"retrieved_at":{"type":["string","null"],"description":"The source's retrieved at."},"valid_to":{"type":["string","null"],"description":"The source's valid to."},"version":{"type":["string","null"],"description":"The source's version."}},"additionalProperties":false,"type":"object","description":"One source."},"type":"array","description":"Every live source (detailed)."},"note":{"type":["string","null"],"description":"What the status values mean (detailed)."}},"additionalProperties":false,"type":"object","description":"Freshness of every live source."}},"additionalProperties":false,"type":"object","required":["ok","tool"],"description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false."}}}},"429":{"description":"Too many requests from this address; retry in a minute.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string","description":"What happened."}},"type":"object"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"security":[]}},"/api/v1/agent/attribution":{"get":{"tags":["agent"],"summary":"Licences and copy-ready attribution","operationId":"agent_attribution","responses":{"200":{"description":"Every provider's licence and credit line.","content":{"application/json":{"schema":{"properties":{"providers":{"items":{"type":"object"},"type":"array","description":"id, provider, licence, licence_url, attribution."}},"type":"object"}}}},"429":{"description":"Too many requests from this address; retry in a minute.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string","description":"What happened."}},"type":"object"}}}}},"security":[]}},"/api/v1/agent/usage":{"get":{"tags":["agent"],"summary":"Today's and this month's usage for the key's account","operationId":"agent_usage","responses":{"200":{"description":"Usage today and this month against the plan.","content":{"application/json":{"schema":{"type":"object","description":"plan, day, reset_seconds, units, units_limit, cold_loads, cold_loads_limit, cards, cards_limit, calls, month{start, units, calls}, limits{…}."}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_find_place":{"get":{"tags":["agent"],"summary":"Find a place","description":"Resolve a place name, postcode or country to coordinates and a stable place_id (GeoNames; countries from Natural Earth), or list the towns nearest a lat/lon. Use it first when you have a name, then pass place_id to other tools (they also take `place` directly, narrowed with `place_country`). Matches come largest clear match first: a capital, or a place of 50,000 or more with five times the next namesake's population, is the one `place` resolves to, and the others are listed. When no match is clear, `ambiguous` is true: pick one place_id, or repeat with `country`. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_find_place","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Places matching the query, or nearest a lat/lon.","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place_id","name","admin","country","kind","population","lat","lon","distance_km","match"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"ambiguous":{"type":["boolean","null"],"description":"true when several different places match: pick one place_id."},"places":{"type":"array","items":{"type":"object","description":"One place: place_id, name, admin, country, kind, population, lat, lon, distance_km (nearest-place search), match (exact, alternate_name, prefix or contains)."},"description":"Matches, best first (detailed)."},"area":{"type":"object","description":"Country and region containing lat/lon (nearest-place search)."},"point":{"type":"object","description":"The lat/lon searched around."},"query":{"type":["string","null"],"description":"The query as searched."},"note":{"type":["string","null"],"description":"A note on the matches."},"hint":{"type":["string","null"],"description":"What to try next."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_find_place","data":{"columns":["place_id","name","admin","country","kind","population","lat","lon","distance_km","match"],"rows":[["geonames:2267057","Lisbon","Lisbon, Lisbon","PT","city",517802,38.7251,-9.1498,null,"exact"]],"ambiguous":false,"query":"Lisbon"},"citations":[],"attribution":["Places: GeoNames (geonames.org), CC BY 4.0. Contains Royal Mail data © Royal Mail copyright and database right 2022."],"notes":["Matches come from GeoNames; postcodes may be approximate."],"links":{"map":"https://worldinlayers.com/temperature?center=-9.1498%2C38.7251&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-38.7251--9.1498%22%2C%22name%22%3A%22Lisbon%22%2C%22latitude%22%3A38.7251%2C%22longitude%22%3A-9.1498%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":1,"units_today":1,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"query","in":"query","required":false,"description":"Place name, postcode or country, in any language.","schema":{"type":"string","maxLength":120}},{"name":"country","in":"query","required":false,"description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `query` to one country.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"lat","in":"query","required":false,"description":"Latitude in degrees, -90 to 90.","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"description":"Longitude in degrees, -180 to 180.","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"limit","in":"query","required":false,"description":"Nearest places to list (with lat/lon), 1–10; default 5.","schema":{"type":"integer","minimum":1,"maximum":10}},{"name":"response_format","in":"query","required":false,"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Find a place (JSON body)","description":"Resolve a place name, postcode or country to coordinates and a stable place_id (GeoNames; countries from Natural Earth), or list the towns nearest a lat/lon. Use it first when you have a name, then pass place_id to other tools (they also take `place` directly, narrowed with `place_country`). Matches come largest clear match first: a capital, or a place of 50,000 or more with five times the next namesake's population, is the one `place` resolves to, and the others are listed. When no match is clear, `ambiguous` is true: pick one place_id, or repeat with `country`. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_find_place_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Places matching the query, or nearest a lat/lon.","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place_id","name","admin","country","kind","population","lat","lon","distance_km","match"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"ambiguous":{"type":["boolean","null"],"description":"true when several different places match: pick one place_id."},"places":{"type":"array","items":{"type":"object","description":"One place: place_id, name, admin, country, kind, population, lat, lon, distance_km (nearest-place search), match (exact, alternate_name, prefix or contains)."},"description":"Matches, best first (detailed)."},"area":{"type":"object","description":"Country and region containing lat/lon (nearest-place search)."},"point":{"type":"object","description":"The lat/lon searched around."},"query":{"type":["string","null"],"description":"The query as searched."},"note":{"type":["string","null"],"description":"A note on the matches."},"hint":{"type":["string","null"],"description":"What to try next."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_find_place","data":{"columns":["place_id","name","admin","country","kind","population","lat","lon","distance_km","match"],"rows":[["geonames:2267057","Lisbon","Lisbon, Lisbon","PT","city",517802,38.7251,-9.1498,null,"exact"]],"ambiguous":false,"query":"Lisbon"},"citations":[],"attribution":["Places: GeoNames (geonames.org), CC BY 4.0. Contains Royal Mail data © Royal Mail copyright and database right 2022."],"notes":["Matches come from GeoNames; postcodes may be approximate."],"links":{"map":"https://worldinlayers.com/temperature?center=-9.1498%2C38.7251&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-38.7251--9.1498%22%2C%22name%22%3A%22Lisbon%22%2C%22latitude%22%3A38.7251%2C%22longitude%22%3A-9.1498%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":1,"units_today":1,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"Place name, postcode or country, in any language.","maxLength":120},"country":{"type":"string","description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `query` to one country.","pattern":"^[A-Za-z]{2}$"},"lat":{"type":"number","description":"Latitude in degrees, -90 to 90.","minimum":-90,"maximum":90},"lon":{"type":"number","description":"Longitude in degrees, -180 to 180.","minimum":-180,"maximum":180},"limit":{"type":"integer","description":"Nearest places to list (with lat/lon), 1–10; default 5.","minimum":1,"maximum":10},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value."}},"additionalProperties":false},"example":{"query":"Lisbon","country":"PT"}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_list_layers":{"get":{"tags":["agent"],"summary":"List layers","description":"The atlas's layers by group with ids, units, data kind (forecast, analysis, reanalysis, observation, climatology, model), whether values can be read, the archive start, whether the API can load past dates, licence and attribution. Use it to choose layer ids; atlas_layer_coverage gives one layer's exact dates. Pass `group` for notes and the current forecast range. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_list_layers","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"The layers by group.","properties":{"groups":{"type":"object","description":"Layer group name -> its layers (id, name, units, data_kind, values, history_from, api_loadable, licence, attribution).","additionalProperties":{"type":"array","items":{"type":"object","description":"One layer."},"description":"Layers of a group."}},"note":{"type":["string","null"],"description":"What values and api_loadable mean."},"hint":{"type":["string","null"],"description":"What to try next."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_list_layers","data":{"groups":{"Ocean":[{"id":"sst","name":"Sea surface temperature","units":"°C","data_kind":"analysis","history_from":"1981-09-01","history":{"start":"1981-09-01","resolution":"day","source":"NOAA OISST analysis"},"current":{"first":"2026-10-19T12:00:00Z","last":"2026-10-21T12:00:00Z","frames":3,"status":"stale"},"note":"NOAA OISST daily mean analysis, 0.25°, open water only; recent days are preliminary.","values":true,"api_loadable":true,"licence":"US government open data","attribution":"NOAA OISST v2.1: NOAA National Centers for Environmental Information, public domain; attribution requested."},{"id":"waves","name":"Wave height","units":"m","data_kind":"forecast","history_from":"1940-01-01","history":{"start":"1940-01-01","resolution":"hour","source":"ERA5 reanalysis"},"current":{"first":"2026-10-24T00:00:00Z","last":"2026-10-27T18:00:00Z","frames":8,"status":"stale"},"note":"NOAA GFS-Wave significant wave height, 0.25°; open ocean, not surf or harbour forecasts.","values":true,"api_loadable":true,"licence":"US government open data","attribution":"NOAA GFS-Wave: data from the US National Weather Service, public domain; attribution requested.","history_licence":"CC BY 4.0","history_attribution":"Contains modified Copernicus Climate Change Service information 2026. Neither the European Commission nor ECMWF is responsible for any use that may be made of the Copernicus information or data it contains."}]},"note":"values: readable with atlas_get_point_values. api_loadable: past dates the API can load from the archive (a cold load, 25 units); other archives answer only dates already in the history cache (atlas_layer_coverage lists them)."},"citations":[],"attribution":[],"notes":[],"links":{},"usage":{"units":1,"units_today":2,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"group","in":"query","required":false,"description":"Layer group to describe in detail.","schema":{"type":"string","enum":["air","weather","wind","rain","climate","ocean","fires","satellite","magnetism","events","japan"]}},{"name":"response_format","in":"query","required":false,"description":"concise (default) or detailed; this tool returns the same data in both.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"List layers (JSON body)","description":"The atlas's layers by group with ids, units, data kind (forecast, analysis, reanalysis, observation, climatology, model), whether values can be read, the archive start, whether the API can load past dates, licence and attribution. Use it to choose layer ids; atlas_layer_coverage gives one layer's exact dates. Pass `group` for notes and the current forecast range. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_list_layers_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"The layers by group.","properties":{"groups":{"type":"object","description":"Layer group name -> its layers (id, name, units, data_kind, values, history_from, api_loadable, licence, attribution).","additionalProperties":{"type":"array","items":{"type":"object","description":"One layer."},"description":"Layers of a group."}},"note":{"type":["string","null"],"description":"What values and api_loadable mean."},"hint":{"type":["string","null"],"description":"What to try next."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_list_layers","data":{"groups":{"Ocean":[{"id":"sst","name":"Sea surface temperature","units":"°C","data_kind":"analysis","history_from":"1981-09-01","history":{"start":"1981-09-01","resolution":"day","source":"NOAA OISST analysis"},"current":{"first":"2026-10-19T12:00:00Z","last":"2026-10-21T12:00:00Z","frames":3,"status":"stale"},"note":"NOAA OISST daily mean analysis, 0.25°, open water only; recent days are preliminary.","values":true,"api_loadable":true,"licence":"US government open data","attribution":"NOAA OISST v2.1: NOAA National Centers for Environmental Information, public domain; attribution requested."},{"id":"waves","name":"Wave height","units":"m","data_kind":"forecast","history_from":"1940-01-01","history":{"start":"1940-01-01","resolution":"hour","source":"ERA5 reanalysis"},"current":{"first":"2026-10-24T00:00:00Z","last":"2026-10-27T18:00:00Z","frames":8,"status":"stale"},"note":"NOAA GFS-Wave significant wave height, 0.25°; open ocean, not surf or harbour forecasts.","values":true,"api_loadable":true,"licence":"US government open data","attribution":"NOAA GFS-Wave: data from the US National Weather Service, public domain; attribution requested.","history_licence":"CC BY 4.0","history_attribution":"Contains modified Copernicus Climate Change Service information 2026. Neither the European Commission nor ECMWF is responsible for any use that may be made of the Copernicus information or data it contains."}]},"note":"values: readable with atlas_get_point_values. api_loadable: past dates the API can load from the archive (a cold load, 25 units); other archives answer only dates already in the history cache (atlas_layer_coverage lists them)."},"citations":[],"attribution":[],"notes":[],"links":{},"usage":{"units":1,"units_today":2,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"group":{"type":"string","enum":["air","weather","wind","rain","climate","ocean","fires","satellite","magnetism","events","japan"],"description":"Layer group to describe in detail."},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default) or detailed; this tool returns the same data in both."}},"additionalProperties":false},"example":{"group":"ocean"}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_layer_coverage":{"get":{"tags":["agent"],"summary":"Layer coverage","description":"Which times one layer can answer: the current snapshot (first, last, frames, model run), the archive range from provider metadata (start, end, final_through, resolution, api_loadable) and `retained`, the past dates already loaded that cost no cold load. Use it before asking for past dates or when a call returns not_retained or outside_snapshot. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_layer_coverage","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Which times one layer can answer.","properties":{"layer":{"type":["string","null"],"description":"Layer id."},"name":{"type":["string","null"],"description":"Layer name."},"current_snapshot":{"type":"object","description":"The current snapshot: first, last, frames, status, run_at."},"archive":{"type":"object","description":"Archive range from provider metadata: start, end, final_through, resolution, api_loadable; available false with a message when it cannot be read, and status busy with retry_after (seconds) when that is temporary (the provider did not answer): retry then."},"retained":{"type":"array","items":{"type":"object","description":"One retained past time.","properties":{"at":{"type":["string","null"],"description":"Archive time, ISO 8601 UTC."},"preliminary":{"type":["boolean","null"],"description":"Preliminary archive data."},"retained_until":{"type":["string","null"],"description":"Until when it is answered without a load (the cached map may be pruned sooner if the cache fills)."},"reused_until":{"type":["string","null"],"description":"Preliminary maps only: after this, asking for the time reloads it from the archive (a cold load)."}},"additionalProperties":false},"description":"Past times answered without a cold load."},"retained_note":{"type":["string","null"],"description":"What retained means."},"note":{"type":["string","null"],"description":"A note on coverage."},"licence":{"type":["string","null"],"description":"Licence of the current data."},"attribution":{"type":["string","null"],"description":"Credit line of the current data."},"history_licence":{"type":["string","null"],"description":"Licence of the archive."},"history_attribution":{"type":["string","null"],"description":"Credit line of the archive."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_layer_coverage","data":{"layer":"sst","name":"Sea surface temperature","current_snapshot":{"first":"2026-10-19T12:00:00Z","last":"2026-10-21T12:00:00Z","frames":3,"status":"stale"},"archive":{"start":"1981-09-01","end":"2026-10-21","final_through":"2026-10-10","resolution":"day","available":true,"provider":"NOAA OISST v2.1","api_loadable":true},"note":"Dates after final_through are preliminary and may be revised.","retained":[],"retained_note":"Past dates listed in retained are answered without a cold load until retained_until (sooner if the 64-map history cache fills), or for a preliminary map until reused_until, after which it is reloaded.","licence":"US government open data","attribution":"NOAA OISST v2.1: NOAA National Centers for Environmental Information, public domain; attribution requested."},"citations":[],"attribution":[],"notes":[],"links":{},"usage":{"units":1,"units_today":3,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"layer","in":"query","required":true,"description":"Layer id.","schema":{"type":"string","enum":["magnetism","pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","fires","earthquakes","japan_flood_max","japan_flood_planned","japan_tsunami","japan_storm_surge","japan_landslide","japan_heavy_snow","japan_population_change","japan_earthquake","japan_land_price","japan_vacancy","volcanoes"]}},{"name":"response_format","in":"query","required":false,"description":"concise (default) or detailed; this tool returns the same data in both.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Layer coverage (JSON body)","description":"Which times one layer can answer: the current snapshot (first, last, frames, model run), the archive range from provider metadata (start, end, final_through, resolution, api_loadable) and `retained`, the past dates already loaded that cost no cold load. Use it before asking for past dates or when a call returns not_retained or outside_snapshot. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_layer_coverage_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Which times one layer can answer.","properties":{"layer":{"type":["string","null"],"description":"Layer id."},"name":{"type":["string","null"],"description":"Layer name."},"current_snapshot":{"type":"object","description":"The current snapshot: first, last, frames, status, run_at."},"archive":{"type":"object","description":"Archive range from provider metadata: start, end, final_through, resolution, api_loadable; available false with a message when it cannot be read, and status busy with retry_after (seconds) when that is temporary (the provider did not answer): retry then."},"retained":{"type":"array","items":{"type":"object","description":"One retained past time.","properties":{"at":{"type":["string","null"],"description":"Archive time, ISO 8601 UTC."},"preliminary":{"type":["boolean","null"],"description":"Preliminary archive data."},"retained_until":{"type":["string","null"],"description":"Until when it is answered without a load (the cached map may be pruned sooner if the cache fills)."},"reused_until":{"type":["string","null"],"description":"Preliminary maps only: after this, asking for the time reloads it from the archive (a cold load)."}},"additionalProperties":false},"description":"Past times answered without a cold load."},"retained_note":{"type":["string","null"],"description":"What retained means."},"note":{"type":["string","null"],"description":"A note on coverage."},"licence":{"type":["string","null"],"description":"Licence of the current data."},"attribution":{"type":["string","null"],"description":"Credit line of the current data."},"history_licence":{"type":["string","null"],"description":"Licence of the archive."},"history_attribution":{"type":["string","null"],"description":"Credit line of the archive."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_layer_coverage","data":{"layer":"sst","name":"Sea surface temperature","current_snapshot":{"first":"2026-10-19T12:00:00Z","last":"2026-10-21T12:00:00Z","frames":3,"status":"stale"},"archive":{"start":"1981-09-01","end":"2026-10-21","final_through":"2026-10-10","resolution":"day","available":true,"provider":"NOAA OISST v2.1","api_loadable":true},"note":"Dates after final_through are preliminary and may be revised.","retained":[],"retained_note":"Past dates listed in retained are answered without a cold load until retained_until (sooner if the 64-map history cache fills), or for a preliminary map until reused_until, after which it is reloaded.","licence":"US government open data","attribution":"NOAA OISST v2.1: NOAA National Centers for Environmental Information, public domain; attribution requested."},"citations":[],"attribution":[],"notes":[],"links":{},"usage":{"units":1,"units_today":3,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"layer":{"type":"string","enum":["magnetism","pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","fires","earthquakes","japan_flood_max","japan_flood_planned","japan_tsunami","japan_storm_surge","japan_landslide","japan_heavy_snow","japan_population_change","japan_earthquake","japan_land_price","japan_vacancy","volcanoes"],"description":"Layer id."},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default) or detailed; this tool returns the same data in both."}},"additionalProperties":false,"required":["layer"]},"example":{"layer":"sst"}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_status":{"get":{"tags":["agent"],"summary":"Data freshness","description":"Freshness of every live source: model run time, retrieval time, valid-to time and status (ready, stale, unavailable), and the atlas release id. Use it to say how current an answer is or to explain a stale value. 1 unit (GET /api/v1/agent/status gives the same without a key).\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_status","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Freshness of every live source.","properties":{"release":{"type":["string","null"],"description":"Atlas release id."},"checked_at":{"type":["string","null"],"description":"When this was checked, ISO 8601 UTC."},"columns":{"type":"array","items":{"type":"string","enum":["source","provider","status","run_at","retrieved_at","valid_to","version"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"sources":{"type":"array","items":{"type":"object","description":"One source.","properties":{"source":{"type":["string","null"],"description":"The source's source."},"provider":{"type":["string","null"],"description":"The source's provider."},"status":{"type":["string","null"],"description":"The source's status."},"run_at":{"type":["string","null"],"description":"The source's run at."},"retrieved_at":{"type":["string","null"],"description":"The source's retrieved at."},"valid_to":{"type":["string","null"],"description":"The source's valid to."},"version":{"type":["string","null"],"description":"The source's version."}},"additionalProperties":false},"description":"Every live source (detailed)."},"note":{"type":["string","null"],"description":"What the status values mean (detailed)."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_status","data":{"release":"development","checked_at":"2026-10-25T14:28:48Z","columns":["source","provider","status","run_at","retrieved_at","valid_to","version"],"rows":[["air","FMI SILAM global air-quality forecast","stale","2026-10-21T00:00:00Z","2026-10-23T11:30:53.340790+00:00","2026-10-25T00:00:00Z","20261023T113053-0e5e46f7"],["weather","NOAA GFS","stale","2026-10-23T18:00:00Z","2026-10-24T00:10:26.664616+00:00","2026-10-27T18:00:00Z","20261024T001026-246ae636"],["uv","NOAA CPC UV forecast","stale","2026-10-22T12:00:00Z","2026-10-23T11:30:57.484515+00:00","2026-10-26T12:00:00Z","20261023T113057-dcdc73f1"],["climate","NOAA PSL NCEP/NCAR Reanalysis 1","ready",null,"2026-10-02T07:42:32.386129+00:00",null,"20261002T074232-71301ddf"],["fires","NASA FIRMS NOAA-20 VIIRS","stale",null,"2026-10-24T02:49:13.491347+00:00",null,"20261024T024913-27dda1fd"],["waves","NOAA GFS-Wave","stale","2026-10-23T18:00:00Z","2026-10-24T00:15:27.333064+00:00","2026-10-27T18:00:00Z","20261024T001527-c3f57b77"],["ocean","NOAA OISST v2.1","stale",null,"2026-10-23T11:31:01.525422+00:00","2026-10-24T00:00:00Z","20261023T113101-d781bc87"],["earthquakes","USGS","stale","2026-10-24T03:24:11.000Z","2026-10-24T03:25:05.254Z",null,"58ff1418b119c6a3abefdec3"]]},"citations":[],"attribution":[],"notes":["status: ready, stale (an expected refresh is overdue) or unavailable. Magnetic models are local files and do not expire."],"links":{},"usage":{"units":1,"units_today":4,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"response_format","in":"query","required":false,"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Data freshness (JSON body)","description":"Freshness of every live source: model run time, retrieval time, valid-to time and status (ready, stale, unavailable), and the atlas release id. Use it to say how current an answer is or to explain a stale value. 1 unit (GET /api/v1/agent/status gives the same without a key).\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_status_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Freshness of every live source.","properties":{"release":{"type":["string","null"],"description":"Atlas release id."},"checked_at":{"type":["string","null"],"description":"When this was checked, ISO 8601 UTC."},"columns":{"type":"array","items":{"type":"string","enum":["source","provider","status","run_at","retrieved_at","valid_to","version"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"sources":{"type":"array","items":{"type":"object","description":"One source.","properties":{"source":{"type":["string","null"],"description":"The source's source."},"provider":{"type":["string","null"],"description":"The source's provider."},"status":{"type":["string","null"],"description":"The source's status."},"run_at":{"type":["string","null"],"description":"The source's run at."},"retrieved_at":{"type":["string","null"],"description":"The source's retrieved at."},"valid_to":{"type":["string","null"],"description":"The source's valid to."},"version":{"type":["string","null"],"description":"The source's version."}},"additionalProperties":false},"description":"Every live source (detailed)."},"note":{"type":["string","null"],"description":"What the status values mean (detailed)."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_status","data":{"release":"development","checked_at":"2026-10-25T14:28:48Z","columns":["source","provider","status","run_at","retrieved_at","valid_to","version"],"rows":[["air","FMI SILAM global air-quality forecast","stale","2026-10-21T00:00:00Z","2026-10-23T11:30:53.340790+00:00","2026-10-25T00:00:00Z","20261023T113053-0e5e46f7"],["weather","NOAA GFS","stale","2026-10-23T18:00:00Z","2026-10-24T00:10:26.664616+00:00","2026-10-27T18:00:00Z","20261024T001026-246ae636"],["uv","NOAA CPC UV forecast","stale","2026-10-22T12:00:00Z","2026-10-23T11:30:57.484515+00:00","2026-10-26T12:00:00Z","20261023T113057-dcdc73f1"],["climate","NOAA PSL NCEP/NCAR Reanalysis 1","ready",null,"2026-10-02T07:42:32.386129+00:00",null,"20261002T074232-71301ddf"],["fires","NASA FIRMS NOAA-20 VIIRS","stale",null,"2026-10-24T02:49:13.491347+00:00",null,"20261024T024913-27dda1fd"],["waves","NOAA GFS-Wave","stale","2026-10-23T18:00:00Z","2026-10-24T00:15:27.333064+00:00","2026-10-27T18:00:00Z","20261024T001527-c3f57b77"],["ocean","NOAA OISST v2.1","stale",null,"2026-10-23T11:31:01.525422+00:00","2026-10-24T00:00:00Z","20261023T113101-d781bc87"],["earthquakes","USGS","stale","2026-10-24T03:24:11.000Z","2026-10-24T03:25:05.254Z",null,"58ff1418b119c6a3abefdec3"]]},"citations":[],"attribution":[],"notes":["status: ready, stale (an expected refresh is overdue) or unavailable. Magnetic models are local files and do not expire."],"links":{},"usage":{"units":1,"units_today":4,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value."}},"additionalProperties":false},"example":{}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_get_point_values":{"get":{"tags":["agent"],"summary":"Values at places","description":"Values of 1–8 data layers at 1–10 places (20 on Pro) at one time: weather, air quality, sea temperature, waves, UV, fire detections nearby, climate normals and the magnetic field. Use atlas_get_time_series for how a value changes, atlas_area_stats for a statistic over an area and atlas_find_events for individual earthquakes and fires. Each value has units, data_kind, valid_time and a citation; the nearest frame is used and offset_minutes reported. Give each place as lat/lon, place_id or place (with place_country for an ambiguous name). 1 unit per place. Each uncached past date adds one cold load (25 units) per layer family, at most 2 per call; families: temperature/humidity/feels_like/dew_point/wet_bulb, solar/precipitation/clouds/cape, wind/gusts/pressure, snow_depth/soil_moisture; any other layer alone. At most 500 rows per answer (100 detailed); a magnetic layer is five rows.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_get_point_values","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Values at the places.","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place","lat","lon","layer","value","units","data_kind","valid_time","local_time","offset_minutes","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"places":{"type":"array","items":{"type":"object","description":"A resolved place.","properties":{"place":{"type":"string","description":"The place name as requested, for a place that did not resolve."},"place_country":{"type":"string","description":"Its country as requested (unresolved places only)."},"status":{"type":"string","description":"Public error code of a place that did not resolve (its values are in unavailable)."},"place_id":{"type":"string","description":"Stable id to pass to other tools."},"name":{"type":"string","description":"Place name."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code."},"lat":{"type":"number","description":"Latitude."},"lon":{"type":"number","description":"Longitude."},"candidates":{"type":"array","items":{"type":"object","description":"Another place with the same name: place_id, name, country, ..."},"description":"Other places with this name; the most prominent was chosen."}},"additionalProperties":false},"description":"The places as resolved, in request order."},"unavailable":{"type":"array","items":{"type":"object","description":"A value that could not be given: layer, place, code, reason, message, hint."},"description":"Values that could not be given, with the public error code and reason."},"points":{"type":"array","items":{"type":"object","description":"One place's values (detailed).","properties":{"place":{"type":"object","description":"The place as resolved."},"values":{"type":"array","items":{"type":"object","description":"One value with units, data_kind and valid_time (fire detections: the window, an ISO interval 'start/end')."},"description":"Values at this place."},"unavailable":{"type":"array","items":{"type":"object","description":"A value that could not be given: layer, place, code, reason, message, hint."},"description":"Values that could not be given, with the public error code and reason."},"error":{"type":"object","description":"Why this place has no values."}},"additionalProperties":false},"description":"Values per place (detailed)."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_get_point_values","data":{"columns":["place","lat","lon","layer","value","units","data_kind","valid_time","local_time","offset_minutes","cite"],"rows":[["Lisbon, PT",38.7251,-9.1498,"temperature",18.8,"°C","forecast","2026-10-25T18:00:00Z","2026-10-25T18:00+00:00",211,"ceca001-1"],["Lisbon, PT",38.7251,-9.3998,"sst",18.0,"°C","analysis","2026-10-21T12:00:00Z","2026-10-21T13:00+01:00",-5909,"ceca001-2"]],"unavailable":[{"place":"Lisbon, PT","layer":"pm25","code":"frame_too_far","reason":"frame_too_far","message":"The latest Air quality · PM2.5 frame is 2026-10-25T00:00:00Z, 14 hours before now; this data is not current.","hint":"The data is not current; you may read 2026-10-25T00:00:00Z by passing it as the time."}],"places":[{"place_id":"geonames:2267057","name":"Lisbon","country":"PT","lat":38.7251,"lon":-9.1498}]},"citations":[{"id":"ceca001-1","layer":"temperature","provider":"NOAA GFS","data_kind":"forecast","preliminary":false,"snapshot_version":"20261024T001026-246ae636","retained_until":"2026-10-31T00:10:26Z","source_url":"https://worldinlayers.com/api/v1/environment/point?ident=temperature&frame=2026-10-25T18%3A00%3A00Z&lat=38.7251&lon=-9.1498&version=20261024T001026-246ae636","stale":true},{"id":"ceca001-2","layer":"sst","provider":"NOAA OISST v2.1","data_kind":"analysis","preliminary":true,"snapshot_version":"20261023T113101-d781bc87","retained_until":"2026-10-30T11:31:01Z","source_url":"https://worldinlayers.com/api/v1/environment/point?ident=sst&frame=2026-10-21T00%3A00%3A00Z&lat=38.7251&lon=-9.3998&version=20261023T113101-d781bc87","stale":true}],"attribution":["NOAA GFS: data from the US National Weather Service, public domain; attribution requested.","NOAA OISST v2.1: NOAA National Centers for Environmental Information, public domain; attribution requested.","Places: GeoNames (geonames.org), CC BY 4.0. Contains Royal Mail data © Royal Mail copyright and database right 2022."],"notes":["NOAA GFS data is stale: an expected refresh is overdue (latest run 2026-10-23T18:00:00Z).","Temperature at Lisbon, PT: there is no frame at the requested time (now, 2026-10-25 14:28 UTC); the value is for the nearest frame, 2026-10-25 18:00 UTC (3 h 31 min later).","NOAA OISST v2.1 data is stale: an expected refresh is overdue (retrieved 2026-10-23T11:31:01Z).","Sea surface temperature at Lisbon, PT: the nearest open-water value, 22 km from the requested point (which has none). Sea surface temperature at Lisbon, PT: there is no frame at the requested time (now, 2026-10-25 14:28 UTC); the value is for the nearest frame, 2026-10-21 12:00 UTC (4 days 2 h 29 min earlier)."],"links":{"map":"https://worldinlayers.com/temperature?stack=%5B%7B%22id%22%3A%22temperature%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%2C%7B%22id%22%3A%22pm25%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%2C%7B%22id%22%3A%22sst%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%5D&center=-9.1498%2C38.7251&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-38.7251--9.1498%22%2C%22name%22%3A%22Lisbon%2C+PT%22%2C%22latitude%22%3A38.7251%2C%22longitude%22%3A-9.1498%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":1,"units_today":5,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}},"text/csv":{"schema":{"type":"string","description":"RFC 4180 CSV, CRLF line endings, UTF-8 without BOM."},"example":"place,lat,lon,layer,value,units,data_kind,valid_time,local_time,offset_minutes,provider,preliminary,stale,predictive,snapshot_version,source_url,status,error\r\n\"Lisbon, PT\",38.7251,-9.1498,temperature,18.8,°C,forecast,2026-10-25T18:00:00Z,2026-10-25T18:00+00:00,211,NOAA GFS,false,true,,20261024T001026-246ae636,https://worldinlayers.com/api/v1/environment/point?ident=temperature&frame=2026-10-25T18%3A00%3A00Z&lat=38.7251&lon=-9.1498&version=20261024T001026-246ae636,ok,\r\n\"Lisbon, PT\",38.7251,-9.3998,sst,18.0,°C,analysis,2026-10-21T12:00:00Z,2026-10-21T13:00+01:00,-5909,NOAA OISST v2.1,true,true,,20261023T113101-d781bc87,https://worldinlayers.com/api/v1/environment/point?ident=sst&frame=2026-10-21T00%3A00%3A00Z&lat=38.7251&lon=-9.3998&version=20261023T113101-d781bc87,ok,\r\n\"Lisbon, PT\",,,pm25,,,,,,,,,,,,,frame_too_far,\"The latest Air quality · PM2.5 frame is 2026-10-25T00:00:00Z, 14 hours before now; this data is not current.\"\r\n"}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_get_point_values","error":{"code":"ambiguous_place","reason":"ambiguous_place","message":"Several places are named 'Springfield'.","hint":"Pass one candidate's place_id (or its lat and lon), or add `place_country` (ISO 3166-1 alpha-2) to narrow the name.","candidates":[{"place_id":"geonames:4409896","name":"Springfield","admin":"Missouri, Greene County","country":"US","kind":"city","lat":37.2153,"lon":-93.2982,"population":170188,"match":"exact"},{"place_id":"geonames:4951788","name":"Springfield","admin":"Massachusetts, Hampden County","country":"US","kind":"city","lat":42.1015,"lon":-72.5898,"population":154341,"match":"exact"},{"place_id":"geonames:4250542","name":"Springfield","admin":"Illinois, Sangamon County","country":"US","kind":"city","lat":39.8017,"lon":-89.6437,"population":114394,"match":"exact"},{"place_id":"geonames:5754005","name":"Springfield","admin":"Oregon, Lane County","country":"US","kind":"city","lat":44.0462,"lon":-123.022,"population":60870,"match":"exact"},{"place_id":"geonames:4525353","name":"Springfield","admin":"Ohio, Clark County","country":"US","kind":"city","lat":39.9242,"lon":-83.8088,"population":59680,"match":"exact"}],"next":{"tool":"atlas_find_place","args":{"query":"Springfield"}}},"usage":{"units":0,"units_today":26,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"points","in":"query","required":false,"description":"JSON array of places, or use lat, lon, place, place_id and place_country for one place. 1–10 places (20 on Pro).","schema":{"type":"string"}},{"name":"lat","in":"query","required":false,"description":"One place: Latitude in degrees, -90 to 90.","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"description":"One place: Longitude in degrees, -180 to 180.","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"place","in":"query","required":false,"description":"One place: A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","schema":{"type":"string","maxLength":120}},{"name":"place_id","in":"query","required":false,"description":"One place: A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","schema":{"type":"string","maxLength":80}},{"name":"place_country","in":"query","required":false,"description":"One place: ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"layers","in":"query","required":true,"description":"1–8 layer ids, e.g. temperature, wind, pm25. Repeat the parameter or separate values with commas.","schema":{"type":"array","items":{"type":"string","enum":["pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","fires","magnetism"],"description":"Layer id."},"minItems":1,"maxItems":8},"style":"form","explode":true},{"name":"time","in":"query","required":false,"description":"'now' (default); YYYY-MM-DD (12:00 UTC, or local noon with `tz`); YYYY-MM-DDTHH:MM with Z or an offset (local time with `tz` when neither is given); '01'–'12' for a month of the 1991–2020 climate layers; YYYY-MM for one past month of a climate layer.","schema":{"type":"string","maxLength":40}},{"name":"tz","in":"query","required":false,"description":"IANA time zone (e.g. Europe/Lisbon) for local times in the output and for date-only times.","schema":{"type":"string","maxLength":64}},{"name":"snapshot_version","in":"query","required":false,"description":"Answer from this snapshot (a citation's snapshot_version, or the one in reproduce) instead of the current one, while it is retained; default current.","schema":{"type":"string","maxLength":60}},{"name":"response_format","in":"query","required":false,"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default) or csv: the concise table as CSV, up to 20,000 rows.","schema":{"type":"string","enum":["json","csv"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Values at places (JSON body)","description":"Values of 1–8 data layers at 1–10 places (20 on Pro) at one time: weather, air quality, sea temperature, waves, UV, fire detections nearby, climate normals and the magnetic field. Use atlas_get_time_series for how a value changes, atlas_area_stats for a statistic over an area and atlas_find_events for individual earthquakes and fires. Each value has units, data_kind, valid_time and a citation; the nearest frame is used and offset_minutes reported. Give each place as lat/lon, place_id or place (with place_country for an ambiguous name). 1 unit per place. Each uncached past date adds one cold load (25 units) per layer family, at most 2 per call; families: temperature/humidity/feels_like/dew_point/wet_bulb, solar/precipitation/clouds/cape, wind/gusts/pressure, snow_depth/soil_moisture; any other layer alone. At most 500 rows per answer (100 detailed); a magnetic layer is five rows.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_get_point_values_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Values at the places.","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place","lat","lon","layer","value","units","data_kind","valid_time","local_time","offset_minutes","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"places":{"type":"array","items":{"type":"object","description":"A resolved place.","properties":{"place":{"type":"string","description":"The place name as requested, for a place that did not resolve."},"place_country":{"type":"string","description":"Its country as requested (unresolved places only)."},"status":{"type":"string","description":"Public error code of a place that did not resolve (its values are in unavailable)."},"place_id":{"type":"string","description":"Stable id to pass to other tools."},"name":{"type":"string","description":"Place name."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code."},"lat":{"type":"number","description":"Latitude."},"lon":{"type":"number","description":"Longitude."},"candidates":{"type":"array","items":{"type":"object","description":"Another place with the same name: place_id, name, country, ..."},"description":"Other places with this name; the most prominent was chosen."}},"additionalProperties":false},"description":"The places as resolved, in request order."},"unavailable":{"type":"array","items":{"type":"object","description":"A value that could not be given: layer, place, code, reason, message, hint."},"description":"Values that could not be given, with the public error code and reason."},"points":{"type":"array","items":{"type":"object","description":"One place's values (detailed).","properties":{"place":{"type":"object","description":"The place as resolved."},"values":{"type":"array","items":{"type":"object","description":"One value with units, data_kind and valid_time (fire detections: the window, an ISO interval 'start/end')."},"description":"Values at this place."},"unavailable":{"type":"array","items":{"type":"object","description":"A value that could not be given: layer, place, code, reason, message, hint."},"description":"Values that could not be given, with the public error code and reason."},"error":{"type":"object","description":"Why this place has no values."}},"additionalProperties":false},"description":"Values per place (detailed)."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_get_point_values","data":{"columns":["place","lat","lon","layer","value","units","data_kind","valid_time","local_time","offset_minutes","cite"],"rows":[["Lisbon, PT",38.7251,-9.1498,"temperature",18.8,"°C","forecast","2026-10-25T18:00:00Z","2026-10-25T18:00+00:00",211,"ceca001-1"],["Lisbon, PT",38.7251,-9.3998,"sst",18.0,"°C","analysis","2026-10-21T12:00:00Z","2026-10-21T13:00+01:00",-5909,"ceca001-2"]],"unavailable":[{"place":"Lisbon, PT","layer":"pm25","code":"frame_too_far","reason":"frame_too_far","message":"The latest Air quality · PM2.5 frame is 2026-10-25T00:00:00Z, 14 hours before now; this data is not current.","hint":"The data is not current; you may read 2026-10-25T00:00:00Z by passing it as the time."}],"places":[{"place_id":"geonames:2267057","name":"Lisbon","country":"PT","lat":38.7251,"lon":-9.1498}]},"citations":[{"id":"ceca001-1","layer":"temperature","provider":"NOAA GFS","data_kind":"forecast","preliminary":false,"snapshot_version":"20261024T001026-246ae636","retained_until":"2026-10-31T00:10:26Z","source_url":"https://worldinlayers.com/api/v1/environment/point?ident=temperature&frame=2026-10-25T18%3A00%3A00Z&lat=38.7251&lon=-9.1498&version=20261024T001026-246ae636","stale":true},{"id":"ceca001-2","layer":"sst","provider":"NOAA OISST v2.1","data_kind":"analysis","preliminary":true,"snapshot_version":"20261023T113101-d781bc87","retained_until":"2026-10-30T11:31:01Z","source_url":"https://worldinlayers.com/api/v1/environment/point?ident=sst&frame=2026-10-21T00%3A00%3A00Z&lat=38.7251&lon=-9.3998&version=20261023T113101-d781bc87","stale":true}],"attribution":["NOAA GFS: data from the US National Weather Service, public domain; attribution requested.","NOAA OISST v2.1: NOAA National Centers for Environmental Information, public domain; attribution requested.","Places: GeoNames (geonames.org), CC BY 4.0. Contains Royal Mail data © Royal Mail copyright and database right 2022."],"notes":["NOAA GFS data is stale: an expected refresh is overdue (latest run 2026-10-23T18:00:00Z).","Temperature at Lisbon, PT: there is no frame at the requested time (now, 2026-10-25 14:28 UTC); the value is for the nearest frame, 2026-10-25 18:00 UTC (3 h 31 min later).","NOAA OISST v2.1 data is stale: an expected refresh is overdue (retrieved 2026-10-23T11:31:01Z).","Sea surface temperature at Lisbon, PT: the nearest open-water value, 22 km from the requested point (which has none). Sea surface temperature at Lisbon, PT: there is no frame at the requested time (now, 2026-10-25 14:28 UTC); the value is for the nearest frame, 2026-10-21 12:00 UTC (4 days 2 h 29 min earlier)."],"links":{"map":"https://worldinlayers.com/temperature?stack=%5B%7B%22id%22%3A%22temperature%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%2C%7B%22id%22%3A%22pm25%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%2C%7B%22id%22%3A%22sst%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%5D&center=-9.1498%2C38.7251&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-38.7251--9.1498%22%2C%22name%22%3A%22Lisbon%2C+PT%22%2C%22latitude%22%3A38.7251%2C%22longitude%22%3A-9.1498%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":1,"units_today":5,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}},"text/csv":{"schema":{"type":"string","description":"RFC 4180 CSV, CRLF line endings, UTF-8 without BOM."},"example":"place,lat,lon,layer,value,units,data_kind,valid_time,local_time,offset_minutes,provider,preliminary,stale,predictive,snapshot_version,source_url,status,error\r\n\"Lisbon, PT\",38.7251,-9.1498,temperature,18.8,°C,forecast,2026-10-25T18:00:00Z,2026-10-25T18:00+00:00,211,NOAA GFS,false,true,,20261024T001026-246ae636,https://worldinlayers.com/api/v1/environment/point?ident=temperature&frame=2026-10-25T18%3A00%3A00Z&lat=38.7251&lon=-9.1498&version=20261024T001026-246ae636,ok,\r\n\"Lisbon, PT\",38.7251,-9.3998,sst,18.0,°C,analysis,2026-10-21T12:00:00Z,2026-10-21T13:00+01:00,-5909,NOAA OISST v2.1,true,true,,20261023T113101-d781bc87,https://worldinlayers.com/api/v1/environment/point?ident=sst&frame=2026-10-21T00%3A00%3A00Z&lat=38.7251&lon=-9.3998&version=20261023T113101-d781bc87,ok,\r\n\"Lisbon, PT\",,,pm25,,,,,,,,,,,,,frame_too_far,\"The latest Air quality · PM2.5 frame is 2026-10-25T00:00:00Z, 14 hours before now; this data is not current.\"\r\n"}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_get_point_values","error":{"code":"ambiguous_place","reason":"ambiguous_place","message":"Several places are named 'Springfield'.","hint":"Pass one candidate's place_id (or its lat and lon), or add `place_country` (ISO 3166-1 alpha-2) to narrow the name.","candidates":[{"place_id":"geonames:4409896","name":"Springfield","admin":"Missouri, Greene County","country":"US","kind":"city","lat":37.2153,"lon":-93.2982,"population":170188,"match":"exact"},{"place_id":"geonames:4951788","name":"Springfield","admin":"Massachusetts, Hampden County","country":"US","kind":"city","lat":42.1015,"lon":-72.5898,"population":154341,"match":"exact"},{"place_id":"geonames:4250542","name":"Springfield","admin":"Illinois, Sangamon County","country":"US","kind":"city","lat":39.8017,"lon":-89.6437,"population":114394,"match":"exact"},{"place_id":"geonames:5754005","name":"Springfield","admin":"Oregon, Lane County","country":"US","kind":"city","lat":44.0462,"lon":-123.022,"population":60870,"match":"exact"},{"place_id":"geonames:4525353","name":"Springfield","admin":"Ohio, Clark County","country":"US","kind":"city","lat":39.9242,"lon":-83.8088,"population":59680,"match":"exact"}],"next":{"tool":"atlas_find_place","args":{"query":"Springfield"}}},"usage":{"units":0,"units_today":26,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude in degrees, -90 to 90.","minimum":-90,"maximum":90},"lon":{"type":"number","description":"Longitude in degrees, -180 to 180.","minimum":-180,"maximum":180},"place":{"type":"string","description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","maxLength":120},"place_id":{"type":"string","description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","maxLength":80},"place_country":{"type":"string","description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","pattern":"^[A-Za-z]{2}$"}},"additionalProperties":false,"description":"One place, given one way: lat and lon, or place_id, or place (with place_country to narrow the name)."},"minItems":1,"maxItems":20,"description":"1–10 places (20 on Pro)."},"layers":{"type":"array","items":{"type":"string","enum":["pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","fires","magnetism"],"description":"Layer id."},"minItems":1,"maxItems":8,"description":"1–8 layer ids, e.g. temperature, wind, pm25."},"time":{"type":"string","description":"'now' (default); YYYY-MM-DD (12:00 UTC, or local noon with `tz`); YYYY-MM-DDTHH:MM with Z or an offset (local time with `tz` when neither is given); '01'–'12' for a month of the 1991–2020 climate layers; YYYY-MM for one past month of a climate layer.","maxLength":40},"tz":{"type":"string","description":"IANA time zone (e.g. Europe/Lisbon) for local times in the output and for date-only times.","maxLength":64},"snapshot_version":{"type":"string","description":"Answer from this snapshot (a citation's snapshot_version, or the one in reproduce) instead of the current one, while it is retained; default current.","maxLength":60},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value."}},"additionalProperties":false,"required":["points","layers"]},"example":{"points":[{"place":"Lisbon","place_country":"PT"}],"layers":["temperature","pm25","sst"],"tz":"Europe/Lisbon"}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default) or csv: the concise table as CSV, up to 20,000 rows.","schema":{"type":"string","enum":["json","csv"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_get_magnetic_field":{"get":{"tags":["agent"],"summary":"Magnetic field","description":"Earth's magnetic field at one place and date from a geomagnetic model: intensity F, declination D, inclination I, H and Z, yearly change and the change since an optional baseline date. Models: igrf14 (1900–2030, default), wmm2025/wmmhr2025, chaos8 (1999–2026), cals10k, ggf100k, ggfmb (deep time). Give the place as lat/lon, place_id or place (with place_country for an ambiguous name). Use atlas_get_time_series for change over years. Model values, not navigation guidance. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_get_magnetic_field","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"The magnetic field at one place.","properties":{"point":{"type":"object","description":"The place: lat, lon, name, altitude_km, place_id, country."},"model":{"type":"object","description":"The model: id, version, kind, attribution, uncertainty."},"date":{"type":["string","null"],"description":"The date evaluated."},"columns":{"type":"array","items":{"type":"string","enum":["quantity","value","units","valid_time","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"values":{"type":"array","items":{"type":"object","description":"One component."},"description":"F, D, I, H, Z and yearly change."},"baseline":{"type":"array","items":{"type":"object","description":"One change."},"description":"Change since baseline_date."},"caveat":{"type":["string","null"],"description":"Model values are not navigation guidance."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_get_magnetic_field","data":{"point":{"lat":47.87,"lon":18.19,"name":"47.8700, 18.1900","altitude_km":0.0},"model":{"id":"igrf14","version":"IGRF-14","kind":"model","attribution":"NOAA NCEI / IAGA","uncertainty":"Model estimates; local and external fields are not fully represented.","valid_from":"1900-01-01","valid_to":"2030-01-01","predictive_from":"2025-01-01","predictive":true},"date":"2026-10-24","columns":["quantity","value","units","valid_time","cite"],"rows":[["Total field intensity F · IGRF-14",49246,"nT","2026-10-24","caf9a1f-1"],["Declination D (east positive) · IGRF-14",5.69,"degrees","2026-10-24","caf9a1f-1"],["Inclination I (down positive) · IGRF-14",64.64,"degrees","2026-10-24","caf9a1f-1"],["Horizontal intensity H · IGRF-14",21089,"nT","2026-10-24","caf9a1f-1"],["Vertical intensity Z (down positive) · IGRF-14",44502,"nT","2026-10-24","caf9a1f-1"],["Yearly change of F at 2026-10-24 · IGRF-14",50.4,"nT/year","2026-10-24","caf9a1f-2"]]},"citations":[{"id":"caf9a1f-1","layer":"magnetism","provider":"IGRF-14 (NOAA NCEI / IAGA)","data_kind":"model","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/point?lat=47.87&lon=18.19&model=igrf14&date=2026-10-24","model":"igrf14","predictive":true},{"id":"caf9a1f-2","layer":"magnetism","provider":"IGRF-14","data_kind":"model","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/point?lat=47.87&lon=18.19&model=igrf14&date=2026-10-24","model":"igrf14","predictive":true}],"attribution":["Magnetic field: IGRF-14, International Association of Geomagnetism and Aeronomy (IAGA); coefficients distributed by NOAA NCEI."],"notes":["Model values, not certified navigation or aeronautical guidance. Official charts and national survey values take precedence; local anomalies from rocks, buildings or vehicles are not included."],"links":{"map":"https://worldinlayers.com/magnetic-field?date=2026-10-24&center=18.1900%2C47.8700&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-47.8700-18.1900%22%2C%22name%22%3A%2247.8700%2C+18.1900%22%2C%22latitude%22%3A47.87%2C%22longitude%22%3A18.19%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":1,"units_today":6,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_get_magnetic_field","error":{"code":"invalid_input","reason":"invalid_arguments","message":"args.lat: must be at most 90.","hint":"Check the arguments against this tool's inputSchema at /api/v1/agent/tools."}}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"lat","in":"query","required":false,"description":"Latitude in degrees, -90 to 90.","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"description":"Longitude in degrees, -180 to 180.","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"place","in":"query","required":false,"description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","schema":{"type":"string","maxLength":120}},{"name":"place_id","in":"query","required":false,"description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","schema":{"type":"string","maxLength":80}},{"name":"place_country","in":"query","required":false,"description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"date","in":"query","required":false,"description":"YYYY-MM-DD, a year such as 1995 or -5000; default today (UTC).","schema":{"type":"string","maxLength":20}},{"name":"model","in":"query","required":false,"description":"Model id; default igrf14.","schema":{"type":"string","enum":["igrf14","wmm2025","wmmhr2025","chaos8","chaos-crust","cals10k","ggf100k","ggfmb"]}},{"name":"altitude_km","in":"query","required":false,"description":"Height above the ellipsoid, 0–1000 km; default 0.","schema":{"type":"number","minimum":0,"maximum":1000}},{"name":"baseline_date","in":"query","required":false,"description":"Earlier date or year to compare with.","schema":{"type":"string","maxLength":20}},{"name":"response_format","in":"query","required":false,"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Magnetic field (JSON body)","description":"Earth's magnetic field at one place and date from a geomagnetic model: intensity F, declination D, inclination I, H and Z, yearly change and the change since an optional baseline date. Models: igrf14 (1900–2030, default), wmm2025/wmmhr2025, chaos8 (1999–2026), cals10k, ggf100k, ggfmb (deep time). Give the place as lat/lon, place_id or place (with place_country for an ambiguous name). Use atlas_get_time_series for change over years. Model values, not navigation guidance. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_get_magnetic_field_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"The magnetic field at one place.","properties":{"point":{"type":"object","description":"The place: lat, lon, name, altitude_km, place_id, country."},"model":{"type":"object","description":"The model: id, version, kind, attribution, uncertainty."},"date":{"type":["string","null"],"description":"The date evaluated."},"columns":{"type":"array","items":{"type":"string","enum":["quantity","value","units","valid_time","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"values":{"type":"array","items":{"type":"object","description":"One component."},"description":"F, D, I, H, Z and yearly change."},"baseline":{"type":"array","items":{"type":"object","description":"One change."},"description":"Change since baseline_date."},"caveat":{"type":["string","null"],"description":"Model values are not navigation guidance."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_get_magnetic_field","data":{"point":{"lat":47.87,"lon":18.19,"name":"47.8700, 18.1900","altitude_km":0.0},"model":{"id":"igrf14","version":"IGRF-14","kind":"model","attribution":"NOAA NCEI / IAGA","uncertainty":"Model estimates; local and external fields are not fully represented.","valid_from":"1900-01-01","valid_to":"2030-01-01","predictive_from":"2025-01-01","predictive":true},"date":"2026-10-24","columns":["quantity","value","units","valid_time","cite"],"rows":[["Total field intensity F · IGRF-14",49246,"nT","2026-10-24","caf9a1f-1"],["Declination D (east positive) · IGRF-14",5.69,"degrees","2026-10-24","caf9a1f-1"],["Inclination I (down positive) · IGRF-14",64.64,"degrees","2026-10-24","caf9a1f-1"],["Horizontal intensity H · IGRF-14",21089,"nT","2026-10-24","caf9a1f-1"],["Vertical intensity Z (down positive) · IGRF-14",44502,"nT","2026-10-24","caf9a1f-1"],["Yearly change of F at 2026-10-24 · IGRF-14",50.4,"nT/year","2026-10-24","caf9a1f-2"]]},"citations":[{"id":"caf9a1f-1","layer":"magnetism","provider":"IGRF-14 (NOAA NCEI / IAGA)","data_kind":"model","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/point?lat=47.87&lon=18.19&model=igrf14&date=2026-10-24","model":"igrf14","predictive":true},{"id":"caf9a1f-2","layer":"magnetism","provider":"IGRF-14","data_kind":"model","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/point?lat=47.87&lon=18.19&model=igrf14&date=2026-10-24","model":"igrf14","predictive":true}],"attribution":["Magnetic field: IGRF-14, International Association of Geomagnetism and Aeronomy (IAGA); coefficients distributed by NOAA NCEI."],"notes":["Model values, not certified navigation or aeronautical guidance. Official charts and national survey values take precedence; local anomalies from rocks, buildings or vehicles are not included."],"links":{"map":"https://worldinlayers.com/magnetic-field?date=2026-10-24&center=18.1900%2C47.8700&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-47.8700-18.1900%22%2C%22name%22%3A%2247.8700%2C+18.1900%22%2C%22latitude%22%3A47.87%2C%22longitude%22%3A18.19%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":1,"units_today":6,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_get_magnetic_field","error":{"code":"invalid_input","reason":"invalid_arguments","message":"args.lat: must be at most 90.","hint":"Check the arguments against this tool's inputSchema at /api/v1/agent/tools."}}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude in degrees, -90 to 90.","minimum":-90,"maximum":90},"lon":{"type":"number","description":"Longitude in degrees, -180 to 180.","minimum":-180,"maximum":180},"place":{"type":"string","description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","maxLength":120},"place_id":{"type":"string","description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","maxLength":80},"place_country":{"type":"string","description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","pattern":"^[A-Za-z]{2}$"},"date":{"type":"string","description":"YYYY-MM-DD, a year such as 1995 or -5000; default today (UTC).","maxLength":20},"model":{"type":"string","enum":["igrf14","wmm2025","wmmhr2025","chaos8","chaos-crust","cals10k","ggf100k","ggfmb"],"description":"Model id; default igrf14."},"altitude_km":{"type":"number","description":"Height above the ellipsoid, 0–1000 km; default 0.","minimum":0,"maximum":1000},"baseline_date":{"type":"string","description":"Earlier date or year to compare with.","maxLength":20},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value."}},"additionalProperties":false},"example":{"lat":47.87,"lon":18.19,"date":"2026-10-24"}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_get_time_series":{"get":{"tags":["agent"],"summary":"Time series","description":"Series of 1–8 layers at 1–10 places (20 on Pro). Environmental layers: the frames of the current snapshot between start and end (forecast hours, recent sea temperature days, the 12 climate months); with tz, date-only bounds mean the whole local day. Magnetism: 2–200 model samples evenly spaced from start to end inclusive. Multi-year environmental history is not available here (not_available names the retained range); read past dates and single moments with atlas_get_point_values and regions with atlas_area_stats. Places as lat/lon, place_id or place (with place_country). 2 units per place. At most 500 rows per JSON answer (places × layers × frames or samples, five per magnetic sample); format=csv on REST allows 20,000.\n\nCost: 2 unit(s). Scope: `read`.","operationId":"atlas_get_time_series","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Series at the places.","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place","place_id","lat","lon","layer","time","frame","local_time","value","units","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"places":{"type":"array","items":{"type":"object","description":"A resolved place.","properties":{"place":{"type":"string","description":"The place name as requested, for a place that did not resolve."},"place_country":{"type":"string","description":"Its country as requested (unresolved places only)."},"status":{"type":"string","description":"Public error code of a place that did not resolve (its values are in unavailable)."},"place_id":{"type":"string","description":"Stable id to pass to other tools."},"name":{"type":"string","description":"Place name."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code."},"lat":{"type":"number","description":"Latitude."},"lon":{"type":"number","description":"Longitude."},"candidates":{"type":"array","items":{"type":"object","description":"Another place with the same name: place_id, name, country, ..."},"description":"Other places with this name; the most prominent was chosen."}},"additionalProperties":false},"description":"The places as resolved, in request order."},"unavailable":{"type":"array","items":{"type":"object","description":"A value that could not be given: layer, place, code, reason, message, hint."},"description":"Values that could not be given, with the public error code and reason."},"series":{"type":"array","items":{"type":"object","description":"One place and layer: place, place_id, layer, units, data_kind, provider, frame (snapshot_version, start, end), rows[{time, frame?, value}] (frame: the frame id, only when it differs from time) or error."},"description":"Series per place and layer (detailed)."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_get_time_series","data":{"columns":["place","place_id","lat","lon","layer","time","value","units","cite"],"rows":[["47.8700, 18.1900",null,47.87,18.19,"magnetism:F",1900.0,45850,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:F",1940.0,46334,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:F",1980.0,47682,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:F",2020.0,48888,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:D",1900.0,-7.36,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:D",1940.0,-1.82,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:D",1980.0,1.25,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:D",2020.0,4.96,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:I",1900.0,62.6,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:I",1940.0,63.51,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:I",1980.0,63.89,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:I",2020.0,64.47,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:H",1900.0,21098,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:H",1940.0,20667,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:H",1980.0,20986,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:H",2020.0,21066,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:Z",1900.0,40707,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:Z",1940.0,41469,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:Z",1980.0,42816,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:Z",2020.0,44117,"nT","cc68521-1"]],"places":[{"name":"47.8700, 18.1900","lat":47.87,"lon":18.19}]},"citations":[{"id":"cc68521-1","layer":"magnetism","provider":"IGRF-14 (NOAA NCEI / IAGA)","data_kind":"model","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4","reproduce":{"tool":"atlas_get_time_series","args":{"points":[{"lat":47.87,"lon":18.19}],"layers":["magnetism"],"start":"1900","end":"2020","samples":4,"model":"igrf14"}},"model":"igrf14","predictive":false}],"attribution":["Magnetic field: IGRF-14, International Association of Geomagnetism and Aeronomy (IAGA); coefficients distributed by NOAA NCEI."],"notes":["Model evaluations at evenly spaced decimal years, not measurements; rows after 2025 use predictive secular variation. Model values, not certified navigation or aeronautical guidance. Official charts and national survey values take precedence; local anomalies from rocks, buildings or vehicles are not included."],"links":{"map":"https://worldinlayers.com/magnetic-field?year=2020&center=18.1900%2C47.8700&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-47.8700-18.1900%22%2C%22name%22%3A%2247.8700%2C+18.1900%22%2C%22latitude%22%3A47.87%2C%22longitude%22%3A18.19%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":2,"units_today":8,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}},"text/csv":{"schema":{"type":"string","description":"RFC 4180 CSV, CRLF line endings, UTF-8 without BOM."},"example":"place,place_id,lat,lon,layer,time,value,units,provider,data_kind,preliminary,stale,predictive,snapshot_version,source_url,status,error\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:F,1900.0,45850,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:F,1940.0,46334,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:F,1980.0,47682,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:F,2020.0,48888,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:D,1900.0,-7.36,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:D,1940.0,-1.82,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:D,1980.0,1.25,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:D,2020.0,4.96,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:I,1900.0,62.6,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:I,1940.0,63.51,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:I,1980.0,63.89,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:I,2020.0,64.47,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:H,1900.0,21098,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:H,1940.0,20667,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:H,1980.0,20986,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:H,2020.0,21066,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:Z,1900.0,40707,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:Z,1940.0,41469,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:Z,1980.0,42816,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:Z,2020.0,44117,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n"}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"points","in":"query","required":false,"description":"JSON array of places, or use lat, lon, place, place_id and place_country for one place. 1–10 places (20 on Pro).","schema":{"type":"string"}},{"name":"lat","in":"query","required":false,"description":"One place: Latitude in degrees, -90 to 90.","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"description":"One place: Longitude in degrees, -180 to 180.","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"place","in":"query","required":false,"description":"One place: A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","schema":{"type":"string","maxLength":120}},{"name":"place_id","in":"query","required":false,"description":"One place: A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","schema":{"type":"string","maxLength":80}},{"name":"place_country","in":"query","required":false,"description":"One place: ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"layers","in":"query","required":true,"description":"1–8 layer ids. Repeat the parameter or separate values with commas.","schema":{"type":"array","items":{"type":"string","enum":["pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","magnetism"],"description":"Layer id."},"minItems":1,"maxItems":8},"style":"form","explode":true},{"name":"start","in":"query","required":false,"description":"Start: a date or datetime (environmental; a date means 00:00, local with tz), a year or date (magnetism).","schema":{"type":"string","maxLength":40}},{"name":"end","in":"query","required":false,"description":"End, in the same form as start (a date means the end of that day).","schema":{"type":"string","maxLength":40}},{"name":"samples","in":"query","required":false,"description":"Magnetic model samples, 2–200; default 25.","schema":{"type":"integer","minimum":2,"maximum":200}},{"name":"model","in":"query","required":false,"description":"Magnetic model; default igrf14.","schema":{"type":"string","enum":["igrf14","wmm2025","wmmhr2025","chaos8","cals10k","ggf100k","ggfmb"]}},{"name":"tz","in":"query","required":false,"description":"IANA time zone (e.g. Europe/Lisbon) for local times in the output and for date-only times.","schema":{"type":"string","maxLength":64}},{"name":"snapshot_version","in":"query","required":false,"description":"Answer from this snapshot (a citation's snapshot_version, or the one in reproduce) instead of the current one, while it is retained; default current.","schema":{"type":"string","maxLength":60}},{"name":"response_format","in":"query","required":false,"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default) or csv: the concise table as CSV, up to 20,000 rows.","schema":{"type":"string","enum":["json","csv"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Time series (JSON body)","description":"Series of 1–8 layers at 1–10 places (20 on Pro). Environmental layers: the frames of the current snapshot between start and end (forecast hours, recent sea temperature days, the 12 climate months); with tz, date-only bounds mean the whole local day. Magnetism: 2–200 model samples evenly spaced from start to end inclusive. Multi-year environmental history is not available here (not_available names the retained range); read past dates and single moments with atlas_get_point_values and regions with atlas_area_stats. Places as lat/lon, place_id or place (with place_country). 2 units per place. At most 500 rows per JSON answer (places × layers × frames or samples, five per magnetic sample); format=csv on REST allows 20,000.\n\nCost: 2 unit(s). Scope: `read`.","operationId":"atlas_get_time_series_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Series at the places.","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place","place_id","lat","lon","layer","time","frame","local_time","value","units","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"places":{"type":"array","items":{"type":"object","description":"A resolved place.","properties":{"place":{"type":"string","description":"The place name as requested, for a place that did not resolve."},"place_country":{"type":"string","description":"Its country as requested (unresolved places only)."},"status":{"type":"string","description":"Public error code of a place that did not resolve (its values are in unavailable)."},"place_id":{"type":"string","description":"Stable id to pass to other tools."},"name":{"type":"string","description":"Place name."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code."},"lat":{"type":"number","description":"Latitude."},"lon":{"type":"number","description":"Longitude."},"candidates":{"type":"array","items":{"type":"object","description":"Another place with the same name: place_id, name, country, ..."},"description":"Other places with this name; the most prominent was chosen."}},"additionalProperties":false},"description":"The places as resolved, in request order."},"unavailable":{"type":"array","items":{"type":"object","description":"A value that could not be given: layer, place, code, reason, message, hint."},"description":"Values that could not be given, with the public error code and reason."},"series":{"type":"array","items":{"type":"object","description":"One place and layer: place, place_id, layer, units, data_kind, provider, frame (snapshot_version, start, end), rows[{time, frame?, value}] (frame: the frame id, only when it differs from time) or error."},"description":"Series per place and layer (detailed)."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_get_time_series","data":{"columns":["place","place_id","lat","lon","layer","time","value","units","cite"],"rows":[["47.8700, 18.1900",null,47.87,18.19,"magnetism:F",1900.0,45850,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:F",1940.0,46334,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:F",1980.0,47682,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:F",2020.0,48888,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:D",1900.0,-7.36,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:D",1940.0,-1.82,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:D",1980.0,1.25,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:D",2020.0,4.96,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:I",1900.0,62.6,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:I",1940.0,63.51,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:I",1980.0,63.89,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:I",2020.0,64.47,"degrees","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:H",1900.0,21098,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:H",1940.0,20667,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:H",1980.0,20986,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:H",2020.0,21066,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:Z",1900.0,40707,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:Z",1940.0,41469,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:Z",1980.0,42816,"nT","cc68521-1"],["47.8700, 18.1900",null,47.87,18.19,"magnetism:Z",2020.0,44117,"nT","cc68521-1"]],"places":[{"name":"47.8700, 18.1900","lat":47.87,"lon":18.19}]},"citations":[{"id":"cc68521-1","layer":"magnetism","provider":"IGRF-14 (NOAA NCEI / IAGA)","data_kind":"model","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4","reproduce":{"tool":"atlas_get_time_series","args":{"points":[{"lat":47.87,"lon":18.19}],"layers":["magnetism"],"start":"1900","end":"2020","samples":4,"model":"igrf14"}},"model":"igrf14","predictive":false}],"attribution":["Magnetic field: IGRF-14, International Association of Geomagnetism and Aeronomy (IAGA); coefficients distributed by NOAA NCEI."],"notes":["Model evaluations at evenly spaced decimal years, not measurements; rows after 2025 use predictive secular variation. Model values, not certified navigation or aeronautical guidance. Official charts and national survey values take precedence; local anomalies from rocks, buildings or vehicles are not included."],"links":{"map":"https://worldinlayers.com/magnetic-field?year=2020&center=18.1900%2C47.8700&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-47.8700-18.1900%22%2C%22name%22%3A%2247.8700%2C+18.1900%22%2C%22latitude%22%3A47.87%2C%22longitude%22%3A18.19%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":2,"units_today":8,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}},"text/csv":{"schema":{"type":"string","description":"RFC 4180 CSV, CRLF line endings, UTF-8 without BOM."},"example":"place,place_id,lat,lon,layer,time,value,units,provider,data_kind,preliminary,stale,predictive,snapshot_version,source_url,status,error\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:F,1900.0,45850,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:F,1940.0,46334,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:F,1980.0,47682,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:F,2020.0,48888,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:D,1900.0,-7.36,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:D,1940.0,-1.82,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:D,1980.0,1.25,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:D,2020.0,4.96,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:I,1900.0,62.6,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:I,1940.0,63.51,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:I,1980.0,63.89,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:I,2020.0,64.47,degrees,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:H,1900.0,21098,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:H,1940.0,20667,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:H,1980.0,20986,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:H,2020.0,21066,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:Z,1900.0,40707,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:Z,1940.0,41469,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:Z,1980.0,42816,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n\"47.8700, 18.1900\",,47.87,18.19,magnetism:Z,2020.0,44117,nT,IGRF-14 (NOAA NCEI / IAGA),model,false,,false,,https://worldinlayers.com/api/v1/timeseries?lat=47.87&lon=18.19&model=igrf14&start=1900.0&end=2020.0&samples=4,ok,\r\n"}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude in degrees, -90 to 90.","minimum":-90,"maximum":90},"lon":{"type":"number","description":"Longitude in degrees, -180 to 180.","minimum":-180,"maximum":180},"place":{"type":"string","description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","maxLength":120},"place_id":{"type":"string","description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","maxLength":80},"place_country":{"type":"string","description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","pattern":"^[A-Za-z]{2}$"}},"additionalProperties":false,"description":"One place, given one way: lat and lon, or place_id, or place (with place_country to narrow the name)."},"minItems":1,"maxItems":20,"description":"1–10 places (20 on Pro)."},"layers":{"type":"array","items":{"type":"string","enum":["pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","magnetism"],"description":"Layer id."},"minItems":1,"maxItems":8,"description":"1–8 layer ids."},"start":{"type":"string","description":"Start: a date or datetime (environmental; a date means 00:00, local with tz), a year or date (magnetism).","maxLength":40},"end":{"type":"string","description":"End, in the same form as start (a date means the end of that day).","maxLength":40},"samples":{"type":"integer","description":"Magnetic model samples, 2–200; default 25.","minimum":2,"maximum":200},"model":{"type":"string","enum":["igrf14","wmm2025","wmmhr2025","chaos8","cals10k","ggf100k","ggfmb"],"description":"Magnetic model; default igrf14."},"tz":{"type":"string","description":"IANA time zone (e.g. Europe/Lisbon) for local times in the output and for date-only times.","maxLength":64},"snapshot_version":{"type":"string","description":"Answer from this snapshot (a citation's snapshot_version, or the one in reproduce) instead of the current one, while it is retained; default current.","maxLength":60},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value."}},"additionalProperties":false,"required":["points","layers"]},"example":{"points":[{"lat":47.87,"lon":18.19}],"layers":["magnetism"],"start":"1900","end":"2020","samples":4}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default) or csv: the concise table as CSV, up to 20,000 rows.","schema":{"type":"string","enum":["json","csv"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_find_events":{"get":{"tags":["agent"],"summary":"Find events","description":"Earthquakes (USGS, last 24 hours, 7 or 30 days), active fire detections (NASA FIRMS, last 24 hours) or volcanoes (NOAA significant-eruption catalogue, not alerts) near a place within radius_km, inside a bbox, or (earthquakes) worldwide by magnitude. Give the place as lat/lon, place_id or place (with place_country for an ambiguous name). Each event has its id (USGS event id, FIRMS detection key, volcano id) and a citation. Up to 100 per page; pass next_cursor for the next page of the same snapshot. Use atlas_get_point_values for a fire count at a place. 1 unit per page.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_find_events","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Events near a place, in a box or worldwide.","properties":{"kind":{"type":["string","null"],"description":"earthquakes, fires or volcanoes."},"window":{"type":["string","null"],"description":"Earthquake window."},"window_start":{"type":["string","null"],"description":"Start of the searched window, ISO 8601 UTC."},"window_end":{"type":["string","null"],"description":"End of the searched window, ISO 8601 UTC."},"radius_km":{"type":["number","null"],"description":"Search radius."},"total":{"type":["integer","null"],"description":"Events matching, over all pages."},"count":{"type":["integer","null"],"description":"Events on this page."},"next_cursor":{"type":["string","null"],"description":"Pass as cursor for the next page; null on the last."},"snapshot":{"type":"object","description":"The event snapshot: version, run_at, window."},"freshness":{"type":["string","null"],"description":"Snapshot status."},"summary":{"type":"object","description":"A cited count or total for the area and window."},"largest":{"type":"object","description":"The largest event."},"columns":{"type":"array","items":{"type":"string","enum":["id","time","local_time","value","units","label","lat","lon","distance_km","depth_km","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"events":{"type":"array","items":{"type":"object","description":"One event with id and citation."},"description":"Events (detailed)."},"note":{"type":["string","null"],"description":"What the events are and are not."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_find_events","data":{"kind":"earthquakes","window":"30d","window_start":"2026-09-24T03:24:11.000Z","window_end":"2026-10-24T03:24:11.000Z","total":4,"next_cursor":"eyJrIjoiZWFydGhxdWFrZXMiLCJ2IjoiNThmZjE0MThiMTE5YzZhM2FiZWZkZWMzIiwibyI6MywicSI6ImZkNDI1ODVjYjBlMSJ9","snapshot":{"version":"58ff1418b119c6a3abefdec3","run_at":"2026-10-24T03:24:11.000Z","window":"30d"},"freshness":"stale","summary":{"label":"Earthquakes within 500 km of Athens, GR, M4.5+, last 30d","value":4,"units":"earthquakes","cite":"ca30bcf-1"},"columns":["id","time","value","units","label","lat","lon","distance_km","depth_km","cite"],"rows":[["us6000tyhn","2026-09-30T05:20:59.028Z",4.5,"mb","M4.5 earthquake, 3 km W of Thívai, Greece",38.3255,23.279,54.6,10.0,"ca30bcf-2"],["us6000tz1r","2026-10-02T15:26:42.526Z",4.5,"mb","M4.5 earthquake, 3 km ENE of Chalandrítsa, Greece",38.1196,21.8157,168.1,10.0,"ca30bcf-2"],["us6000u2ww","2026-10-16T23:57:50.544Z",4.6,"mb","M4.6 earthquake, 6 km NNE of Sámi, Greece",38.305,20.6863,268.4,10.0,"ca30bcf-2"]]},"citations":[{"id":"ca30bcf-1","layer":"earthquakes","provider":"USGS","data_kind":"observation","preliminary":true,"snapshot_version":"58ff1418b119c6a3abefdec3","reproduce":{"tool":"atlas_find_events","args":{"kind":"earthquakes","radius_km":500.0,"window":"30d","min_magnitude":4.5,"limit":3,"lat":37.9838,"lon":23.7278,"start":"2026-09-24T03:24:11.000Z","end":"2026-10-24T03:24:11.000Z","snapshot_version":"58ff1418b119c6a3abefdec3"},"snapshot_version":"58ff1418b119c6a3abefdec3"},"provider_url":"https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&eventtype=earthquake&starttime=2026-09-24T03%3A24%3A11.000Z&endtime=2026-10-24T03%3A24%3A11.000Z&latitude=37.9838&longitude=23.7278&maxradiuskm=500&minmagnitude=4.5"},{"id":"ca30bcf-2","layer":"earthquakes","provider":"USGS","data_kind":"observation","preliminary":false,"snapshot_version":"58ff1418b119c6a3abefdec3","source_url_template":"https://worldinlayers.com/api/v1/seismic/events/{id}?version=58ff1418b119c6a3abefdec3","provider_url_template":"https://earthquake.usgs.gov/earthquakes/eventpage/{id}"}],"attribution":["Earthquakes: U.S. Geological Survey Earthquake Hazards Program and contributing seismic networks."],"notes":["Reported epicentres; automatic solutions are preliminary. Not predictions or hazard assessments. Windows beyond 30 days are not available through the API.","Earthquake snapshot 58ff1418b119c6a3abefdec3 is kept while it is the current one; after it is replaced it stays readable for at least 55 minutes (USGS is checked every 5 minutes)."],"links":{"map":"https://worldinlayers.com/earthquakes?window=30d&center=23.7278%2C37.9838&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-37.9838-23.7278%22%2C%22name%22%3A%22Athens%2C+GR%22%2C%22latitude%22%3A37.9838%2C%22longitude%22%3A23.7278%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":1,"units_today":9,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}},"text/csv":{"schema":{"type":"string","description":"RFC 4180 CSV, CRLF line endings, UTF-8 without BOM."},"example":"id,time,value,units,label,lat,lon,distance_km,depth_km,provider,data_kind,preliminary,stale,predictive,snapshot_version,source_url,provider_url\r\nus6000tyhn,2026-09-30T05:20:59.028Z,4.5,mb,\"M4.5 earthquake, 3 km W of Thívai, Greece\",38.3255,23.279,54.6,10.0,USGS,observation,false,,,58ff1418b119c6a3abefdec3,https://worldinlayers.com/api/v1/seismic/events/us6000tyhn?version=58ff1418b119c6a3abefdec3,https://earthquake.usgs.gov/earthquakes/eventpage/us6000tyhn\r\nus6000tz1r,2026-10-02T15:26:42.526Z,4.5,mb,\"M4.5 earthquake, 3 km ENE of Chalandrítsa, Greece\",38.1196,21.8157,168.1,10.0,USGS,observation,false,,,58ff1418b119c6a3abefdec3,https://worldinlayers.com/api/v1/seismic/events/us6000tz1r?version=58ff1418b119c6a3abefdec3,https://earthquake.usgs.gov/earthquakes/eventpage/us6000tz1r\r\nus6000u2ww,2026-10-16T23:57:50.544Z,4.6,mb,\"M4.6 earthquake, 6 km NNE of Sámi, Greece\",38.305,20.6863,268.4,10.0,USGS,observation,false,,,58ff1418b119c6a3abefdec3,https://worldinlayers.com/api/v1/seismic/events/us6000u2ww?version=58ff1418b119c6a3abefdec3,https://earthquake.usgs.gov/earthquakes/eventpage/us6000u2ww\r\n"}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"kind","in":"query","required":true,"description":"Event kind.","schema":{"type":"string","enum":["earthquakes","fires","volcanoes"]}},{"name":"lat","in":"query","required":false,"description":"Latitude in degrees, -90 to 90.","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"description":"Longitude in degrees, -180 to 180.","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"place","in":"query","required":false,"description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","schema":{"type":"string","maxLength":120}},{"name":"place_id","in":"query","required":false,"description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","schema":{"type":"string","maxLength":80}},{"name":"place_country","in":"query","required":false,"description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"radius_km","in":"query","required":false,"description":"Search radius; default 300 km (fires 100), max 2000 (fires 500).","schema":{"type":"number","minimum":0.1,"maximum":2000}},{"name":"bbox","in":"query","required":false,"description":"[west, south, east, north] in degrees; west > east crosses the date line. Repeat the parameter or separate values with commas.","schema":{"type":"array","items":{"type":"number"},"minItems":4,"maxItems":4},"style":"form","explode":true},{"name":"window","in":"query","required":false,"description":"Earthquakes only (refused for other kinds): the snapshot window; default 7d (30d with start/end).","schema":{"type":"string","enum":["24h","7d","30d"]}},{"name":"start","in":"query","required":false,"description":"Earthquakes and fires only (refused for volcanoes): earliest event time, a date or datetime (UTC). A range partly outside the snapshot is answered for the part it covers, with a note; one wholly outside is refused (outside_snapshot).","schema":{"type":"string","maxLength":40}},{"name":"end","in":"query","required":false,"description":"Earthquakes and fires only: latest event time (UTC), as for start.","schema":{"type":"string","maxLength":40}},{"name":"min_magnitude","in":"query","required":false,"description":"Earthquakes only (refused for other kinds): minimum magnitude; default 4.5 worldwide.","schema":{"type":"number","minimum":-2,"maximum":10}},{"name":"limit","in":"query","required":false,"description":"Events per page, 1–100; default 10.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"next_cursor from the previous page.","schema":{"type":"string","maxLength":400}},{"name":"snapshot_version","in":"query","required":false,"description":"Answer from this snapshot (a citation's snapshot_version, or the one in reproduce) instead of the current one, while it is retained; default current.","schema":{"type":"string","maxLength":60}},{"name":"tz","in":"query","required":false,"description":"IANA time zone (e.g. Europe/Lisbon): adds local_time to each event.","schema":{"type":"string","maxLength":64}},{"name":"response_format","in":"query","required":false,"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default) or csv: the concise table as CSV, up to 20,000 rows.","schema":{"type":"string","enum":["json","csv"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Find events (JSON body)","description":"Earthquakes (USGS, last 24 hours, 7 or 30 days), active fire detections (NASA FIRMS, last 24 hours) or volcanoes (NOAA significant-eruption catalogue, not alerts) near a place within radius_km, inside a bbox, or (earthquakes) worldwide by magnitude. Give the place as lat/lon, place_id or place (with place_country for an ambiguous name). Each event has its id (USGS event id, FIRMS detection key, volcano id) and a citation. Up to 100 per page; pass next_cursor for the next page of the same snapshot. Use atlas_get_point_values for a fire count at a place. 1 unit per page.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_find_events_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Events near a place, in a box or worldwide.","properties":{"kind":{"type":["string","null"],"description":"earthquakes, fires or volcanoes."},"window":{"type":["string","null"],"description":"Earthquake window."},"window_start":{"type":["string","null"],"description":"Start of the searched window, ISO 8601 UTC."},"window_end":{"type":["string","null"],"description":"End of the searched window, ISO 8601 UTC."},"radius_km":{"type":["number","null"],"description":"Search radius."},"total":{"type":["integer","null"],"description":"Events matching, over all pages."},"count":{"type":["integer","null"],"description":"Events on this page."},"next_cursor":{"type":["string","null"],"description":"Pass as cursor for the next page; null on the last."},"snapshot":{"type":"object","description":"The event snapshot: version, run_at, window."},"freshness":{"type":["string","null"],"description":"Snapshot status."},"summary":{"type":"object","description":"A cited count or total for the area and window."},"largest":{"type":"object","description":"The largest event."},"columns":{"type":"array","items":{"type":"string","enum":["id","time","local_time","value","units","label","lat","lon","distance_km","depth_km","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"events":{"type":"array","items":{"type":"object","description":"One event with id and citation."},"description":"Events (detailed)."},"note":{"type":["string","null"],"description":"What the events are and are not."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_find_events","data":{"kind":"earthquakes","window":"30d","window_start":"2026-09-24T03:24:11.000Z","window_end":"2026-10-24T03:24:11.000Z","total":4,"next_cursor":"eyJrIjoiZWFydGhxdWFrZXMiLCJ2IjoiNThmZjE0MThiMTE5YzZhM2FiZWZkZWMzIiwibyI6MywicSI6ImZkNDI1ODVjYjBlMSJ9","snapshot":{"version":"58ff1418b119c6a3abefdec3","run_at":"2026-10-24T03:24:11.000Z","window":"30d"},"freshness":"stale","summary":{"label":"Earthquakes within 500 km of Athens, GR, M4.5+, last 30d","value":4,"units":"earthquakes","cite":"ca30bcf-1"},"columns":["id","time","value","units","label","lat","lon","distance_km","depth_km","cite"],"rows":[["us6000tyhn","2026-09-30T05:20:59.028Z",4.5,"mb","M4.5 earthquake, 3 km W of Thívai, Greece",38.3255,23.279,54.6,10.0,"ca30bcf-2"],["us6000tz1r","2026-10-02T15:26:42.526Z",4.5,"mb","M4.5 earthquake, 3 km ENE of Chalandrítsa, Greece",38.1196,21.8157,168.1,10.0,"ca30bcf-2"],["us6000u2ww","2026-10-16T23:57:50.544Z",4.6,"mb","M4.6 earthquake, 6 km NNE of Sámi, Greece",38.305,20.6863,268.4,10.0,"ca30bcf-2"]]},"citations":[{"id":"ca30bcf-1","layer":"earthquakes","provider":"USGS","data_kind":"observation","preliminary":true,"snapshot_version":"58ff1418b119c6a3abefdec3","reproduce":{"tool":"atlas_find_events","args":{"kind":"earthquakes","radius_km":500.0,"window":"30d","min_magnitude":4.5,"limit":3,"lat":37.9838,"lon":23.7278,"start":"2026-09-24T03:24:11.000Z","end":"2026-10-24T03:24:11.000Z","snapshot_version":"58ff1418b119c6a3abefdec3"},"snapshot_version":"58ff1418b119c6a3abefdec3"},"provider_url":"https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&eventtype=earthquake&starttime=2026-09-24T03%3A24%3A11.000Z&endtime=2026-10-24T03%3A24%3A11.000Z&latitude=37.9838&longitude=23.7278&maxradiuskm=500&minmagnitude=4.5"},{"id":"ca30bcf-2","layer":"earthquakes","provider":"USGS","data_kind":"observation","preliminary":false,"snapshot_version":"58ff1418b119c6a3abefdec3","source_url_template":"https://worldinlayers.com/api/v1/seismic/events/{id}?version=58ff1418b119c6a3abefdec3","provider_url_template":"https://earthquake.usgs.gov/earthquakes/eventpage/{id}"}],"attribution":["Earthquakes: U.S. Geological Survey Earthquake Hazards Program and contributing seismic networks."],"notes":["Reported epicentres; automatic solutions are preliminary. Not predictions or hazard assessments. Windows beyond 30 days are not available through the API.","Earthquake snapshot 58ff1418b119c6a3abefdec3 is kept while it is the current one; after it is replaced it stays readable for at least 55 minutes (USGS is checked every 5 minutes)."],"links":{"map":"https://worldinlayers.com/earthquakes?window=30d&center=23.7278%2C37.9838&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-37.9838-23.7278%22%2C%22name%22%3A%22Athens%2C+GR%22%2C%22latitude%22%3A37.9838%2C%22longitude%22%3A23.7278%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":1,"units_today":9,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}},"text/csv":{"schema":{"type":"string","description":"RFC 4180 CSV, CRLF line endings, UTF-8 without BOM."},"example":"id,time,value,units,label,lat,lon,distance_km,depth_km,provider,data_kind,preliminary,stale,predictive,snapshot_version,source_url,provider_url\r\nus6000tyhn,2026-09-30T05:20:59.028Z,4.5,mb,\"M4.5 earthquake, 3 km W of Thívai, Greece\",38.3255,23.279,54.6,10.0,USGS,observation,false,,,58ff1418b119c6a3abefdec3,https://worldinlayers.com/api/v1/seismic/events/us6000tyhn?version=58ff1418b119c6a3abefdec3,https://earthquake.usgs.gov/earthquakes/eventpage/us6000tyhn\r\nus6000tz1r,2026-10-02T15:26:42.526Z,4.5,mb,\"M4.5 earthquake, 3 km ENE of Chalandrítsa, Greece\",38.1196,21.8157,168.1,10.0,USGS,observation,false,,,58ff1418b119c6a3abefdec3,https://worldinlayers.com/api/v1/seismic/events/us6000tz1r?version=58ff1418b119c6a3abefdec3,https://earthquake.usgs.gov/earthquakes/eventpage/us6000tz1r\r\nus6000u2ww,2026-10-16T23:57:50.544Z,4.6,mb,\"M4.6 earthquake, 6 km NNE of Sámi, Greece\",38.305,20.6863,268.4,10.0,USGS,observation,false,,,58ff1418b119c6a3abefdec3,https://worldinlayers.com/api/v1/seismic/events/us6000u2ww?version=58ff1418b119c6a3abefdec3,https://earthquake.usgs.gov/earthquakes/eventpage/us6000u2ww\r\n"}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["earthquakes","fires","volcanoes"],"description":"Event kind."},"lat":{"type":"number","description":"Latitude in degrees, -90 to 90.","minimum":-90,"maximum":90},"lon":{"type":"number","description":"Longitude in degrees, -180 to 180.","minimum":-180,"maximum":180},"place":{"type":"string","description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","maxLength":120},"place_id":{"type":"string","description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","maxLength":80},"place_country":{"type":"string","description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","pattern":"^[A-Za-z]{2}$"},"radius_km":{"type":"number","description":"Search radius; default 300 km (fires 100), max 2000 (fires 500).","minimum":0.1,"maximum":2000},"bbox":{"type":"array","items":{"type":"number"},"minItems":4,"maxItems":4,"description":"[west, south, east, north] in degrees; west > east crosses the date line."},"window":{"type":"string","enum":["24h","7d","30d"],"description":"Earthquakes only (refused for other kinds): the snapshot window; default 7d (30d with start/end)."},"start":{"type":"string","description":"Earthquakes and fires only (refused for volcanoes): earliest event time, a date or datetime (UTC). A range partly outside the snapshot is answered for the part it covers, with a note; one wholly outside is refused (outside_snapshot).","maxLength":40},"end":{"type":"string","description":"Earthquakes and fires only: latest event time (UTC), as for start.","maxLength":40},"min_magnitude":{"type":"number","description":"Earthquakes only (refused for other kinds): minimum magnitude; default 4.5 worldwide.","minimum":-2,"maximum":10},"limit":{"type":"integer","description":"Events per page, 1–100; default 10.","minimum":1,"maximum":100},"cursor":{"type":"string","description":"next_cursor from the previous page.","maxLength":400},"snapshot_version":{"type":"string","description":"Answer from this snapshot (a citation's snapshot_version, or the one in reproduce) instead of the current one, while it is retained; default current.","maxLength":60},"tz":{"type":"string","description":"IANA time zone (e.g. Europe/Lisbon): adds local_time to each event.","maxLength":64},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value."}},"additionalProperties":false,"required":["kind"]},"example":{"kind":"earthquakes","place":"Athens","place_country":"GR","radius_km":500,"window":"30d","min_magnitude":4.5,"limit":3}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default) or csv: the concise table as CSV, up to 20,000 rows.","schema":{"type":"string","enum":["json","csv"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_area_stats":{"get":{"tags":["agent"],"summary":"Area statistics","description":"Statistics of one raster layer over exactly one area: a whole country (`country`), a bbox, or a circle (lat/lon, place_id or place with radius_km; place_country narrows a place name). Returns the area-weighted mean, highest and lowest with the nearest town, and the share of the area at or above a threshold. period 'day' (forecast layers) summarises the frames of one local day (`tz`): highest and lowest of the day, mean of the frame means, share reaching the threshold in any frame. Use atlas_get_point_values for single places. A share of area, not of people. 10 units; period 'day' 10 per frame, at most 40. An uncached past date adds one cold load (25 units).\n\nCost: 10 unit(s). Scope: `read`.","operationId":"atlas_area_stats","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Statistics of one layer over one area.","properties":{"layer":{"type":["string","null"],"description":"Layer id."},"area":{"type":"object","description":"The area: kind and country, bbox or centre and radius."},"period":{"type":["string","null"],"description":"instant or day."},"day":{"type":["string","null"],"description":"The local day (period day)."},"tz":{"type":["string","null"],"description":"Time zone of the local day."},"frames":{"type":"array","items":{"type":["string","null"],"description":"A frame time."},"description":"Frames used (period day)."},"frames_used":{"type":["integer","null"],"description":"Number of frames read."},"valid_time":{"type":["string","null"],"description":"Frame used, ISO 8601 UTC (period instant)."},"offset_minutes":{"type":["integer","null"],"description":"Frame distance from the requested time."},"data_kind":{"type":["string","null"],"description":"Data kind of the layer."},"provider":{"type":["string","null"],"description":"Data provider."},"snapshot_version":{"type":["string","null"],"description":"Snapshot the statistics come from."},"cells":{"type":["integer","null"],"description":"Grid cells summarised."},"resolution_degrees":{"type":["number","null"],"description":"Grid resolution."},"land_only":{"type":["boolean","null"],"description":"Whether only land cells were used."},"coverage_percent":{"type":["number","null"],"description":"Share of the area with valid cells."},"method":{"type":["string","null"],"description":"How the statistics were computed."},"columns":{"type":"array","items":{"type":"string","enum":["statistic","value","units","valid_time","local_time","lat","lon","near","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"stats":{"type":"array","items":{"type":"object","description":"One statistic with citation."},"description":"Statistics (detailed)."},"note":{"type":["string","null"],"description":"A note on the statistics."},"coverage_note":{"type":["string","null"],"description":"A note on coverage."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_area_stats","data":{"layer":"temperature","area":{"kind":"country","country":"PT","name":"Portugal"},"valid_time":"2026-10-25T18:00:00Z","offset_minutes":211,"data_kind":"forecast","provider":"NOAA GFS","cells":155,"resolution_degrees":0.25,"land_only":true,"coverage_percent":100,"method":"Cells whose centres fall inside the area, weighted by cos(latitude); land from Natural Earth countries. A share of area, not of people.","columns":["statistic","value","units","valid_time","lat","lon","near","cite"],"rows":[["mean",16.8,"°C","2026-10-25T18:00:00Z",39.607,-8.272,null,"c832909-1"],["max",21.6,"°C","2026-10-25T18:00:00Z",39.5,-31.25,null,"c832909-2"],["min",10.4,"°C","2026-10-25T18:00:00Z",41.75,-8.0,"Vieira do Minho","c832909-3"]]},"citations":[{"id":"c832909-1","layer":"temperature","provider":"NOAA GFS","data_kind":"forecast","preliminary":false,"snapshot_version":"20261024T001026-246ae636","retained_until":"2026-10-31T00:10:26Z","reproduce":{"tool":"atlas_area_stats","args":{"layer":"temperature","country":"PT","time":"2026-10-25T18:00:00Z","snapshot_version":"20261024T001026-246ae636"},"snapshot_version":"20261024T001026-246ae636"},"statistic":"mean","stale":true},{"id":"c832909-2","layer":"temperature","provider":"NOAA GFS","data_kind":"forecast","preliminary":false,"snapshot_version":"20261024T001026-246ae636","retained_until":"2026-10-31T00:10:26Z","source_url":"https://worldinlayers.com/api/v1/environment/point?ident=temperature&frame=2026-10-25T18%3A00%3A00Z&lat=39.5&lon=-31.25&version=20261024T001026-246ae636","statistic":"max","stale":true},{"id":"c832909-3","layer":"temperature","provider":"NOAA GFS","data_kind":"forecast","preliminary":false,"snapshot_version":"20261024T001026-246ae636","retained_until":"2026-10-31T00:10:26Z","source_url":"https://worldinlayers.com/api/v1/environment/point?ident=temperature&frame=2026-10-25T18%3A00%3A00Z&lat=41.75&lon=-8.0&version=20261024T001026-246ae636","statistic":"min","stale":true}],"attribution":["NOAA GFS: data from the US National Weather Service, public domain; attribution requested.","Country outlines: Natural Earth, public domain."],"notes":["Temperature over Portugal: there is no frame at the requested time (now, 2026-10-25 14:28 UTC); the value is for the nearest frame, 2026-10-25 18:00 UTC (3 h 31 min later). NOAA GFS data is stale: an expected refresh is overdue (latest run 2026-10-23T18:00:00Z)."],"links":{"map":"https://worldinlayers.com/temperature?center=-8.2718%2C39.6067&zoom=4.00"},"usage":{"units":10,"units_today":19,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_area_stats","error":{"code":"invalid_input","reason":"conflicting_area","message":"Give one area, not country and a circle (lat/lon, place or place_id).","hint":"Use `country` for a whole country, `bbox` for a box, or lat/lon, place or place_id with radius_km for a circle; narrow a place name with place_country."},"usage":{"units":0,"units_today":26,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"layer","in":"query","required":true,"description":"Raster layer id.","schema":{"type":"string","enum":["pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves"]}},{"name":"country","in":"query","required":false,"description":"ISO 3166-1 alpha-2 code: statistics over this whole country (land cells by default). One area only: do not combine with bbox, lat/lon, place or place_id.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"bbox","in":"query","required":false,"description":"[west, south, east, north] in degrees; west > east crosses the date line. Repeat the parameter or separate values with commas.","schema":{"type":"array","items":{"type":"number"},"minItems":4,"maxItems":4},"style":"form","explode":true},{"name":"lat","in":"query","required":false,"description":"Latitude in degrees, -90 to 90.","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"description":"Longitude in degrees, -180 to 180.","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"place","in":"query","required":false,"description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","schema":{"type":"string","maxLength":120}},{"name":"place_id","in":"query","required":false,"description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","schema":{"type":"string","maxLength":80}},{"name":"place_country","in":"query","required":false,"description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"radius_km","in":"query","required":false,"description":"Circle radius around lat/lon, place or place_id; default 100, max 2500 (a country's place_id without it means the whole country).","schema":{"type":"number","minimum":1,"maximum":2500}},{"name":"time","in":"query","required":false,"description":"'now' (default); YYYY-MM-DD (12:00 UTC, or local noon with `tz`); YYYY-MM-DDTHH:MM with Z or an offset (local time with `tz` when neither is given); '01'–'12' for a month of the 1991–2020 climate layers; YYYY-MM for one past month of a climate layer.","schema":{"type":"string","maxLength":40}},{"name":"period","in":"query","required":false,"description":"instant (default): one frame; day: the frames of one local day.","schema":{"type":"string","enum":["instant","day"]}},{"name":"tz","in":"query","required":false,"description":"IANA time zone (e.g. Europe/Lisbon) for local times in the output and for date-only times.","schema":{"type":"string","maxLength":64}},{"name":"threshold","in":"query","required":false,"description":"Report the share of the area at or above this value.","schema":{"type":"number"}},{"name":"land_only","in":"query","required":false,"description":"true: land only; false: every valid cell; default: land when the area has land.","schema":{"type":"boolean"}},{"name":"snapshot_version","in":"query","required":false,"description":"Answer from this snapshot (a citation's snapshot_version, or the one in reproduce) instead of the current one, while it is retained; default current.","schema":{"type":"string","maxLength":60}},{"name":"response_format","in":"query","required":false,"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Area statistics (JSON body)","description":"Statistics of one raster layer over exactly one area: a whole country (`country`), a bbox, or a circle (lat/lon, place_id or place with radius_km; place_country narrows a place name). Returns the area-weighted mean, highest and lowest with the nearest town, and the share of the area at or above a threshold. period 'day' (forecast layers) summarises the frames of one local day (`tz`): highest and lowest of the day, mean of the frame means, share reaching the threshold in any frame. Use atlas_get_point_values for single places. A share of area, not of people. 10 units; period 'day' 10 per frame, at most 40. An uncached past date adds one cold load (25 units).\n\nCost: 10 unit(s). Scope: `read`.","operationId":"atlas_area_stats_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Statistics of one layer over one area.","properties":{"layer":{"type":["string","null"],"description":"Layer id."},"area":{"type":"object","description":"The area: kind and country, bbox or centre and radius."},"period":{"type":["string","null"],"description":"instant or day."},"day":{"type":["string","null"],"description":"The local day (period day)."},"tz":{"type":["string","null"],"description":"Time zone of the local day."},"frames":{"type":"array","items":{"type":["string","null"],"description":"A frame time."},"description":"Frames used (period day)."},"frames_used":{"type":["integer","null"],"description":"Number of frames read."},"valid_time":{"type":["string","null"],"description":"Frame used, ISO 8601 UTC (period instant)."},"offset_minutes":{"type":["integer","null"],"description":"Frame distance from the requested time."},"data_kind":{"type":["string","null"],"description":"Data kind of the layer."},"provider":{"type":["string","null"],"description":"Data provider."},"snapshot_version":{"type":["string","null"],"description":"Snapshot the statistics come from."},"cells":{"type":["integer","null"],"description":"Grid cells summarised."},"resolution_degrees":{"type":["number","null"],"description":"Grid resolution."},"land_only":{"type":["boolean","null"],"description":"Whether only land cells were used."},"coverage_percent":{"type":["number","null"],"description":"Share of the area with valid cells."},"method":{"type":["string","null"],"description":"How the statistics were computed."},"columns":{"type":"array","items":{"type":"string","enum":["statistic","value","units","valid_time","local_time","lat","lon","near","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"stats":{"type":"array","items":{"type":"object","description":"One statistic with citation."},"description":"Statistics (detailed)."},"note":{"type":["string","null"],"description":"A note on the statistics."},"coverage_note":{"type":["string","null"],"description":"A note on coverage."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_area_stats","data":{"layer":"temperature","area":{"kind":"country","country":"PT","name":"Portugal"},"valid_time":"2026-10-25T18:00:00Z","offset_minutes":211,"data_kind":"forecast","provider":"NOAA GFS","cells":155,"resolution_degrees":0.25,"land_only":true,"coverage_percent":100,"method":"Cells whose centres fall inside the area, weighted by cos(latitude); land from Natural Earth countries. A share of area, not of people.","columns":["statistic","value","units","valid_time","lat","lon","near","cite"],"rows":[["mean",16.8,"°C","2026-10-25T18:00:00Z",39.607,-8.272,null,"c832909-1"],["max",21.6,"°C","2026-10-25T18:00:00Z",39.5,-31.25,null,"c832909-2"],["min",10.4,"°C","2026-10-25T18:00:00Z",41.75,-8.0,"Vieira do Minho","c832909-3"]]},"citations":[{"id":"c832909-1","layer":"temperature","provider":"NOAA GFS","data_kind":"forecast","preliminary":false,"snapshot_version":"20261024T001026-246ae636","retained_until":"2026-10-31T00:10:26Z","reproduce":{"tool":"atlas_area_stats","args":{"layer":"temperature","country":"PT","time":"2026-10-25T18:00:00Z","snapshot_version":"20261024T001026-246ae636"},"snapshot_version":"20261024T001026-246ae636"},"statistic":"mean","stale":true},{"id":"c832909-2","layer":"temperature","provider":"NOAA GFS","data_kind":"forecast","preliminary":false,"snapshot_version":"20261024T001026-246ae636","retained_until":"2026-10-31T00:10:26Z","source_url":"https://worldinlayers.com/api/v1/environment/point?ident=temperature&frame=2026-10-25T18%3A00%3A00Z&lat=39.5&lon=-31.25&version=20261024T001026-246ae636","statistic":"max","stale":true},{"id":"c832909-3","layer":"temperature","provider":"NOAA GFS","data_kind":"forecast","preliminary":false,"snapshot_version":"20261024T001026-246ae636","retained_until":"2026-10-31T00:10:26Z","source_url":"https://worldinlayers.com/api/v1/environment/point?ident=temperature&frame=2026-10-25T18%3A00%3A00Z&lat=41.75&lon=-8.0&version=20261024T001026-246ae636","statistic":"min","stale":true}],"attribution":["NOAA GFS: data from the US National Weather Service, public domain; attribution requested.","Country outlines: Natural Earth, public domain."],"notes":["Temperature over Portugal: there is no frame at the requested time (now, 2026-10-25 14:28 UTC); the value is for the nearest frame, 2026-10-25 18:00 UTC (3 h 31 min later). NOAA GFS data is stale: an expected refresh is overdue (latest run 2026-10-23T18:00:00Z)."],"links":{"map":"https://worldinlayers.com/temperature?center=-8.2718%2C39.6067&zoom=4.00"},"usage":{"units":10,"units_today":19,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_area_stats","error":{"code":"invalid_input","reason":"conflicting_area","message":"Give one area, not country and a circle (lat/lon, place or place_id).","hint":"Use `country` for a whole country, `bbox` for a box, or lat/lon, place or place_id with radius_km for a circle; narrow a place name with place_country."},"usage":{"units":0,"units_today":26,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"layer":{"type":"string","enum":["pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves"],"description":"Raster layer id."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 code: statistics over this whole country (land cells by default). One area only: do not combine with bbox, lat/lon, place or place_id.","pattern":"^[A-Za-z]{2}$"},"bbox":{"type":"array","items":{"type":"number"},"minItems":4,"maxItems":4,"description":"[west, south, east, north] in degrees; west > east crosses the date line."},"lat":{"type":"number","description":"Latitude in degrees, -90 to 90.","minimum":-90,"maximum":90},"lon":{"type":"number","description":"Longitude in degrees, -180 to 180.","minimum":-180,"maximum":180},"place":{"type":"string","description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","maxLength":120},"place_id":{"type":"string","description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","maxLength":80},"place_country":{"type":"string","description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","pattern":"^[A-Za-z]{2}$"},"radius_km":{"type":"number","description":"Circle radius around lat/lon, place or place_id; default 100, max 2500 (a country's place_id without it means the whole country).","minimum":1,"maximum":2500},"time":{"type":"string","description":"'now' (default); YYYY-MM-DD (12:00 UTC, or local noon with `tz`); YYYY-MM-DDTHH:MM with Z or an offset (local time with `tz` when neither is given); '01'–'12' for a month of the 1991–2020 climate layers; YYYY-MM for one past month of a climate layer.","maxLength":40},"period":{"type":"string","enum":["instant","day"],"description":"instant (default): one frame; day: the frames of one local day."},"tz":{"type":"string","description":"IANA time zone (e.g. Europe/Lisbon) for local times in the output and for date-only times.","maxLength":64},"threshold":{"type":"number","description":"Report the share of the area at or above this value."},"land_only":{"type":"boolean","description":"true: land only; false: every valid cell; default: land when the area has land."},"snapshot_version":{"type":"string","description":"Answer from this snapshot (a citation's snapshot_version, or the one in reproduce) instead of the current one, while it is retained; default current.","maxLength":60},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value."}},"additionalProperties":false,"required":["layer"]},"example":{"layer":"temperature","country":"PT"}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_japan_hazards":{"get":{"tags":["agent"],"summary":"Japan hazard zones","description":"Official hazard zones at 1–10 places in Japan (20 on Pro) from MLIT National Land Numerical Information, processed by World in Layers: river flood (maximum and planned scale), tsunami, storm surge, landslide warning zones and heavy-snow areas, plus the 1 km mesh population projection, J-SHIS 30-year shaking probabilities and nearby official land prices. Each layer has a status (zone, outside_zones, not_released, not_applicable, excluded_terms, not_imported, outside_japan), the official class, scenario, edition and source. Designations and planning scenarios, not predictions or ratings: outside_zones means only that this edition maps no zone there. Not the municipal hazard map or the statutory disclosure (重要事項説明); the official map is the Hazard Map Portal Site (重ねるハザードマップ). Give each place as lat/lon, place_id or place (with place_country for an ambiguous name). 1 unit per place.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_japan_hazards","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Official hazard zones and the population projection at places in Japan.","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place","lat","lon","layer","status","class","edition","source","note","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"places":{"type":"array","items":{"type":"object","description":"A resolved place, with its prefecture and the official portal there.","properties":{"place":{"type":"string","description":"The place name as requested, for a place that did not resolve."},"place_country":{"type":"string","description":"Its country as requested (unresolved places only)."},"status":{"type":"string","description":"Public error code of a place that did not resolve (its values are in unavailable)."},"place_id":{"type":"string","description":"Stable id to pass to other tools."},"name":{"type":"string","description":"Place name."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code."},"lat":{"type":"number","description":"Latitude."},"lon":{"type":"number","description":"Longitude."},"candidates":{"type":"array","items":{"type":"object","description":"Another place with the same name: place_id, name, country, ..."},"description":"Other places with this name; the most prominent was chosen."},"prefecture":{"type":"string","description":"The prefecture the lookup matched (English name)."},"prefecture_note":{"type":"string","description":"How the prefecture was matched when not by its boundary (approximate)."},"portal_url":{"type":"string","description":"The official Hazard Map Portal Site (重ねるハザードマップ) at this place, with the same hazards switched on."}},"additionalProperties":false},"description":"The places as resolved, in request order."},"layers":{"type":"object","description":"Layer id -> its name, scenario (what the layer assumes) and scope (what outside the mapped zones covers) (concise).","additionalProperties":{"type":"object","description":"One layer's name, scenario and scope."}},"population":{"type":"object","description":"The population projection of each place's 1 km mesh (concise).","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place","lat","lon","status","measure","valid_time","value","units","note","cite"],"description":"A column name."},"description":"Column names of the population rows."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell."},"description":"One row; cells follow `columns`."},"description":"Per place: the projected residents of its 1 km mesh in 2020, 2050 and 2070 (measure projected_residents) and the change from 2020 the atlas computes (change_atlas_calculation, %), or one row with the status and reason when the mesh has no projection."}},"additionalProperties":false},"points":{"type":"array","items":{"type":"object","description":"One place's zones (detailed).","properties":{"place":{"type":"object","description":"The place as resolved."},"portal_url":{"type":"string","description":"The official Hazard Map Portal Site at this place."},"point":{"type":"object","description":"Where the lookup read: lat, lon, name, prefecture."},"layers":{"type":"array","items":{"type":"object","description":"One layer: layer, name, status, value (the official class of a zone), scenario, valid_time (edition), source, scope or reason, the rivers or zones behind a zone, citation."},"description":"Every Japan hazard layer at this place."},"population":{"description":"Projected residents of the 1 km mesh, with citations."},"error":{"type":"object","description":"Why this place has no answer."}}},"description":"Zones per place (detailed)."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_japan_hazards","data":{"columns":["place","lat","lon","layer","status","class","edition","source","note","cite"],"rows":[["35.5011, 134.2351",35.5011,134.2351,"japan_flood_max","zone","0.5 m to under 3 m","2025","MLIT KSJ A31a-2025",null,"c2b2ffa-1"],["35.5011, 134.2351",35.5011,134.2351,"japan_flood_planned","outside_zones",null,"2025","MLIT KSJ A31a-2025","Rivers whose managers supplied an assessment only; small rivers and inland (pluvial) flooding are not included.","c2b2ffa-2"],["35.5011, 134.2351",35.5011,134.2351,"japan_tsunami","outside_zones",null,"2018","MLIT KSJ A40-2024","Coasts with a published prefectural assumption only; an actual tsunami can be larger than the assumption.","c2b2ffa-3"],["35.5011, 134.2351",35.5011,134.2351,"japan_storm_surge","not_released",null,null,"MLIT KSJ A49-2024","No storm-surge inundation assumption published for this prefecture in KSJ A49-2024.",null],["35.5011, 134.2351",35.5011,134.2351,"japan_landslide","outside_zones",null,"2025","MLIT KSJ A33-2025","Designated zones only, at about 1:25,000–1:50,000; the data does not cover every zone and designations continue.","c2b2ffa-4"],["35.5011, 134.2351",35.5011,134.2351,"japan_heavy_snow","zone","Heavy-snow area","2016","MLIT KSJ A22-2016","National Land Numerical Information is digitised faithfully from each original source on 1:25,000 base maps and carries…","c2b2ffa-5"]],"layers":{"japan_flood_max":{"name":"Japan flood zones · maximum scale","scenario":"Assumed maximum-scale rainfall (about a 1-in-1,000-year rainfall)","scope":"Rivers whose managers supplied an assessment only; small rivers and inland (pluvial) flooding are not included."},"japan_flood_planned":{"name":"Japan flood zones · planned scale","scenario":"Planned-scale rainfall: the river's own design rainfall, which differs by river","scope":"Rivers whose managers supplied an assessment only; small rivers and inland (pluvial) flooding are not included."},"japan_tsunami":{"name":"Japan tsunami zones","scenario":"Maximum-class tsunami assumed by the prefecture","scope":"Coasts with a published prefectural assumption only; an actual tsunami can be larger than the assumption."},"japan_storm_surge":{"name":"Japan storm-surge zones","scenario":"Maximum-scale storm surge assumed by the prefecture","scope":"Coasts with a published prefectural assumption only (15 prefectures); an actual storm surge can be larger."},"japan_landslide":{"name":"Japan landslide zones","scenario":"Warning and special warning zones designated under the Sediment Disaster Prevention Act","scope":"Designated zones only, at about 1:25,000–1:50,000; the data does not cover every zone and designations continue."},"japan_heavy_snow":{"name":"Japan heavy-snow areas","scenario":"Heavy-snow and special heavy-snow areas designated under national law (2016)","scope":"Municipal designations as of 2016 (A22-2016); lakes and lagoons are not part of the designated areas."}},"places":[{"name":"35.5011, 134.2351","lat":35.5011,"lon":134.2351,"prefecture":"Tottori","portal_url":"https://disaportal.gsi.go.jp/maps/?ll=35.501100,134.235100&z=16&base=pale&ls=flood_list_l2|flood_l1|tsunamishinsui_raster|takashio_sinsuisin_raster|dosha_keikai_kyukeisha|dosha_keikai_dosekiryu|dosha_keikai_jisuberi&disp=1111111"}],"population":{"columns":["place","lat","lon","status","measure","valid_time","value","units","note","cite"],"rows":[["35.5011, 134.2351",35.5011,134.2351,"available","projected_residents","2020",5772,"residents in the 1 km mesh",null,"c2b2ffa-6"],["35.5011, 134.2351",35.5011,134.2351,"available","projected_residents","2050",3799,"residents in the 1 km mesh",null,"c2b2ffa-6"],["35.5011, 134.2351",35.5011,134.2351,"available","projected_residents","2070",2762,"residents in the 1 km mesh",null,"c2b2ffa-6"],["35.5011, 134.2351",35.5011,134.2351,"available","change_atlas_calculation","2020/2070",-52.1,"%",null,"c2b2ffa-6"]]}},"citations":[{"id":"c2b2ffa-1","layer":"japan_flood_max","provider":"MLIT National Land Numerical Information (国土数値情報), A31a-2025","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-2","layer":"japan_flood_planned","provider":"MLIT National Land Numerical Information (国土数値情報), A31a-2025","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-3","layer":"japan_tsunami","provider":"MLIT National Land Numerical Information (国土数値情報), A40-2024","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-4","layer":"japan_landslide","provider":"MLIT National Land Numerical Information (国土数値情報), A33-2025","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-5","layer":"japan_heavy_snow","provider":"MLIT National Land Numerical Information (国土数値情報), A22-2016","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-6","layer":"japan_population_change","provider":"MLIT National Land Numerical Information (国土数値情報), mesh1000r6 (2024)","data_kind":"official_projection","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"}],"attribution":["「国土数値情報（洪水浸水想定区域データ（河川単位））」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A31a-2025.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Flood inundation assumption zones (by river), A31a-2025), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A31a-2025.html. Licence: CC BY 4.0 (some restrictions by prefecture). Conditions and credit lines per prefecture: /api/v1/japan-hazards/status. World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures.","「国土数値情報（津波浸水想定データ）」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A40-2024.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Tsunami inundation assumption, A40-2024), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A40-2024.html. Licence: CC BY 4.0 (some restrictions by prefecture). Conditions and credit lines per prefecture: /api/v1/japan-hazards/status. World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures.","「国土数値情報（土砂災害警戒区域データ）」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A33-2025.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Sediment disaster (landslide) warning zones, A33-2025), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A33-2025.html. Licence: CC BY 4.0 (some restrictions by prefecture). Conditions and credit lines per prefecture: /api/v1/japan-hazards/status. World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures.","「国土数値情報（豪雪地帯データ）」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A22-2016.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Heavy-snow areas, A22-2016), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A22-2016.html. Licence: Commercial use allowed (商用可; KSJ terms, compatible with CC BY 4.0). World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures.","「国土数値情報（1kmメッシュ別将来推計人口データ（R6国政局推計））」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-mesh1000r6.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Projected population by 1 km mesh (2024 MLIT estimate), mesh1000r6 (2024)), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-mesh1000r6.html. Licence: CC BY 4.0. World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures."],"notes":["Official zones and designations under Japanese law, processed by World in Layers; planning scenarios, not predictions. Outside the zones means no zone is mapped there in this edition. Not the municipal hazard map and not usable for the Important Matters Explanation (重要事項説明). Official map: Hazard Map Portal Site (重ねるハザードマップ).","Concise rows give each layer's class; response_format=detailed adds the rivers and zones behind it."],"links":{"map":"https://worldinlayers.com/japan-flood?center=134.2351%2C35.5011&zoom=13.00&places=%5B%7B%22id%22%3A%22ask-35.5011-134.2351%22%2C%22name%22%3A%2235.5011%2C+134.2351%22%2C%22latitude%22%3A35.5011%2C%22longitude%22%3A134.2351%2C%22kind%22%3A%22place%22%7D%5D"}}},"text/csv":{"schema":{"type":"string","description":"RFC 4180 CSV, CRLF line endings, UTF-8 without BOM."},"example":"place,lat,lon,layer,status,class,edition,source,note,provider,data_kind,preliminary,stale,predictive,snapshot_version,source_url\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_flood_max,zone,0.5 m to under 3 m,2025,MLIT KSJ A31a-2025,,\"MLIT National Land Numerical Information (国土数値情報), A31a-2025\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_flood_planned,outside_zones,,2025,MLIT KSJ A31a-2025,Rivers whose managers supplied an assessment only; small rivers and inland (pluvial) flooding are not included.,\"MLIT National Land Numerical Information (国土数値情報), A31a-2025\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_tsunami,outside_zones,,2018,MLIT KSJ A40-2024,Coasts with a published prefectural assumption only; an actual tsunami can be larger than the assumption.,\"MLIT National Land Numerical Information (国土数値情報), A40-2024\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_storm_surge,not_released,,,MLIT KSJ A49-2024,No storm-surge inundation assumption published for this prefecture in KSJ A49-2024.,,,,,,,\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_landslide,outside_zones,,2025,MLIT KSJ A33-2025,\"Designated zones only, at about 1:25,000–1:50,000; the data does not cover every zone and designations continue.\",\"MLIT National Land Numerical Information (国土数値情報), A33-2025\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_heavy_snow,zone,Heavy-snow area,2016,MLIT KSJ A22-2016,\"National Land Numerical Information is digitised faithfully from each original source on 1:25,000 base maps and carries…\",\"MLIT National Land Numerical Information (国土数値情報), A22-2016\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n"}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_japan_hazards","error":{"code":"no_coverage","reason":"outside_japan","message":"37.5665, 126.9780 is outside Japan; the Japan hazard layers cover Japan only.","hint":"These layers cover Japan only."}}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_japan_hazards","error":{"code":"disabled","reason":"not_enabled","message":"Japan hazard zones are not available on this server yet.","hint":"Retry once the operator has imported the Japan hazard layers; meanwhile the Hazard Map Portal Site (重ねるハザードマップ, https://disaportal.gsi.go.jp/) shows the official maps."}}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"points","in":"query","required":false,"description":"JSON array of places, or use lat, lon, place, place_id and place_country for one place. 1–10 places in Japan (20 on Pro).","schema":{"type":"string"}},{"name":"lat","in":"query","required":false,"description":"One place: Latitude in degrees, -90 to 90.","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"description":"One place: Longitude in degrees, -180 to 180.","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"place","in":"query","required":false,"description":"One place: A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","schema":{"type":"string","maxLength":120}},{"name":"place_id","in":"query","required":false,"description":"One place: A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","schema":{"type":"string","maxLength":80}},{"name":"place_country","in":"query","required":false,"description":"One place: ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"response_format","in":"query","required":false,"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default) or csv: the concise table as CSV, up to 20,000 rows.","schema":{"type":"string","enum":["json","csv"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Japan hazard zones (JSON body)","description":"Official hazard zones at 1–10 places in Japan (20 on Pro) from MLIT National Land Numerical Information, processed by World in Layers: river flood (maximum and planned scale), tsunami, storm surge, landslide warning zones and heavy-snow areas, plus the 1 km mesh population projection, J-SHIS 30-year shaking probabilities and nearby official land prices. Each layer has a status (zone, outside_zones, not_released, not_applicable, excluded_terms, not_imported, outside_japan), the official class, scenario, edition and source. Designations and planning scenarios, not predictions or ratings: outside_zones means only that this edition maps no zone there. Not the municipal hazard map or the statutory disclosure (重要事項説明); the official map is the Hazard Map Portal Site (重ねるハザードマップ). Give each place as lat/lon, place_id or place (with place_country for an ambiguous name). 1 unit per place.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_japan_hazards_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"Official hazard zones and the population projection at places in Japan.","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place","lat","lon","layer","status","class","edition","source","note","cite"],"description":"A column name."},"description":"Column names of `rows`, in order (concise only). local_time appears only with `tz`; a series has a frame column only when some row's frame id differs from its time."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell: a string, number, boolean or null."},"description":"One row; its cells follow `columns`."},"description":"The concise table's rows (concise only); the `cite` cell is an id in `citations`."},"places":{"type":"array","items":{"type":"object","description":"A resolved place, with its prefecture and the official portal there.","properties":{"place":{"type":"string","description":"The place name as requested, for a place that did not resolve."},"place_country":{"type":"string","description":"Its country as requested (unresolved places only)."},"status":{"type":"string","description":"Public error code of a place that did not resolve (its values are in unavailable)."},"place_id":{"type":"string","description":"Stable id to pass to other tools."},"name":{"type":"string","description":"Place name."},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code."},"lat":{"type":"number","description":"Latitude."},"lon":{"type":"number","description":"Longitude."},"candidates":{"type":"array","items":{"type":"object","description":"Another place with the same name: place_id, name, country, ..."},"description":"Other places with this name; the most prominent was chosen."},"prefecture":{"type":"string","description":"The prefecture the lookup matched (English name)."},"prefecture_note":{"type":"string","description":"How the prefecture was matched when not by its boundary (approximate)."},"portal_url":{"type":"string","description":"The official Hazard Map Portal Site (重ねるハザードマップ) at this place, with the same hazards switched on."}},"additionalProperties":false},"description":"The places as resolved, in request order."},"layers":{"type":"object","description":"Layer id -> its name, scenario (what the layer assumes) and scope (what outside the mapped zones covers) (concise).","additionalProperties":{"type":"object","description":"One layer's name, scenario and scope."}},"population":{"type":"object","description":"The population projection of each place's 1 km mesh (concise).","properties":{"columns":{"type":"array","items":{"type":"string","enum":["place","lat","lon","status","measure","valid_time","value","units","note","cite"],"description":"A column name."},"description":"Column names of the population rows."},"rows":{"type":"array","items":{"type":"array","items":{"description":"One cell."},"description":"One row; cells follow `columns`."},"description":"Per place: the projected residents of its 1 km mesh in 2020, 2050 and 2070 (measure projected_residents) and the change from 2020 the atlas computes (change_atlas_calculation, %), or one row with the status and reason when the mesh has no projection."}},"additionalProperties":false},"points":{"type":"array","items":{"type":"object","description":"One place's zones (detailed).","properties":{"place":{"type":"object","description":"The place as resolved."},"portal_url":{"type":"string","description":"The official Hazard Map Portal Site at this place."},"point":{"type":"object","description":"Where the lookup read: lat, lon, name, prefecture."},"layers":{"type":"array","items":{"type":"object","description":"One layer: layer, name, status, value (the official class of a zone), scenario, valid_time (edition), source, scope or reason, the rivers or zones behind a zone, citation."},"description":"Every Japan hazard layer at this place."},"population":{"description":"Projected residents of the 1 km mesh, with citations."},"error":{"type":"object","description":"Why this place has no answer."}}},"description":"Zones per place (detailed)."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_japan_hazards","data":{"columns":["place","lat","lon","layer","status","class","edition","source","note","cite"],"rows":[["35.5011, 134.2351",35.5011,134.2351,"japan_flood_max","zone","0.5 m to under 3 m","2025","MLIT KSJ A31a-2025",null,"c2b2ffa-1"],["35.5011, 134.2351",35.5011,134.2351,"japan_flood_planned","outside_zones",null,"2025","MLIT KSJ A31a-2025","Rivers whose managers supplied an assessment only; small rivers and inland (pluvial) flooding are not included.","c2b2ffa-2"],["35.5011, 134.2351",35.5011,134.2351,"japan_tsunami","outside_zones",null,"2018","MLIT KSJ A40-2024","Coasts with a published prefectural assumption only; an actual tsunami can be larger than the assumption.","c2b2ffa-3"],["35.5011, 134.2351",35.5011,134.2351,"japan_storm_surge","not_released",null,null,"MLIT KSJ A49-2024","No storm-surge inundation assumption published for this prefecture in KSJ A49-2024.",null],["35.5011, 134.2351",35.5011,134.2351,"japan_landslide","outside_zones",null,"2025","MLIT KSJ A33-2025","Designated zones only, at about 1:25,000–1:50,000; the data does not cover every zone and designations continue.","c2b2ffa-4"],["35.5011, 134.2351",35.5011,134.2351,"japan_heavy_snow","zone","Heavy-snow area","2016","MLIT KSJ A22-2016","National Land Numerical Information is digitised faithfully from each original source on 1:25,000 base maps and carries…","c2b2ffa-5"]],"layers":{"japan_flood_max":{"name":"Japan flood zones · maximum scale","scenario":"Assumed maximum-scale rainfall (about a 1-in-1,000-year rainfall)","scope":"Rivers whose managers supplied an assessment only; small rivers and inland (pluvial) flooding are not included."},"japan_flood_planned":{"name":"Japan flood zones · planned scale","scenario":"Planned-scale rainfall: the river's own design rainfall, which differs by river","scope":"Rivers whose managers supplied an assessment only; small rivers and inland (pluvial) flooding are not included."},"japan_tsunami":{"name":"Japan tsunami zones","scenario":"Maximum-class tsunami assumed by the prefecture","scope":"Coasts with a published prefectural assumption only; an actual tsunami can be larger than the assumption."},"japan_storm_surge":{"name":"Japan storm-surge zones","scenario":"Maximum-scale storm surge assumed by the prefecture","scope":"Coasts with a published prefectural assumption only (15 prefectures); an actual storm surge can be larger."},"japan_landslide":{"name":"Japan landslide zones","scenario":"Warning and special warning zones designated under the Sediment Disaster Prevention Act","scope":"Designated zones only, at about 1:25,000–1:50,000; the data does not cover every zone and designations continue."},"japan_heavy_snow":{"name":"Japan heavy-snow areas","scenario":"Heavy-snow and special heavy-snow areas designated under national law (2016)","scope":"Municipal designations as of 2016 (A22-2016); lakes and lagoons are not part of the designated areas."}},"places":[{"name":"35.5011, 134.2351","lat":35.5011,"lon":134.2351,"prefecture":"Tottori","portal_url":"https://disaportal.gsi.go.jp/maps/?ll=35.501100,134.235100&z=16&base=pale&ls=flood_list_l2|flood_l1|tsunamishinsui_raster|takashio_sinsuisin_raster|dosha_keikai_kyukeisha|dosha_keikai_dosekiryu|dosha_keikai_jisuberi&disp=1111111"}],"population":{"columns":["place","lat","lon","status","measure","valid_time","value","units","note","cite"],"rows":[["35.5011, 134.2351",35.5011,134.2351,"available","projected_residents","2020",5772,"residents in the 1 km mesh",null,"c2b2ffa-6"],["35.5011, 134.2351",35.5011,134.2351,"available","projected_residents","2050",3799,"residents in the 1 km mesh",null,"c2b2ffa-6"],["35.5011, 134.2351",35.5011,134.2351,"available","projected_residents","2070",2762,"residents in the 1 km mesh",null,"c2b2ffa-6"],["35.5011, 134.2351",35.5011,134.2351,"available","change_atlas_calculation","2020/2070",-52.1,"%",null,"c2b2ffa-6"]]}},"citations":[{"id":"c2b2ffa-1","layer":"japan_flood_max","provider":"MLIT National Land Numerical Information (国土数値情報), A31a-2025","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-2","layer":"japan_flood_planned","provider":"MLIT National Land Numerical Information (国土数値情報), A31a-2025","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-3","layer":"japan_tsunami","provider":"MLIT National Land Numerical Information (国土数値情報), A40-2024","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-4","layer":"japan_landslide","provider":"MLIT National Land Numerical Information (国土数値情報), A33-2025","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-5","layer":"japan_heavy_snow","provider":"MLIT National Land Numerical Information (国土数値情報), A22-2016","data_kind":"official_designation","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"},{"id":"c2b2ffa-6","layer":"japan_population_change","provider":"MLIT National Land Numerical Information (国土数値情報), mesh1000r6 (2024)","data_kind":"official_projection","preliminary":false,"source_url":"https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351"}],"attribution":["「国土数値情報（洪水浸水想定区域データ（河川単位））」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A31a-2025.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Flood inundation assumption zones (by river), A31a-2025), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A31a-2025.html. Licence: CC BY 4.0 (some restrictions by prefecture). Conditions and credit lines per prefecture: /api/v1/japan-hazards/status. World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures.","「国土数値情報（津波浸水想定データ）」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A40-2024.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Tsunami inundation assumption, A40-2024), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A40-2024.html. Licence: CC BY 4.0 (some restrictions by prefecture). Conditions and credit lines per prefecture: /api/v1/japan-hazards/status. World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures.","「国土数値情報（土砂災害警戒区域データ）」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A33-2025.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Sediment disaster (landslide) warning zones, A33-2025), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A33-2025.html. Licence: CC BY 4.0 (some restrictions by prefecture). Conditions and credit lines per prefecture: /api/v1/japan-hazards/status. World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures.","「国土数値情報（豪雪地帯データ）」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A22-2016.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Heavy-snow areas, A22-2016), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A22-2016.html. Licence: Commercial use allowed (商用可; KSJ terms, compatible with CC BY 4.0). World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures.","「国土数値情報（1kmメッシュ別将来推計人口データ（R6国政局推計））」（国土交通省）（https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-mesh1000r6.html）を加工して作成。 Processed by World in Layers from National Land Numerical Information (Projected population by 1 km mesh (2024 MLIT estimate), mesh1000r6 (2024)), Ministry of Land, Infrastructure, Transport and Tourism (MLIT), https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-mesh1000r6.html. Licence: CC BY 4.0. World in Layers processed these data. They are not published or endorsed by MLIT or the prefectures."],"notes":["Official zones and designations under Japanese law, processed by World in Layers; planning scenarios, not predictions. Outside the zones means no zone is mapped there in this edition. Not the municipal hazard map and not usable for the Important Matters Explanation (重要事項説明). Official map: Hazard Map Portal Site (重ねるハザードマップ).","Concise rows give each layer's class; response_format=detailed adds the rivers and zones behind it."],"links":{"map":"https://worldinlayers.com/japan-flood?center=134.2351%2C35.5011&zoom=13.00&places=%5B%7B%22id%22%3A%22ask-35.5011-134.2351%22%2C%22name%22%3A%2235.5011%2C+134.2351%22%2C%22latitude%22%3A35.5011%2C%22longitude%22%3A134.2351%2C%22kind%22%3A%22place%22%7D%5D"}}},"text/csv":{"schema":{"type":"string","description":"RFC 4180 CSV, CRLF line endings, UTF-8 without BOM."},"example":"place,lat,lon,layer,status,class,edition,source,note,provider,data_kind,preliminary,stale,predictive,snapshot_version,source_url\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_flood_max,zone,0.5 m to under 3 m,2025,MLIT KSJ A31a-2025,,\"MLIT National Land Numerical Information (国土数値情報), A31a-2025\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_flood_planned,outside_zones,,2025,MLIT KSJ A31a-2025,Rivers whose managers supplied an assessment only; small rivers and inland (pluvial) flooding are not included.,\"MLIT National Land Numerical Information (国土数値情報), A31a-2025\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_tsunami,outside_zones,,2018,MLIT KSJ A40-2024,Coasts with a published prefectural assumption only; an actual tsunami can be larger than the assumption.,\"MLIT National Land Numerical Information (国土数値情報), A40-2024\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_storm_surge,not_released,,,MLIT KSJ A49-2024,No storm-surge inundation assumption published for this prefecture in KSJ A49-2024.,,,,,,,\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_landslide,outside_zones,,2025,MLIT KSJ A33-2025,\"Designated zones only, at about 1:25,000–1:50,000; the data does not cover every zone and designations continue.\",\"MLIT National Land Numerical Information (国土数値情報), A33-2025\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n\"35.5011, 134.2351\",35.5011,134.2351,japan_heavy_snow,zone,Heavy-snow area,2016,MLIT KSJ A22-2016,\"National Land Numerical Information is digitised faithfully from each original source on 1:25,000 base maps and carries…\",\"MLIT National Land Numerical Information (国土数値情報), A22-2016\",official_designation,false,,,,https://worldinlayers.com/api/v1/japan-hazards/point?lat=35.5011&lon=134.2351\r\n"}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_japan_hazards","error":{"code":"no_coverage","reason":"outside_japan","message":"37.5665, 126.9780 is outside Japan; the Japan hazard layers cover Japan only.","hint":"These layers cover Japan only."}}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"},"example":{"ok":false,"tool":"atlas_japan_hazards","error":{"code":"disabled","reason":"not_enabled","message":"Japan hazard zones are not available on this server yet.","hint":"Retry once the operator has imported the Japan hazard layers; meanwhile the Hazard Map Portal Site (重ねるハザードマップ, https://disaportal.gsi.go.jp/) shows the official maps."}}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude in degrees, -90 to 90.","minimum":-90,"maximum":90},"lon":{"type":"number","description":"Longitude in degrees, -180 to 180.","minimum":-180,"maximum":180},"place":{"type":"string","description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","maxLength":120},"place_id":{"type":"string","description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","maxLength":80},"place_country":{"type":"string","description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","pattern":"^[A-Za-z]{2}$"}},"additionalProperties":false,"description":"One place, given one way: lat and lon, or place_id, or place (with place_country to narrow the name)."},"minItems":1,"maxItems":20,"description":"1–10 places in Japan (20 on Pro)."},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default): a table (columns, rows) with one citation per layer and snapshot; detailed: full objects with a citation per value."}},"additionalProperties":false,"required":["points"]},"example":{"points":[{"lat":35.5011,"lon":134.2351}]}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default) or csv: the concise table as CSV, up to 20,000 rows.","schema":{"type":"string","enum":["json","csv"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_map_link":{"get":{"tags":["agent"],"summary":"Map link","description":"A link to the atlas map showing 1–6 layers (the first on top) at one time, centred on a place (lat/lon, place_id, or place with place_country), optionally in a polar projection. Every layer must reach the time: a layer whose forecast ends earlier is refused (outside_snapshot names it). End answers with it so a person can check the numbers on the map. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_map_link","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"A link to the atlas map.","properties":{"url":{"type":["string","null"],"description":"Absolute atlas map URL."},"summary":{"type":["string","null"],"description":"What the map shows."},"time_shown":{"type":["string","null"],"description":"The frame the map shows when it differs from time."},"offset_minutes":{"type":["integer","null"],"description":"Distance of that frame from the requested time."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_map_link","data":{"url":"https://worldinlayers.com/temperature?stack=%5B%7B%22id%22%3A%22temperature%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%2C%7B%22id%22%3A%22pm25%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%5D&center=-9.1498%2C38.7251&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-38.7251--9.1498%22%2C%22name%22%3A%22Lisbon%2C+PT%22%2C%22latitude%22%3A38.7251%2C%22longitude%22%3A-9.1498%2C%22kind%22%3A%22place%22%7D%5D","summary":"Temperature + Air quality · PM2.5 · Lisbon, PT pinned"},"citations":[],"attribution":[],"notes":[],"links":{},"usage":{"units":1,"units_today":20,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"layers","in":"query","required":true,"description":"1–6 layer ids; the first is on top. Repeat the parameter or separate values with commas.","schema":{"type":"array","items":{"type":"string","enum":["magnetism","pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","fires","sentinel_imagery","sentinel_ndvi","sentinel_nbr","sentinel_so2","sentinel_lst","earthquakes","japan_flood_max","japan_flood_planned","japan_tsunami","japan_storm_surge","japan_landslide","japan_heavy_snow","japan_population_change","japan_earthquake","japan_land_price","japan_vacancy"],"description":"Layer id."},"minItems":1,"maxItems":6},"style":"form","explode":true},{"name":"time","in":"query","required":false,"description":"'now' (default); YYYY-MM-DD (12:00 UTC); YYYY-MM-DDTHH:MM with Z or an offset (UTC when neither is given); '01'–'12' for a month of the 1991–2020 climate layers; YYYY-MM for one past month of a climate layer.","schema":{"type":"string","maxLength":40}},{"name":"lat","in":"query","required":false,"description":"Latitude in degrees, -90 to 90.","schema":{"type":"number","minimum":-90,"maximum":90}},{"name":"lon","in":"query","required":false,"description":"Longitude in degrees, -180 to 180.","schema":{"type":"number","minimum":-180,"maximum":180}},{"name":"place","in":"query","required":false,"description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","schema":{"type":"string","maxLength":120}},{"name":"place_id","in":"query","required":false,"description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","schema":{"type":"string","maxLength":80}},{"name":"place_country","in":"query","required":false,"description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","schema":{"type":"string","pattern":"^[A-Za-z]{2}$"}},{"name":"zoom","in":"query","required":false,"description":"1–12: 3 continent, 5 country, 8 region, 10 city.","schema":{"type":"number","minimum":1,"maximum":12}},{"name":"projection","in":"query","required":false,"description":"Map projection; default mercator.","schema":{"type":"string","enum":["mercator","equirectangular","north_polar","south_polar"]}},{"name":"response_format","in":"query","required":false,"description":"concise (default) or detailed; this tool returns the same data in both.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"Map link (JSON body)","description":"A link to the atlas map showing 1–6 layers (the first on top) at one time, centred on a place (lat/lon, place_id, or place with place_country), optionally in a polar projection. Every layer must reach the time: a layer whose forecast ends earlier is refused (outside_snapshot names it). End answers with it so a person can check the numbers on the map. 1 unit.\n\nCost: 1 unit(s). Scope: `read`.","operationId":"atlas_map_link_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"A link to the atlas map.","properties":{"url":{"type":["string","null"],"description":"Absolute atlas map URL."},"summary":{"type":["string","null"],"description":"What the map shows."},"time_shown":{"type":["string","null"],"description":"The frame the map shows when it differs from time."},"offset_minutes":{"type":["integer","null"],"description":"Distance of that frame from the requested time."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_map_link","data":{"url":"https://worldinlayers.com/temperature?stack=%5B%7B%22id%22%3A%22temperature%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%2C%7B%22id%22%3A%22pm25%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%5D&center=-9.1498%2C38.7251&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-38.7251--9.1498%22%2C%22name%22%3A%22Lisbon%2C+PT%22%2C%22latitude%22%3A38.7251%2C%22longitude%22%3A-9.1498%2C%22kind%22%3A%22place%22%7D%5D","summary":"Temperature + Air quality · PM2.5 · Lisbon, PT pinned"},"citations":[],"attribution":[],"notes":[],"links":{},"usage":{"units":1,"units_today":20,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"layers":{"type":"array","items":{"type":"string","enum":["magnetism","pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","fires","sentinel_imagery","sentinel_ndvi","sentinel_nbr","sentinel_so2","sentinel_lst","earthquakes","japan_flood_max","japan_flood_planned","japan_tsunami","japan_storm_surge","japan_landslide","japan_heavy_snow","japan_population_change","japan_earthquake","japan_land_price","japan_vacancy"],"description":"Layer id."},"minItems":1,"maxItems":6,"description":"1–6 layer ids; the first is on top."},"time":{"type":"string","description":"'now' (default); YYYY-MM-DD (12:00 UTC); YYYY-MM-DDTHH:MM with Z or an offset (UTC when neither is given); '01'–'12' for a month of the 1991–2020 climate layers; YYYY-MM for one past month of a climate layer.","maxLength":40},"lat":{"type":"number","description":"Latitude in degrees, -90 to 90.","minimum":-90,"maximum":90},"lon":{"type":"number","description":"Longitude in degrees, -180 to 180.","minimum":-180,"maximum":180},"place":{"type":"string","description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","maxLength":120},"place_id":{"type":"string","description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","maxLength":80},"place_country":{"type":"string","description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","pattern":"^[A-Za-z]{2}$"},"zoom":{"type":"number","description":"1–12: 3 continent, 5 country, 8 region, 10 city.","minimum":1,"maximum":12},"projection":{"type":"string","enum":["mercator","equirectangular","north_polar","south_polar"],"description":"Map projection; default mercator."},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default) or detailed; this tool returns the same data in both."}},"additionalProperties":false,"required":["layers"]},"example":{"layers":["temperature","pm25"],"place":"Lisbon","place_country":"PT","zoom":6}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_my_places":{"get":{"tags":["agent"],"summary":"My places","description":"The places saved as favourites on this account (newest first), with their ids, coordinates and layer. Pass their lat and lon as points to other tools. An account without favourites gets an empty list. Needs the key's 'places' scope. 1 unit.\n\nCost: 1 unit(s). Scope: `places`.","operationId":"atlas_my_places","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"The account's favourite places.","properties":{"places":{"type":"array","items":{"type":"object","description":"One favourite.","properties":{"id":{"type":["string","null"],"description":"Favourite id."},"name":{"type":["string","null"],"description":"Name given on the map."},"lat":{"type":["number","null"],"description":"Latitude."},"lon":{"type":["number","null"],"description":"Longitude."},"layer":{"type":["string","null"],"description":"Layer saved with it."}},"additionalProperties":false},"description":"Favourites, newest first."},"count":{"type":["integer","null"],"description":"Number of favourites."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_my_places","data":{"places":[],"count":0},"citations":[],"attribution":[],"notes":["No favourites are saved on this account; add them on the map."],"links":{},"usage":{"units":1,"units_today":21,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"parameters":[{"name":"response_format","in":"query","required":false,"description":"concise (default) or detailed; this tool returns the same data in both.","schema":{"type":"string","enum":["concise","detailed"]}},{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]},"post":{"tags":["agent"],"summary":"My places (JSON body)","description":"The places saved as favourites on this account (newest first), with their ids, coordinates and layer. Pass their lat and lon as points to other tools. An account without favourites gets an empty list. Needs the key's 'places' scope. 1 unit.\n\nCost: 1 unit(s). Scope: `places`.","operationId":"atlas_my_places_post","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"The account's favourite places.","properties":{"places":{"type":"array","items":{"type":"object","description":"One favourite.","properties":{"id":{"type":["string","null"],"description":"Favourite id."},"name":{"type":["string","null"],"description":"Name given on the map."},"lat":{"type":["number","null"],"description":"Latitude."},"lon":{"type":["number","null"],"description":"Longitude."},"layer":{"type":["string","null"],"description":"Layer saved with it."}},"additionalProperties":false},"description":"Favourites, newest first."},"count":{"type":["integer","null"],"description":"Number of favourites."}},"additionalProperties":false}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_my_places","data":{"places":[],"count":0},"citations":[],"attribution":[],"notes":["No favourites are saved on this account; add them on the map."],"links":{},"usage":{"units":1,"units_today":21,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default) or detailed; this tool returns the same data in both."}},"additionalProperties":false},"example":{}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]}},"/api/v1/agent/atlas_make_map_card":{"post":{"tags":["agent"],"summary":"Make a map card","description":"Create a shareable map card (an image and a page with attribution) for 1–8 layers over a place or bbox at one time. First call with dry_run: true to check the plan and get the template title options (5 units); then call again without dry_run, with the chosen title_id and the same client_request_id. Creating costs 50 units and one of the day's cards; a repeat with that client_request_id returns the same card at no charge. Give the place as place_id, lat/lon, or place with place_country (an ambiguous name returns candidates). Satellite layers are not available on cards made here. A past time adds cold loads as atlas_get_point_values does (25 units per layer family and uncached date, at most 2 per call). A magnetic card for a date whose field map is not prepared yet answers busy and costs 5 units while the map is prepared (at most 5 new dates a day); retry with the same arguments.\n\nCost: 50 unit(s). Scope: `cards`.","operationId":"atlas_make_map_card","responses":{"200":{"description":"The envelope with cited data (or CSV with format=csv).","content":{"application/json":{"schema":{"type":"object","description":"The atlas envelope: data, citations, attribution, notes, links and usage on success; error when ok is false.","properties":{"ok":{"type":"boolean","description":"true for a result, false for an error."},"tool":{"type":"string","description":"The tool that answered."},"citations":{"type":"array","items":{"type":"object","description":"One cited source (concise) or value (detailed).","properties":{"id":{"type":"string","description":"Citation id, unique in this response (a per-call prefix and a number, e.g. c3f9a2b-1); cite it exactly as returned."},"layer":{"type":"string","description":"Layer id of the cited value."},"label":{"type":"string","description":"What was measured or modelled, where and when (detailed only)."},"value":{"description":"The cited value (detailed only)."},"units":{"type":"string","description":"Units of the value (detailed only)."},"data_kind":{"type":"string","description":"forecast, analysis, reanalysis, observation, climatology or model; official_designation (Japan hazard zones) or official_projection (Japan population)."},"preliminary":{"type":"boolean","description":"true when the provider marks the value as preliminary."},"valid_time":{"type":"string","description":"When the value is valid, ISO 8601 UTC (detailed only): an instant, or for fire detections the snapshot window as an interval 'start/end' (a magnetic series gives 'first/last' decimal years; a Japan hazard zone gives its edition year, a population projection its year)."},"provider":{"type":"string","description":"Data provider."},"lat":{"type":"number","description":"Latitude of the cited value (detailed only)."},"lon":{"type":"number","description":"Longitude of the cited value (detailed only)."},"snapshot_version":{"type":"string","description":"Version of the snapshot the value comes from."},"retained_until":{"type":"string","description":"Until when source_url (or reproduce) returns the same value, ISO 8601 UTC."},"source_url":{"type":"string","description":"Absolute URL that returns this value without a key."},"source_url_template":{"type":"string","description":"Concise only, instead of source_url when the rows citing this id were read at different coordinates or times, or are different events: replace {lat}, {lon} and {id} with the row's lat, lon and id cells, and {frame} with the row's frame cell (or its time when the table has no frame column), to get the URL that returns that row's value."},"provider_url_template":{"type":"string","description":"Concise only, instead of provider_url for several events: replace {id} with the row's id."},"model":{"type":"string","description":"Magnetic model id, for magnetic values."},"provider_url":{"type":"string","description":"The provider's own page for an event (it may show a later revision)."},"predictive":{"type":"boolean","description":"true for a magnetic model year beyond the model's main-field epoch (predictive secular variation)."},"stale":{"type":"boolean","description":"true when the source's expected refresh is overdue."},"retention":{"type":"string","description":"How long the cited snapshot is kept, where retained_until cannot say: the volcano catalogue is kept only while it is current."},"distance_km":{"type":"number","description":"Distance from the requested place, for events."},"depth_km":{"type":"number","description":"Earthquake depth."},"statistic":{"type":"string","description":"Area statistic: mean, max, min or share_at_or_above."},"near":{"description":"Nearest named place to an area extreme."},"threshold":{"type":"number","description":"Threshold of a share statistic."},"reproduce":{"type":"object","description":"For derived values (area means and shares, series, event counts, volcano distances): the call that recomputes this citation's values while the snapshot is retained.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Arguments with the resolved time (never 'now') and, where the tool accepts it, snapshot_version. `layers` lists only the layers of this citation's source and snapshot, so the call reproduces this citation's subset of the original answer."},"snapshot_version":{"type":"string","description":"Snapshot the statistic was computed from."}},"additionalProperties":false}},"additionalProperties":false},"description":"Citations: one per value (detailed), or one per layer and snapshot (concise; rows of one layer share it, see source_url_template)."},"attribution":{"type":"array","items":{"type":"string","description":"One provider's credit line."},"description":"Copy-ready credit, once per provider; show it with the values."},"notes":{"type":"array","items":{"type":"string","description":"One note."},"description":"Caveats about this answer: frame offsets, fallbacks, what values mean."},"links":{"type":"object","description":"Links for people: the atlas map for this answer.","properties":{"map":{"type":"string","description":"Atlas map URL showing these layers and places."}},"additionalProperties":false},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","description":"Public error code (see the errors table at /developers)."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}}},"data":{"type":"object","description":"A map card, or the dry-run plan.","properties":{"dry_run":{"type":["boolean","null"],"description":"true for a dry run: nothing was created."},"plan":{"type":"object","description":"Dry run: the validated plan (place, layers, area, times)."},"titles":{"type":"array","items":{"type":"object","description":"id and title."},"description":"Template title options (dry run)."},"title_id":{"type":["string","null"],"description":"Chosen title id."},"title":{"type":["string","null"],"description":"Chosen title."},"stats":{"description":"Card statistics (created), or a note (dry run)."},"units":{"type":["integer","null"],"description":"Units a creating call costs (dry run)."},"client_request_id":{"type":["string","null"],"description":"Idempotency key; repeat it to retry safely."},"id":{"type":["string","null"],"description":"Card id."},"url":{"type":["string","null"],"description":"Card page URL."},"image_url":{"type":["string","null"],"description":"Card image URL."},"alt":{"type":["string","null"],"description":"Image alt text."},"citation":{"type":["string","null"],"description":"Citation text for the card."},"credit":{"description":"Credit for the card."},"attribution":{"description":"Attribution shown on the card."},"data_kind":{"type":["string","null"],"description":"Data kind of the card's data."},"data_time":{"type":["string","null"],"description":"Time of the card's data."},"created_at":{"type":["string","null"],"description":"When the card was made."},"created":{"type":["boolean","null"],"description":"true when this call made the card."},"duplicate":{"type":["boolean","null"],"description":"true when an identical card already existed."},"made_via_api":{"type":["boolean","null"],"description":"true for cards made with a key."}}}},"additionalProperties":false,"required":["ok","tool"]},"example":{"ok":true,"tool":"atlas_make_map_card","data":{"dry_run":true,"plan":{"theme":"heat","place":{"kind":"place","name":"Lisbon","country":"Portugal","country_code":"PT","region":"Lisbon","latitude":38.72509,"longitude":-9.1498,"place_id":"geonames:2267057","option":"geonames:2267057","breadcrumb":["World","Portugal","Lisbon","Lisbon"]},"places":[{"id":"geonames:2267057","name":"Lisbon","default":true},{"id":"region","name":"LISBOA","default":false},{"id":"country:PRT","name":"Portugal","default":false},{"id":"coords","name":"38.7°N, 9.1°W","default":false}],"layers":[{"id":"temperature","role":"raster","name":"Temperature","data_kind":"forecast","time":"2026-10-25T18:00:00Z","frame":"2026-10-25T18:00:00Z","version":"20261024T001026-246ae636"}],"bbox":[-14.91352,36.32565,-3.38608,41.0466],"area":{"width_km":1000,"height_km":525},"data_kind":"forecast","data_time":"2026-10-25T18:00:00Z","time_line":"Forecast for 18:00 UTC, 25 Oct 2026","live_url":"https://worldinlayers.com/temperature?stack=%5B%7B%22id%22%3A%22temperature%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%22%22%7D%5D&center=-9.1498%2C38.7251&zoom=7.19","archive_url":"https://worldinlayers.com/temperature?time=2026-10-25T18%3A00%3A00Z&period=history&at=2026-10-25T18%3A00%3A00Z&stack=%5B%7B%22id%22%3A%22temperature%22%2C%22visible%22%3Atrue%2C%22opacity%22%3A0.8%2C%22time%22%3A%222026-10-25T18%3A00%3A00Z%22%2C%22settings%22%3A%22time%3D2026-10-25T18%253A00%253A00Z%26period%3Dhistory%26at%3D2026-10-25T18%253A00%253A00Z%22%7D%5D&center=-9.1498%2C38.7251&zoom=7.19"},"titles":[{"id":"heat.1","title":"Temperature forecast for Lisbon · 25 Oct 2026"},{"id":"heat.2","title":"Lisbon temperature map · 25 Oct 2026"},{"id":"heat.3","title":"Heat in Lisbon · 25 Oct 2026"}],"title_id":"heat.1","title":"Temperature forecast for Lisbon · 25 Oct 2026","stats":"Statistics are computed from the pinned data when the card is created.","units":50,"client_request_id":"6f1c2b9e-4d3a-4b8e-9a51-2c7d0e8f3a64"},"citations":[],"attribution":["NOAA GFS: data from the US National Weather Service, public domain; attribution requested.","Country outlines: Natural Earth, public domain."],"notes":["No width_km was given; the card is 1000 km wide.","Temperature: the nearest frame is 2026-10-25 18:00 UTC, 3.52 h after the requested time."],"links":{"map":"https://worldinlayers.com/temperature?center=-9.1498%2C38.7251&zoom=6.00&places=%5B%7B%22id%22%3A%22ask-38.7251--9.1498%22%2C%22name%22%3A%22Lisbon%2C+PT%22%2C%22latitude%22%3A38.7251%2C%22longitude%22%3A-9.1498%2C%22kind%22%3A%22place%22%7D%5D"},"usage":{"units":5,"units_today":26,"units_limit":10000,"cold_loads_today":0,"cold_loads_limit":16,"cards_today":0,"cards_limit":30}}}},"headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}}},"400":{"description":"Error envelope: `invalid_input`, `invalid_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"401":{"description":"Error envelope: `invalid_key`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"WWW-Authenticate":{"$ref":"#/components/headers/WWW-Authenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"402":{"description":"Error envelope: `plan_required`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"403":{"description":"Error envelope: `scope_required`, `suspended`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"404":{"description":"Error envelope: `no_coverage`, `not_retained`, `outside_snapshot`, `frame_too_far`, `not_available`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"409":{"description":"Error envelope: `ambiguous_place`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"413":{"description":"Error envelope: `too_large`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"429":{"description":"Error envelope: `quota_exceeded`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"451":{"description":"Error envelope: `licence_pending`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"500":{"description":"Error envelope: `internal`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"503":{"description":"Error envelope: `busy`, `disabled`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}},"504":{"description":"Error envelope: `timeout`.","headers":{"X-Atlas-Units-Limit":{"$ref":"#/components/headers/X-Atlas-Units-Limit"},"X-Atlas-Units-Remaining":{"$ref":"#/components/headers/X-Atlas-Units-Remaining"},"X-Atlas-Units-Reset":{"$ref":"#/components/headers/X-Atlas-Units-Reset"},"X-Atlas-Cost":{"$ref":"#/components/headers/X-Atlas-Cost"},"X-Atlas-Burst-Limit":{"$ref":"#/components/headers/X-Atlas-Burst-Limit"},"X-Atlas-Burst-Remaining":{"$ref":"#/components/headers/X-Atlas-Burst-Remaining"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentError"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"layers":{"type":"array","items":{"type":"string","enum":["magnetism","pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","fires","earthquakes","japan_flood_max","japan_flood_planned","japan_tsunami","japan_storm_surge","japan_landslide","japan_heavy_snow","japan_population_change","japan_earthquake","japan_land_price","japan_vacancy"],"description":"Layer id."},"minItems":1,"maxItems":8,"description":"1–8 layer ids, top first."},"opacity":{"type":"array","items":{"type":"number","description":"Opacity 0–1.","minimum":0,"maximum":1},"maxItems":8,"description":"Per-layer opacity in the order of `layers` (default as on the map: 0.8, magnetism 0.88, earthquakes 0.9)."},"place":{"type":"string","description":"A place name (city, postcode or country) resolved through the gazetteer: the largest clear match is used and its namesakes come back in candidates[]; when no match is clear, ambiguous_place lists the candidates (add place_country or use a place_id). Not with lat/lon or place_id.","maxLength":120},"place_id":{"type":"string","description":"A stable id from atlas_find_place: geonames:<id>, postcode:<CC>:<code> or country:<ISO2>.","maxLength":80},"place_country":{"type":"string","description":"ISO 3166-1 alpha-2 code (e.g. PT) that narrows `place` to one country; only with `place`.","pattern":"^[A-Za-z]{2}$"},"lat":{"type":"number","description":"Latitude in degrees, -90 to 90.","minimum":-90,"maximum":90},"lon":{"type":"number","description":"Longitude in degrees, -180 to 180.","minimum":-180,"maximum":180},"bbox":{"type":"array","items":{"type":"number"},"minItems":4,"maxItems":4,"description":"[west, south, east, north] in degrees; west > east crosses the date line."},"width_km":{"type":"number","description":"Card width in km around the place, 50–20000 (default 1000, a country 2500); layers with coarse grids need up to 300.","minimum":50,"maximum":20000},"time":{"type":"string","description":"'now' (default); YYYY-MM-DD (12:00 UTC); YYYY-MM-DDTHH:MM with Z or an offset (UTC when neither is given); '01'–'12' for a month of the 1991–2020 climate layers; YYYY-MM for one past month of a climate layer.","maxLength":40},"title_id":{"type":"string","description":"A template title id from the dry run; default the first.","maxLength":16},"dry_run":{"type":"boolean","description":"Validate and price without creating."},"client_request_id":{"type":"string","description":"UUID v4 idempotency key; one is generated and returned when omitted.","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"},"response_format":{"type":"string","enum":["concise","detailed"],"description":"concise (default) or detailed; this tool returns the same data in both."}},"additionalProperties":false,"required":["layers"]},"example":{"layers":["temperature"],"place":"Lisbon","place_country":"PT","dry_run":true,"client_request_id":"6f1c2b9e-4d3a-4b8e-9a51-2c7d0e8f3a64"}}}},"parameters":[{"name":"format","in":"query","required":false,"description":"json (default).","schema":{"type":"string","enum":["json"]}}],"security":[{"bearer":[]}]}},"/api/v1/client-errors":{"post":{"summary":"Client Error","operationId":"client_error_api_v1_client_errors_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientError"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/health":{"get":{"summary":"Health","operationId":"health_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/config":{"get":{"summary":"Browser Config","operationId":"browser_config_api_v1_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/catalogue":{"get":{"summary":"Get Catalogue","operationId":"get_catalogue_api_v1_catalogue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/volcanoes":{"get":{"summary":"Volcano Locations","operationId":"volcano_locations_api_v1_volcanoes_get","parameters":[{"name":"download","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Download"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/volcanoes/status":{"get":{"summary":"Volcano Refresh Status","operationId":"volcano_refresh_status_api_v1_volcanoes_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/volcanoes/{ident}":{"get":{"summary":"Volcano Detail","operationId":"volcano_detail_api_v1_volcanoes__ident__get","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"integer","title":"Ident"}},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Download"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/places":{"get":{"summary":"Places","operationId":"places_api_v1_places_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120,"title":"Q"}},{"name":"country","in":"query","required":false,"schema":{"type":"string","maxLength":2,"default":"","title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/countries":{"get":{"summary":"Search Countries","operationId":"search_countries_api_v1_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/locations/reverse":{"get":{"summary":"Location Context","operationId":"location_context_api_v1_locations_reverse_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/point":{"get":{"summary":"Get Point","operationId":"get_point_api_v1_point_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}},{"name":"model","in":"query","required":false,"schema":{"type":"string","default":"igrf14","title":"Model"}},{"name":"date","in":"query","required":false,"schema":{"type":"string","default":"2025-01-01","title":"Date"}},{"name":"altitude_km","in":"query","required":false,"schema":{"type":"number","maximum":1000,"minimum":0,"default":0,"title":"Altitude Km"}},{"name":"baseline","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseline"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/timeseries":{"get":{"summary":"Timeseries","operationId":"timeseries_api_v1_timeseries_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}},{"name":"model","in":"query","required":false,"schema":{"type":"string","default":"igrf14","title":"Model"}},{"name":"start","in":"query","required":false,"schema":{"type":"number","default":1900,"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"type":"number","default":2025,"title":"End"}},{"name":"altitude_km","in":"query","required":false,"schema":{"type":"number","maximum":1000,"minimum":0,"default":0,"title":"Altitude Km"}},{"name":"samples","in":"query","required":false,"schema":{"type":"integer","maximum":600,"minimum":2,"default":126,"title":"Samples"}},{"name":"format","in":"query","required":false,"schema":{"enum":["json","csv"],"type":"string","default":"json","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/products":{"post":{"summary":"Products","operationId":"products_api_v1_products_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/jobs/{ident}":{"get":{"summary":"Job Status","operationId":"job_status_api_v1_jobs__ident__get","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stations":{"get":{"summary":"Stations","operationId":"stations_api_v1_stations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/raster-point":{"get":{"summary":"Raster Point","operationId":"raster_point_api_v1_raster_point_get","parameters":[{"name":"dataset_id","in":"query","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/availability/{ident}":{"get":{"summary":"Availability","operationId":"availability_api_v1_availability__ident__get","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/observations":{"post":{"summary":"Observations","operationId":"observations_api_v1_observations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObservationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/observations/{ident}/download":{"get":{"summary":"Download Observations","operationId":"download_observations_api_v1_observations__ident__download_get","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rasters/{ident}/prepare":{"post":{"summary":"Prepare Raster","operationId":"prepare_raster_api_v1_rasters__ident__prepare_post","parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ChangeInput":{"properties":{"action":{"type":"string","enum":["interval","cancel","resume","remove_change"],"title":"Action"},"interval":{"anyOf":[{"type":"string","enum":["monthly","annual"]},{"type":"null"}],"title":"Interval"}},"additionalProperties":false,"type":"object","required":["action"],"title":"ChangeInput"},"CheckoutInput":{"properties":{"interval":{"type":"string","enum":["monthly","annual"],"title":"Interval"},"terms_version":{"type":"string","title":"Terms Version"},"immediate_access":{"type":"boolean","const":true,"title":"Immediate Access"},"plan":{"type":"string","enum":["plus","pro"],"title":"Plan","default":"plus"}},"additionalProperties":false,"type":"object","required":["interval","terms_version","immediate_access"],"title":"CheckoutInput"},"ClientError":{"properties":{"message":{"type":"string","maxLength":500,"title":"Message"},"source":{"type":"string","maxLength":150,"title":"Source","default":""}},"additionalProperties":false,"type":"object","required":["message"],"title":"ClientError"},"DeleteInput":{"properties":{"email":{"type":"string","maxLength":254,"title":"Email"}},"additionalProperties":false,"type":"object","required":["email"],"title":"DeleteInput"},"EarthquakeFilters":{"properties":{"window":{"type":"string","enum":["24h","7d","30d","90d","365d","all","custom"],"title":"Window","default":"7d"},"min_magnitude":{"anyOf":[{"type":"number","maximum":15.0,"minimum":-10.0},{"type":"null"}],"title":"Min Magnitude"},"depth":{"type":"string","enum":["all","shallow","intermediate","deep","unknown"],"title":"Depth","default":"all"},"start_date":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"End Date"},"page":{"type":"integer","maximum":100000.0,"minimum":1.0,"title":"Page","default":1},"order":{"type":"string","enum":["latest","oldest"],"title":"Order","default":"latest"}},"type":"object","title":"EarthquakeFilters"},"EmailInput":{"properties":{"email":{"type":"string","maxLength":254,"title":"Email"}},"additionalProperties":false,"type":"object","required":["email"],"title":"EmailInput"},"FavoriteInput":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"latitude":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Latitude"},"longitude":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Longitude"},"layer":{"type":"string","enum":["magnetism","pm25","pm10","no2","o3","co","aerosol","dust","temperature","humidity","feels_like","dew_point","wet_bulb","solar","uv","wind","gusts","pressure","precipitation","clouds","cape","snow_depth","soil_moisture","climate_temperature","climate_rain","climate_humidity","sst","waves","fires","sentinel_imagery","sentinel_ndvi","sentinel_nbr","sentinel_so2","sentinel_lst","earthquakes","japan_flood_max","japan_flood_planned","japan_tsunami","japan_storm_surge","japan_landslide","japan_heavy_snow","japan_population_change"],"title":"Layer","default":"magnetism"}},"additionalProperties":false,"type":"object","required":["name","latitude","longitude"],"title":"FavoriteInput"},"FavoriteName":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"additionalProperties":false,"type":"object","required":["name"],"title":"FavoriteName"},"GoogleInput":{"properties":{},"additionalProperties":false,"type":"object","title":"GoogleInput"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeyInput":{"properties":{"name":{"type":"string","maxLength":60,"minLength":1,"title":"Name"}},"additionalProperties":false,"type":"object","required":["name"],"title":"KeyInput"},"LayerInput":{"properties":{"id":{"type":"string","maxLength":40,"minLength":1,"title":"Id"},"role":{"anyOf":[{"type":"string","enum":["raster","points","flow"]},{"type":"null"}],"title":"Role"},"frame":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Frame"},"version":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Version"},"opacity":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Opacity"},"shading":{"type":"boolean","title":"Shading","default":true},"streaks":{"type":"boolean","title":"Streaks","default":false},"contours":{"type":"boolean","title":"Contours","default":false},"product":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Product"},"filters":{"anyOf":[{"$ref":"#/components/schemas/EarthquakeFilters"},{"type":"null"}]},"max_cloud":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Max Cloud"}},"type":"object","required":["id"],"title":"LayerInput","description":"One layer stack entry, in stack order (top first). Older clients send one item\nper role (`role`: raster | points | flow) instead."},"MapContext":{"properties":{"path":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Path"},"query":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Query"},"primary_layer":{"anyOf":[{"type":"string","pattern":"^[a-z0-9_]{1,40}$"},{"type":"null"}],"title":"Primary Layer"},"layers":{"items":{"type":"string","pattern":"^[a-z0-9_]{1,40}$"},"type":"array","maxItems":12,"title":"Layers"},"time":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Time"},"center":{"anyOf":[{"$ref":"#/components/schemas/Point"},{"type":"null"}]},"zoom":{"anyOf":[{"type":"number","maximum":24.0,"minimum":0.0},{"type":"null"}],"title":"Zoom"},"place":{"anyOf":[{"$ref":"#/components/schemas/Place"},{"type":"null"}]},"plan":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Plan"}},"additionalProperties":false,"type":"object","title":"MapContext"},"MessageInput":{"properties":{"conversation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Conversation Id"},"message":{"type":"string","maxLength":4000,"minLength":1,"title":"Message"},"map_context":{"anyOf":[{"$ref":"#/components/schemas/MapContext"},{"type":"null"}]},"retry":{"type":"boolean","title":"Retry","default":false}},"additionalProperties":false,"type":"object","required":["message"],"title":"MessageInput"},"ObservationRequest":{"properties":{"dataset":{"type":"string","title":"Dataset"},"start":{"type":"string","title":"Start"},"end":{"type":"string","title":"End"},"station":{"type":"string","title":"Station","default":"BOU"},"station_quality":{"type":"string","enum":["variation","adjusted","quasi-definitive","definitive"],"title":"Station Quality","default":"definitive"},"sampling_seconds":{"type":"integer","enum":[1,60,3600],"title":"Sampling Seconds","default":60},"quality_filter":{"type":"string","enum":["good","all"],"title":"Quality Filter","default":"good"},"limit":{"type":"integer","maximum":10000.0,"minimum":100.0,"title":"Limit","default":3000},"bbox":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}],"type":"array","maxItems":4,"minItems":4},{"type":"null"}],"title":"Bbox"},"comparison_model":{"anyOf":[{"type":"string","enum":["igrf14","chaos8","wmm2025"]},{"type":"null"}],"title":"Comparison Model"}},"additionalProperties":false,"type":"object","required":["dataset","start","end"],"title":"ObservationRequest"},"Place":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lon":{"type":"number","maximum":540.0,"minimum":-540.0,"title":"Lon"},"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"additionalProperties":false,"type":"object","required":["lat","lon","name"],"title":"Place"},"PlaceInput":{"properties":{"option":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Option"},"selected":{"items":{"$ref":"#/components/schemas/SelectedPlace"},"type":"array","maxItems":4,"title":"Selected"}},"type":"object","title":"PlaceInput"},"Point":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lon":{"type":"number","maximum":540.0,"minimum":-540.0,"title":"Lon"}},"additionalProperties":false,"type":"object","required":["lat","lon"],"title":"Point"},"PreviewInput":{"properties":{"mode":{"type":"string","enum":["free","plus","pro","exhausted","billing"],"title":"Mode"}},"additionalProperties":false,"type":"object","required":["mode"],"title":"PreviewInput"},"ProductRequest":{"properties":{"model":{"type":"string","title":"Model","default":"igrf14"},"year":{"type":"number","title":"Year","default":2025},"baseline":{"type":"number","title":"Baseline","default":2000},"altitude_km":{"type":"number","maximum":1000.0,"minimum":0.0,"title":"Altitude Km","default":0},"component":{"type":"string","enum":["F","H","X","Y","Z","D","I"],"title":"Component","default":"F"},"mode":{"type":"string","enum":["strength","change","percent","annualized","sv"],"title":"Mode","default":"strength"},"threshold":{"type":"number","maximum":80000.0,"minimum":1000.0,"title":"Threshold","default":26000},"resolution":{"type":"number","enum":[0.25,0.5,1.0],"title":"Resolution","default":0.25}},"additionalProperties":false,"type":"object","title":"ProductRequest"},"SelectedPlace":{"properties":{"place_id":{"type":"integer","maximum":4.611686018427388e+18,"minimum":1.0,"title":"Place Id"}},"type":"object","required":["place_id"],"title":"SelectedPlace"},"ThemeMapRequest":{"properties":{"theme":{"anyOf":[{"type":"string","enum":["wildfires","heat","wind","air_quality"]},{"type":"null"}],"title":"Theme"},"bbox":{"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}],"type":"array","maxItems":4,"minItems":4,"title":"Bbox"},"projection":{"type":"string","enum":["EPSG:3857","EPSG:3413","EPSG:3031"],"title":"Projection","default":"EPSG:3857"},"extent":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"},{"type":"number"}],"type":"array","maxItems":4,"minItems":4},{"type":"null"}],"title":"Extent"},"place":{"$ref":"#/components/schemas/PlaceInput"},"layers":{"items":{"$ref":"#/components/schemas/LayerInput"},"type":"array","maxItems":8,"minItems":1,"title":"Layers"},"live_path":{"type":"string","maxLength":4000,"minLength":1,"title":"Live Path"},"archive_path":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Archive Path"},"title_id":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Title Id"},"custom_title":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Custom Title"},"client_request_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Client Request Id"}},"type":"object","required":["bbox","layers","live_path"],"title":"ThemeMapRequest"},"TokenInput":{"properties":{"token":{"type":"string","maxLength":43,"minLength":43,"pattern":"^[A-Za-z0-9_-]+$","title":"Token"}},"additionalProperties":false,"type":"object","required":["token"],"title":"TokenInput"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WithdrawalInput":{"properties":{"name":{"type":"string","maxLength":160,"minLength":1,"title":"Name"},"email":{"type":"string","maxLength":254,"title":"Email"},"reference":{"type":"string","maxLength":120,"minLength":1,"title":"Reference"}},"additionalProperties":false,"type":"object","required":["name","email","reference"],"title":"WithdrawalInput"},"AgentError":{"type":"object","description":"An error: ok is false and error says what to do next.","properties":{"ok":{"type":"boolean","description":"Always false for an error."},"tool":{"type":["string","null"],"description":"The tool named in the request path, if any."},"error":{"type":"object","description":"Present when ok is false.","properties":{"code":{"type":"string","enum":["invalid_input","invalid_place","invalid_key","plan_required","scope_required","suspended","no_coverage","not_retained","outside_snapshot","frame_too_far","not_available","ambiguous_place","too_large","licence_pending","quota_exceeded","internal","busy","disabled","timeout"],"description":"Public error code; HTTP status follows from it."},"reason":{"type":"string","description":"Internal reason, more specific than code."},"message":{"type":"string","description":"What went wrong."},"hint":{"type":"string","description":"What to do next."},"next":{"type":"object","description":"A call that is likely to help.","properties":{"tool":{"type":"string","description":"Tool to call."},"args":{"type":"object","description":"Its arguments."}},"additionalProperties":false},"retry_after":{"type":"integer","description":"Seconds to wait before retrying."},"candidates":{"type":"array","items":{"type":"object","description":"One candidate place with its place_id."},"description":"Candidates of an ambiguous place name."},"limit":{"type":"integer","description":"The limit that was reached."},"gap":{"type":"object","description":"no_data for a time between the archive and the current forecast: archive_end (date), forecast_start, and snapshot_version of a retained earlier forecast that still holds the time, if any."}},"required":["code","reason","message","hint"]},"usage":{"type":"object","description":"This call's cost and today's use against the plan.","properties":{"units":{"type":"integer","description":"Units this call cost."},"units_today":{"type":"integer","description":"Units used today (UTC) on this account."},"units_limit":{"type":"integer","description":"Daily unit quota."},"cold_loads_today":{"type":"integer","description":"Archive cold loads used today."},"cold_loads_limit":{"type":"integer","description":"Daily cold-load quota."},"cards_today":{"type":"integer","description":"Map cards made today."},"cards_limit":{"type":"integer","description":"Daily map-card quota."}}}},"required":["ok","error"],"additionalProperties":false}},"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"wil_<43 characters>","description":"A personal API key from the account page (Plus or Pro), sent as Authorization: Bearer wil_…; never in the URL."}},"headers":{"X-Atlas-Units-Limit":{"description":"Daily unit quota of the key's plan (omitted without a key of an active plan).","schema":{"type":"integer"}},"X-Atlas-Units-Remaining":{"description":"Units left today (UTC).","schema":{"type":"integer"}},"X-Atlas-Units-Reset":{"description":"Seconds until the daily quota resets at 00:00 UTC.","schema":{"type":"integer"}},"X-Atlas-Cost":{"description":"Units this call cost (0 for errors before the call ran).","schema":{"type":"integer"}},"X-Atlas-Burst-Limit":{"description":"Calls allowed per minute on this plan.","schema":{"type":"integer"}},"X-Atlas-Burst-Remaining":{"description":"Calls left in the current minute.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}},"WWW-Authenticate":{"description":"Bearer: the request needs an API key.","schema":{"type":"string"}}}},"servers":[{"url":"https://worldinlayers.com","description":"Production"}],"security":[{}],"tags":[{"name":"agent","description":"The Atlas API for members: cited data from the World in Layers atlas with a personal key. The same tools are served over MCP at POST /mcp (not described here). Guide: https://worldinlayers.com/developers"}]}