intermediate
mds
cities
compliance

MDS Export for Cities

Generate MDS-aligned safety event feeds for city compliance — helmet compliance, sidewalk events, and parking issues by jurisdiction

Levy Fleets TeamMay 18, 20266 min read

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

  1. Open Dashboard > Safety > MDS export.
  2. Set the date range. Most cities want monthly windows.
  3. 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
  4. Pick the event types to include. Default is all (helmet, parking, sidewalk).
  5. Pick the format:
    • CSV — one row per event, easiest for humans
    • MDS JSON — strict MDS schema, what cities consume programmatically
  6. 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)

FieldTypeDescription
event_idUUIDStable ID; lets cities dedup across exports
event_typestringhelmet_check, sidewalk_entry, sidewalk_exit, parking_pose, illegal_pose
occurred_atISO 8601 timestampWhen the event happened
lat, lngfloatWhere the event happened
vehicle_uuidUUIDThe vehicle, anonymized to a stable hash if your city contract requires it
vehicle_typestringscooter, bike, moped, e-bike
operator_idUUIDYour subaccount ID
confidencestringhigh, medium, low
sourcestringphone, drover, luna, captur, gemini

Helmet event extras

  • helmet_statuspass, fail, ambiguous, bypassed, inference_failed
  • attempt_count — How many selfies the rider took

Sidewalk event extras

  • enforcement_actionwarn, speed_reduce, throttle_cut, none
  • geofence_allowlist_hit — boolean, did this event land inside an allow-list polygon

Parking event extras

  • parking_statuspass, fail, retake, appealed, approved_after_appeal, rejected_after_appeal
  • upright, in_zone, blocking_sidewalk — the classifier's structured judgement
  • fee_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.