Search places with mappu
SkillWeb & browsingUse when the user asks about a specific place — restaurant, cafe, shop, business, landmark — or when context implies a location-based lookup ("where is X", "find Y", "X in Z", "X near A"). Calls the mappu CLI to search Apple Maps and returns local results with addresses, websites, preview images, and a map snapshot.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Search places with mappu skill
What this skill tells your AI
The instructions your AI receives, as published by xenodium/emacs-skills in skills/mappu/SKILL.md and read by ahel’s review.
When the user asks about a specific place or implies a location-based query, use the mappu CLI to search Apple Maps and present the results.
Examples of triggering contexts:
- "where can I get good ramen?"
- "is Roti King open?"
- "find sushi places in Soho"
- "what cafes are near St James's Park?"
- "any good Malaysian food around Chinatown?"
Locating context (always set --near)
mappu requires a --near value. Determine it like this:
- If the user mentioned a location ("in Soho", "near Charing Cross", "around Tokyo"), use that.
- If recent conversation context establishes a location (e.g., they have been talking about restaurants in London), use that.
- Otherwise, ask the user "Near where?" before running
mappu. Do not guess silently and do not fall back to a default city.
How to invoke
Run via the Bash tool. Always include --preview --map for richer output:
mappu --preview --map --near "Soho London" "roti king"
Flags:
--near "<location>"— required, set every call.--limit <N>— max results; mappu's default is 10.--radius <KM>— search radius in kilometers.--preview— include website preview images per result (use by default).--map— include a map snapshot with numbered pins (use by default).
Output schema
mappu prints JSON to stdout:
{
"map": "/path/to/map.png",
"results": [
{
"name": "Roti King",
"address": "6 Artillery Lane, London, England, E1 7LS, United Kingdom",
"neighborhood": "City of London",
"category": "Restaurant",
"url": "https://rotiking.com/location/spitalfields",
"mapsUrl": "https://maps.apple.com/?ll=51.5183405,-0.0790983&q=Roti%20King",
"image": "/path/to/preview.png",
"phone": "+44 20 1234 5678",
"countryCode": "GB",
"timeZone": "Europe/London",
"coordinate": { "lat": 51.5183405, "lng": -0.0790983 }
}
]
}
On failure, mappu prints {"error": "..."} and exits non-zero.
Render as markdown
For successful responses, output in this order: top-level map (if present), then each result as image + name link + category + address. Pin numbers on the map match the order of results[] (1-based).


[Roti King](https://rotiking.com/location/spitalfields)
Restaurant
6 Artillery Lane, London, England, E1 7LS, United Kingdom

[Roti King](https://rotiking.com/location/waterloo)
Restaurant
97 Lower Marsh, London, England, SE1 7AB, United Kingdom
Rules
- Always set
--near; ask the user "Near where?" if it is not obvious from the request or recent context. - Always include
--preview --mapunless the user explicitly asks for fast / text-only results. - Use the result's
urlas the link target. Fall back tomapsUrlifurlis missing. - Omit the image line for results without an
imagefield rather than fabricating one. - Do not invent ratings, opening hours, prices, or any fields not present in the JSON.
- If
mappureturns{"error": "..."}, surface that error to the user and stop. - Requires the
mappubinary on$PATH. If invocation fails with "command not found", tell the user to install it (e.g. copy the release binary to/usr/local/bin/).
Signals
- GitHub stars
- 135
- Forks
- 17
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
mappu- Source
- github.com/xenodium/emacs-skills