Render an annotated map image for multiple places with numbered markers and a legend.
Prerequisites
Python 3.10+
Internet access (Nominatim + OSM tile endpoints)
Optional environment variable:
OPENSTREET_MAP_HOST: Override only the openstreetmap.org host suffix in the default endpoints. Recommended form: openstreetmap.org. If http:// or https:// is provided, only the host part is used.
--points-file / --points-base64: points source (mutually exclusive, one required).
--output: save image to path. This is the default and recommended output mode.
--base64: include base64-encoded PNG in JSON stdout under image_base64. Use only when the caller cannot access output files directly.
At least one of --output or --base64 must be provided.
Recommended: Default to file output with --output.
Do not use --base64 unless file delivery is impossible, because base64 image payloads consume a large number of tokens.
image_base64: present only when --base64 is set. PNG image encoded as standard base64. Avoid this in normal flows because it significantly increases token usage.
Notes for OpenClaw integration
Expose these two CLI actions as callable tools in OpenClaw:
locate: maps to python tools/openstreet_skill.py locate ...
render: maps to python tools/openstreet_skill.py render ...
For render, default to --output file delivery instead of --base64 to keep responses small.
Return JSON stdout to the caller and treat non-zero exit code as failure.
Respect OSM usage policy by not sending high-frequency requests.