Skills are what an agent knows, tools are what it does
Note, updated 2 August 2026. The MCP server exposed sixteen tools when this was written. It exposes 32 today. The argument is unchanged and the skills named below are all still shipped. See /docs/mcp for the current tool list.
npx skills add Mapmapai/mapmap-agent-skills installs ten Markdown knowledge modules that teach a coding agent how to build with MapMap, from MCP wiring, truck and ADR routing and @mapmap/maps integration to fleet optimisation, offline territories, Mapbox and Google Maps migration, machine payments and running the self-host distro. They are the counterpart to our MCP server, not a replacement for it. The MCP server gives an agent sixteen live tools it can call. The skills give it the knowledge to call them correctly. An agent holding a route tool and nothing else can reach the endpoint and still not know that a tunnel_code belongs on the request, or that truck parameters are rejected on any profile except truck.
Why does a tool without knowledge still produce wrong code?
Because a tool schema tells an agent what it may send, never what it should send. That gap is where the bugs live.
Take the route tool. Its schema lists the profile, the locations and the costing options. Every field is documented and typed. Nothing in it says that a 44-tonne tanker carrying petrol needs a tunnel_code, and nothing warns that leaving the field off returns a perfectly valid 200 with a route through a tunnel the vehicle may not legally enter. The call succeeds. The schema was obeyed. The code is still wrong, and you find out at the tunnel mouth.
mapmap-truck-adr-routing exists to close exactly that gap. It carries the rules that a schema cannot express:
- Truck parameters require the
truckprofile. Sendingheight,weight,hazmatortunnel_codeondrivingorbicyclereturns400 InvalidValue. - Bare coordinate pairs are
lon,lat, following the OSRM convention. JSON bodies use named{"lat": …, "lon": …}fields and never positional ones. - Slashed tunnel codes must be URL-encoded.
B/DbecomesB%2FD. - Contradicting your own
costing_options.truckfrom theadrobject is rejected with400 costing-conflict, listing the offending fields. Set truck facts in one place.
None of that is discoverable from a tool definition. All of it is the difference between code that works first time and an afternoon of reading error bodies.
What do the skills teach?
Each one covers a surface of the platform that agents routinely get wrong on the first attempt: MCP wiring, truck and ADR routing, web maps, map design, Mapbox migration and self-host operations. Ten ship today, the set grows as the platform does, and the agent skills reference is authoritative on the current list.
| Skill | Teaches | Reach for it when |
|---|---|---|
mapmap-mcp-setup | Connecting any MCP client to MapMap, the sixteen-tool reference, the {lat, lon} and metres and seconds conventions | wiring an agent to the server |
mapmap-truck-adr-routing | Truck routing with dimensional limits and ADR tunnel codes, worst-case semantics, the tunnel-restriction table | routing commercial or dangerous-goods vehicles |
mapmap-web-maps-integration | @mapmap/maps for maps, routing and turn-by-turn guidance | building a web map or navigation UI |
mapmap-map-design | Brand to palette method across the 19 palette slots, label-legibility rules, the publish loop | making the map look like your product |
mapmap-migrate-from-mapbox | Endpoint mapping, pk.… tokens becoming snk_ keys, the Mapbox GL JS to MapLibre GL JS swap | moving off Mapbox |
mapmap-self-host-ops | The Docker Compose distro, operator keys, the env switches, production notes | standing up the stack yourself |
The pattern repeats in each one. mapmap-web-maps-integration leads with the two things that render a map silently blank: the container needs an explicit height, and you have to import MapLibre's stylesheet. mapmap-self-host-ops explains why the gateway sits in Created on first boot while tiles build, which otherwise reads as a broken install. mapmap-migrate-from-mapbox carries an honest list of what we do not offer, including server-side raster images and global POI search, because an agent that discovers a gap halfway through a migration has already cost you the day.
How do you install them?
One command, and it works across Claude Code, Cursor, Codex, VS Code with Copilot and other agents that read SKILL.md modules.
npx skills add Mapmapai/mapmap-agent-skills # all ten
npx skills add Mapmapai/mapmap-agent-skills --list # see what's inside
npx skills add Mapmapai/mapmap-agent-skills --skill mapmap-truck-adr-routing
The repository is Mapmapai/mapmap-agent-skills and it is MIT licensed. For Claude Code you can skip the installer and symlink the directory into a project by hand:
git clone https://github.com/Mapmapai/mapmap-agent-skills.git
cd your-project
mkdir -p .claude && ln -s ../mapmap-agent-skills/skills .claude/skills
That is the whole install. There is no account step, because there is nothing to authenticate against.
What happens when both are installed?
The agent writes the correct call before it makes any call at all. Ask it to "add a hazmat truck route to my Next.js app" with both layers present and the sequence runs like this:
mapmap-web-maps-integrationis in context, so the generated map component has an explicit container height and the MapLibre stylesheet imported.mapmap-truck-adr-routingis in context, so the request goes out on thetruckprofile withtunnel_code: "D"andhazmat: trueset once, in one place.- The MCP
routetool executes it against a live deployment.
Without step two, step three still runs. It returns a route. The route goes through the tunnel.
The economics matter here too, and the skills state them so the agent can reason about cost. Truck and ADR routing is the premium class at 1p per call, and one premium call draws 20 of your included calls, so the free tier's 50,000 monthly calls is 2,500 all-premium calls. An agent that knows this plans a demo differently from one that does not.
What skills do not do
They are static Markdown, and every limitation follows from that.
- They carry no credentials and make no network calls. Installing skills does not get you a key. That is still
POST /v1/keys, and it still returns a provisionalsnk_key good for 1,000 calls over 72 hours. - They are a snapshot. A skill is pinned at install time and goes stale as the platform moves. Re-run
npx skills addto refresh. We would rather say that plainly than pretend a text file stays current on its own. - They do not enforce anything. An agent can read the tunnel-code table and ignore it. Skills raise the floor on first-try correctness. They are not a validator, and the gateway's
400is still the thing that stops a bad request. - They only help agents that read
SKILL.mdmodules. If yours does not, the skills are just Markdown you can read yourself, which is a fair use of them but not the point. - The hosted MCP server they teach against is open for evaluation, not production. No key to connect, fair use applies.
route,matrix,check_adr_tunnel,list_style_layersandget_stylework today.geocodeandoptimise_routesanswer with tool errors until their upstreams are enabled on the hosted deployment, and style publishes are metered and may be unavailable.mapmap-mcp-setupsays all of this too, because a skill that oversells the server it configures is worse than no skill.
Try it
Install the skills, connect the MCP server and ask your agent for a hazmat truck route. If it writes a valid tunnel_code request without you mentioning ADR, the knowledge layer is doing its job.
- Agent skills docs for the current list and what each module covers
- MCP server for the sixteen tools and per-client setup
- Our MCP server, sixteen tools deep for what the tools actually do
- Maps for AI agents, with no human in the loop for the discovery, keys and payment surface underneath all of this
Routing derives from OpenStreetMap, so credit "© OpenStreetMap contributors" when you render it.
