@pipeworx/us-dmv
Official@pipeworx/us-dmv
US state DMV data: vehicle and electric-vehicle registrations, DMV office locators with per-office services, live field-office wait times, and California form and insurer lookups. Keyless.
Why coverage is state-by-state
This pack came out of a survey of all 50 states plus DC (2026-07-29). Roughly 30 states
publish nothing machine-readable about motor vehicles — annual PDFs at best. So each tool
takes a state argument backed by a short, explicit list, and an unsupported state returns
{ found: false, reason: 'state_unsupported', hint, supported_states } rather than an
empty result that reads like a data bug.
Grain differs per state and is not normalisable away, so every response reports grain,
as_of, source, and — where a row list can be cut off — truncated.
Tools
Tool | States | What it returns |
| CA, DE, MD, NY, PA, TX, WA | Registered vehicle counts by county, ZIP, fuel, make, model year or class |
| CA, CT, DE, HI, MD, NY, PA, WA | Battery-electric and plug-in hybrid counts, plus EV share where a denominator exists |
| NC, OR | Live average/max wait, customers queued, open-or-closed per field office |
| CA, DC, IA, IN, MO, NC, NJ, NY, TN, WI | Addresses, hours, coordinates, and which services each office performs |
| CA | Official DMV form name, REG/DL number and download page |
| CA | Insurer NAIC codes by company name |
Auth
None. Every upstream is a public state endpoint. _apiKey is accepted on the Socrata-backed
tools and passed as X-App-Token; the public rate limits are ample without it.
Per-state gotchas worth knowing
These are all live-verified behaviours, not guesses:
WA registrations count transactions, not fleet size.
hmzg-s6q4publishes registration transactions per month (King County runs ~160k/month), so it cannot answer "how many vehicles are registered here". The tool scopes to one fiscal year or month and says so ingrain. For a Washington fleet count of plug-in vehicles usedmv_ev_adoption, which reads the VIN-level EV population file instead.NY mixes vehicle types.
w4pv-hbktholds trailers, boats and snowmobiles alongside road vehicles; the tool defaults torecord_type=VEH. County names are unabbreviated, so Brooklyn isKINGS.CA snapshots are one resource per year, 2019–2026, and the rows carry the prior December 31 as their as-of date. Grouping by ZIP surfaces a literal
OOSbucket (out-of-state registrants) that outranks every real ZIP — filter it out for a ZIP ranking.CA "OTHER/UNK" make absorbs small-count suppression, so it can outrank real makes.
MD spells one county two ways:
PRINCE GEORGE'Sin the registration dataset,PRINCE GEORGESin the EV dataset. MD also reports the registrant's county of residence, so a few out-of-state counties appear with small counts.PA quarters are columns, not rows (
TOTAL_EV_Q1..Q4); the tool picks the latest quarter that actually carries data.TOTAL_EVis BEV + PHEV — conventional hybrids sit inHEV.NC and OR waits read zero and closed outside business hours. That is the agency feed reporting an idle queue, not a missing value, so the response flags it in
noterather than erroring. NC's feed is a unit tree (root, districts, then offices); the pack keeps leaf units.OR has no JSON endpoint — the office array is parsed out of the server-rendered page. Upstream also ships per-office
ipAddressand machine fields, which are dropped here.TX was last refreshed in 2023 and is statewide-annual only. CT was last refreshed in February 2025. Both report this in
noterather than pretending to be current.NJ's
dmv_officesentries are inspection and emission-repair facilities, not licensing offices, and the upstreamcountycolumn disagrees withcityon some rows.DC coordinates need reprojection — the layer stores State Plane, so the pack requests
outSR=4326geometry rather than readingXCOORD/YCOORD.CA form search is the website's own relevance ranking, so a query like "title transfer" can put a vessel-title form first.
Maryland's WAF is picky about SoQL query shape.
opendata.maryland.govanswers both a wildcardlike '%x%'clause and a two-conditionwherewith a Cloudflare interstitial (403 "Just a moment...") instead of data — reproducibly, and only on that domain: NY, WA and CT accept the identical clauses. It only reproduces from a deployed Worker, never from a laptop, so local testing will not catch it. All four Maryland paths therefore send the one shape that gets through — a singleyear_monthcondition — and narrow to a county or ZIP in code, which is cheap because one month is a few hundred rows.WisDOT's ArcGIS server is intermittently slow — it overran a 12s budget on the first production call and answered in ~1s on retry. Every tool retries once and then returns
{ error, hint }telling the caller to retry, rather than reporting an upstream stall as missing data.
Data sources
California — data.ca.gov Vehicle Fuel Type Count by Zip Code (CKAN
datastore_search_sql), plus thedmv.ca.govWP REST endpoints for field offices, forms and the NAIC insurer lookupNew York — data.ny.gov Socrata
w4pv-hbkt(registrations),9upz-c7xg(offices)Washington — data.wa.gov Socrata
f6w7-q2d2(EV population),hmzg-s6q4(registration transactions)Maryland — opendata.maryland.gov Socrata
db8v-9ewn,qtcv-n3tc,tugr-unu9Pennsylvania — PennDOT ArcGIS EV registrations by county
Delaware — data.delaware.gov Socrata
ity3-3688Hawaii — opendata.hawaii.gov DBEDT cumulative hybrid/EV series
Texas — data.texas.gov Socrata
cbmj-zejeConnecticut — data.ct.gov Socrata
y7ky-5wczNorth Carolina — NCDOT Instant Wait Time service
Oregon — Oregon DMV wait times
Missouri — data.mo.gov Socrata
835g-7keg· Wisconsin — WisDOT ArcGIS · Indiana — BMV branch map · Tennessee — TN SAFETY ArcGIS · DC — opendata.dc.gov · Iowa — Iowa DOT ArcGIS · New Jersey — data.nj.gov Socratat6tk-mr48
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
{
"mcpServers": {
"us-dmv": {
"url": "https://gateway.pipeworx.io/us-dmv/mcp"
}
}
}Or connect to the full Pipeworx gateway for access to all 1370+ data sources:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}Using with ask_pipeworx
Instead of calling tools directly, you can ask questions in plain English:
ask_pipeworx({ question: "your question about US State DMV data" })The gateway picks the right tool and fills the arguments automatically.
More
License
MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pipeworx-io/mcp-us-dmv'
If you have feedback or need assistance with the MCP directory API, please join our Discord server