docs/nodes/location-command.md
location.get is a node command (via node.invoke).OS permissions are multi-level. We can expose a selector in-app, but the OS still decides the actual grant.
Selector in UI drives our requested mode; actual grant lives in OS settings.
Per node device:
location.enabledMode: off | whileUsinglocation.preciseEnabled: boolUI behavior:
whileUsing requests foreground permission.Optional. macOS node reports location via the permissions map; iOS/Android may omit it.
location.getCalled via node.invoke.
Params (suggested):
{
"timeoutMs": 10000,
"maxAgeMs": 15000,
"desiredAccuracy": "coarse|balanced|precise"
}
Response payload:
{
"lat": 48.20849,
"lon": 16.37208,
"accuracyMeters": 12.5,
"altitudeMeters": 182.0,
"speedMps": 0.0,
"headingDeg": 270.0,
"timestamp": "2026-01-03T12:34:56.000Z",
"isPrecise": true,
"source": "gps|wifi|cell|unknown"
}
Errors (stable codes):
LOCATION_DISABLED: selector is off.LOCATION_PERMISSION_REQUIRED: permission missing for requested mode.LOCATION_BACKGROUND_UNAVAILABLE: app is backgrounded but only While Using allowed.LOCATION_TIMEOUT: no fix in time.LOCATION_UNAVAILABLE: system failure / no providers.location.get while backgrounded.nodes tool adds location_get action (node required).openclaw nodes location get --node <id>.