MDS Export for Cities
If you bid on city permits, sooner or later a compliance officer will ask for a safety-event feed. Levy Vision ships an MDS-aligned export that gives them exactly that — sidewalk events, helmet compliance rates, and parking violation counts, scoped to a jurisdiction polygon and a date range. This article walks through how to generate one and what's in it.
Who this is for
- Operators bidding on a new city permit who need a sample feed for the RFP response
- Operators with an active permit that includes a safety reporting requirement
- City compliance officers consuming Levy Fleets feeds directly via API
If you're not under any of those conditions, you don't need this feature — skip to other articles in this category.
What MDS is
MDS (Mobility Data Specification) is the open standard most US cities use to consume operator data. Levy Fleets has a full MDS Provider API for trips and status; the safety export covered here is an additional endpoint that complements it with vision-derived events.
Cities that have signed onto MDS include Chicago, San Francisco, Los Angeles, Austin, Atlanta, Seattle, Paris, London, Berlin, and dozens more. If your city accepts MDS feeds, it accepts this format.
Generating an export
- Open Dashboard > Safety > MDS export.
- Set the date range. Most cities want monthly windows.
- Pick the jurisdiction polygon:
- Use saved polygon — pick from polygons you've previously uploaded (city boundaries, custom service areas)
- Draw on map — outline the polygon by hand, useful for one-off reports
- Paste GeoJSON — for cities that send you a specific polygon in their RFP
- Pick the event types to include. Default is all (helmet, parking, sidewalk).
- Pick the format:
- CSV — one row per event, easiest for humans
- MDS JSON — strict MDS schema, what cities consume programmatically
- Click Generate.
The export streams to a download. For large date ranges (more than 30 days at high volume), the export is queued and you'll get an email with the download link when ready.
What's in the export
Each event row includes the fields that matter for compliance, with rider PII stripped.
Common columns (all event types)
| Field | Type | Description |
|---|---|---|
event_id | UUID | Stable ID; lets cities dedup across exports |
event_type | string | helmet_check, sidewalk_entry, sidewalk_exit, parking_pose, illegal_pose |
occurred_at | ISO 8601 timestamp | When the event happened |
lat, lng | float | Where the event happened |
vehicle_uuid | UUID | The vehicle, anonymized to a stable hash if your city contract requires it |
vehicle_type | string | scooter, bike, moped, e-bike |
operator_id | UUID | Your subaccount ID |
confidence | string | high, medium, low |
source | string | phone, drover, luna, captur, gemini |
Helmet event extras
helmet_status—pass,fail,ambiguous,bypassed,inference_failedattempt_count— How many selfies the rider took
Sidewalk event extras
enforcement_action—warn,speed_reduce,throttle_cut,nonegeofence_allowlist_hit— boolean, did this event land inside an allow-list polygon
Parking event extras
parking_status—pass,fail,retake,appealed,approved_after_appeal,rejected_after_appealupright,in_zone,blocking_sidewalk— the classifier's structured judgementfee_applied_cents— what the rider was charged
What's NOT in the export
- Rider identity — name, phone, email are never included
- Selfies or parking photos — image URLs are stripped
- Card or payment details — never included
- Subaccount internal labels — your own internal naming stays internal
If the city's contract explicitly requires PII (rare), contact support to set up a custom export with the appropriate data-processing agreement.
Direct API access for cities
Some cities want to pull the data programmatically rather than receive a manual report each month. The export endpoint is available at:
GET /api/dashboard/cv/exports/mds
?from=2026-04-01
&to=2026-04-30
&polygon_id=<uuid>
&format=mds-json
Authentication is via a long-lived API token issued to the city's account. Contact support to provision a city-side account with read-only access to your fleets' safety data. Tokens are scoped per-jurisdiction — a city can only pull data inside their own polygon.
Aggregated monthly reports
Some cities want totals, not row-level events. The export page also offers an Aggregated mode that returns:
- Total rides in the jurisdiction
- Helmet compliance rate (% of rides with
helmet_status=pass) - Sidewalk events per 100 rides
- Parking violation rate (% of rides with
parking_status=fail) - Hotspot list — top 20 lat/lng clusters with event counts
This is the format most operators send to cities monthly as a one-page PDF or summary email. The export page has a "Copy as Markdown" button that gives you a ready-to-paste version.
Tips
- Save your common polygons. Most operators end up with 2–4 standard jurisdictions; saving them avoids redrawing each time.
- Run a smaller date range first. If you're generating for a new city, do a single-day test first to confirm the format matches what they want.
- Pre-share the schema. If the city has never consumed your feed before, send them this article and the MDS Provider API reference as part of permit submission. It reduces back-and-forth.
Common questions
Does this include events from before I turned Levy Vision on?
No. Events only exist from the moment Levy Vision is enabled for your subaccount. Cities understand this — most ask for the most recent 30 or 90 days.
Is there a charge for the MDS export?
For most plans, no — it's included. Some large-fleet plans have an add-on charge for direct API access by city accounts. Check with your account manager if you're unsure.
What if my city doesn't use MDS?
The CSV export is a plain-text file with the same data. Send that. We support a couple of city-specific formats (Atlanta uses a slightly different schema, for example); if your city has a specific spec, contact support.