docs/channels/location.md
OpenClaw normalizes shared locations from chat channels into:
Currently supported:
m.location with geo_uri)Locations are rendered as friendly lines without brackets:
📍 48.858844, 2.294351 ±12m📍 48.858844, 2.294351 ±12m🛰 Live location: 48.858844, 2.294351 ±12mIf the channel includes a label, address, or caption/comment, it is preserved in the context payload and appears in the prompt as fenced untrusted JSON:
Location (untrusted metadata):
```json
{
"latitude": 48.858844,
"longitude": 2.294351,
"name": "Eiffel Tower",
"address": "Champ de Mars, Paris",
"caption": "Meet here"
}
```
When a location is present, these fields are added to ctx:
LocationLat (number)LocationLon (number)LocationAccuracy (number, meters; optional)LocationName (string; optional)LocationAddress (string; optional)LocationSource (pin | place | live)LocationIsLive (boolean)LocationCaption (string; optional)The prompt renderer treats LocationName, LocationAddress, and LocationCaption as untrusted metadata and serializes them through the same bounded JSON path used for other channel context.
LocationName/LocationAddress; live locations use live_period.locationMessage.comment and liveLocationMessage.caption populate LocationCaption.geo_uri is parsed as a pin location; altitude is ignored and LocationIsLive is always false.