{
  "markdown": "# @pipeworx/wi-dmv\n\nWisconsin DMV (WisDOT) customer service centers, with the services each individual counter\nactually performs. Keyless.\n\nPart of [Pipeworx](https://pipeworx.io) — an MCP gateway connecting AI agents to 1476+ live data sources.\n\n## Why Wisconsin gets its own pack\n\nThis came out of splitting a single multiplexed `us-dmv` tool into one pack per state agency.\nWisconsin's grain is a **per-station capability matrix** — does this counter issue commercial\nplates, give the written knowledge test in a language other than English, take cash — which has\nnothing in common with California's ZIP-level registration snapshot or New York's record-level\nfile. A union schema across states leaves most arguments ignored on every call, so Wisconsin's\narguments are Wisconsin's.\n\n## Tools\n\n| Tool | What it returns |\n|---|---|\n| `wi_dmv_offices` | Address, county, per-day hours, coordinates, wheelchair access, accepted payment methods, and the 13 service capabilities each center publishes |\n\nFilters: `city`, `county`, `zip` (prefix match), `name`, `service` (matches both the service\nlabels and the payment methods), `limit`.\n\n## The distinctive field\n\n`DRV_KNLG_TEST_VAR_LANG_FL` — surfaced as the service label **\"knowledge test in multiple\nlanguages\"** — records, per counter, whether the written knowledge test is offered in languages\nbeyond English. No other state DMV layer publishes this. It is what makes \"which Wisconsin DMV\ngives the written test in Spanish\" answerable at all: 79 of the 88 centers do.\n\n## Auth\n\nNone. `dotmaps.wi.gov` is a public WisDOT ArcGIS host.\n\n## Gotchas worth knowing\n\n- **WisDOT's ArcGIS host is intermittently slow.** It overran a 12s budget on a production call\n  and answered in ~1s on the retry; during this pack's smoke test one call took 15.3s (a stall\n  plus a successful retry) while the identical call either side of it took 93ms. Queries run on\n  the shared helper's 15s budget with one retry, and a genuine stall returns\n  `{ error, hint }` telling the caller to retry rather than an empty office list that reads\n  as \"Wisconsin has no DMV offices\".\n- **The statewide count moves.** WisDOT opens and closes rural counters — the layer held 92\n  centers in mid-2026 and 88 as of 2026-07-30. Nothing in this pack hardcodes the number;\n  responses carry `statewide_office_count` from the live layer, and the not-found hint quotes\n  the live figure.\n- **`LAT`/`LON` are real attribute columns** on this layer, unusually for a state ArcGIS\n  service, so no `outSR=4326` geometry round-trip is needed.\n- **There are no per-station phone numbers.** WisDOT routes every center through one statewide\n  number, so `phone` is null by design rather than by omission.\n- **Hours list open days only.** `STN_HRS_*` carries the literal `CLOSED` for the rest; a day\n  absent from `hours` is a closed day. Many rural counters open one or two days a week.\n- **`services_excluded` is the interesting negative space.** WisDOT's `STN_EXLD_PRDT_DSPL` is\n  free text naming transactions that specific center sends elsewhere (salvage titles,\n  personalised plates, commercial over 10,000 lb) — it is returned verbatim, whitespace-collapsed.\n- **`service` matches payment methods too**, so `service: \"cash\"` is a valid filter alongside\n  `service: \"commercial vehicle plates\"`.\n\n## Data source\n\n- [WisDOT ArcGIS `agohub/DMV_SERVICE_CENTER/MapServer/0`](https://dotmaps.wi.gov/arcgis/rest/services/agohub/DMV_SERVICE_CENTER/MapServer/0)\n  — verified live 2026-07-30\n\n## Quick Start\n\nAdd to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"wi-dmv\": {\n      \"url\": \"https://gateway.pipeworx.io/wi-dmv/mcp\"\n    }\n  }\n}\n```\n\n### What this endpoint actually serves\n\n`tools/list` at `https://gateway.pipeworx.io/wi-dmv/mcp` returns the tools in the table\nabove **plus the shared Pipeworx meta-tools** — `ask_pipeworx`,\n`discover_tools`, `search_within`, `remember`/`recall` and the rest of the\ngateway-wide set. So the tool count you see is larger than this table: a\nsingle-pack endpoint currently lists roughly 30 shared tools alongside the\npack's own. The connection's `initialize` response states its exact scope, and\nis the authoritative answer for a given day.\n\nThis is deliberate, not multiplexing by accident. The meta-tools are what let a\nscoped connection answer a question this pack does not cover — via\n`ask_pipeworx`, which routes across the whole catalog — without you adding a\nsecond MCP server. There is currently no way to mount a pack endpoint without\nthem; if the extra schemas cost you more context than the routing is worth,\nconnect to the full gateway once rather than to several pack endpoints.\n\nOr connect to the full Pipeworx gateway to get every pack's tools listed\ndirectly, instead of just this one's:\n\n```json\n{\n  \"mcpServers\": {\n    \"pipeworx\": {\n      \"url\": \"https://gateway.pipeworx.io/mcp\"\n    }\n  }\n}\n```\n\nBoth URLs reach the same gateway and the same 1476+ data sources. The\nonly difference is which pack's tools are listed **directly**; `ask_pipeworx`\nreaches all of them from either one.\n\n## Using with ask_pipeworx\n\nInstead of calling tools directly, you can ask questions in plain English —\nthis works on the pack endpoint above as well as on the full gateway:\n\n```\nask_pipeworx({ question: \"your question about Wi Dmv data\" })\n```\n\nThe gateway picks the right tool and fills the arguments automatically.\n\n## More\n\n- [Docs and guides](https://pipeworx.io/docs)\n- [pipeworx.io](https://pipeworx.io)\n\n## License\n\nMIT\n",
  "bytes": 5520,
  "sha": "1bf23ff9963daf4349d6ba2434e9e4f3a1fda0bbcec57398c8afe84aeae0cc2e",
  "repo_slug": "pipeworx-io/mcp-wi-dmv",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_pipeworx_io_wi_dmv_f3699a04/readme"
}