Every public map layer, live on one canvas. Hover to preview, pin to combine, draw an area to see what covers it — and leave with a working map, not a zip file.
One JSON per catalog drives this whole site — generated by build_catalog.py; switch catalogs with ?catalog=md / ?catalog=ca.
## live count curl "https://mdgeodata.md.gov/imap/rest/services/Hydrology/MD_Floodplain/FeatureServer/0/query?where=1%3D1&returnCountOnly=true&f=json" ## geojson slice (note: f=geojson lowercases field names; always outSR=4326) curl "…/FeatureServer/0/query?where=1%3D1&outFields=*&outSR=4326&f=geojson&resultRecordCount=100"
This catalog is AI-readable: point an agent at catalog-md.json; each record carries endpoints + shelf + tags. DCAT/OGC Records feeds are the production path (see RECIPE §3.3).