Seventy agencies, one chain: every REST operation has an MCP tool, and every tool serves one of ten common government processes — apply, report, request records, schedule, register, dispute, pay, look up. This is the whole agent-native surface the city could have, rendered from design-first artifacts.
The developer and the agent move through the same three layers. An operation is one API call; an MCP tool makes it agent-callable; an Agent Skill orchestrates tools across agencies to finish a real citizen task.
The reference API is example data at stable URLs, served straight off GitHub Pages — genuinely callable (reads only; writes are documented, not executed). The same data backs an installable MCP server.
One click into any MCP client via install.apicommons.org, or run it directly. Design-first: reads return example data; write workflows are described, not executed.
npx -y @api-common/nyc-mcp
Tools: list_agencies · get_agency · search_city_data · look_up_place · find_agency_for_task. Plus the 7 prompts and the nyc:// resources.
The 752 operations collapse into ten things residents actually do. Each is an Agent Skill that resolves the right agency and drives its tools. Click a process to filter the agencies below.
Whole-task entry points that span agencies.
Shared context, anchored on the nyc-commons geography spine.
A single outcome rarely lives in one agency. An Arazzo workflow chains the per-agency operations into one machine-readable journey — the connective tissue for automating approval management across agencies, as an open standard instead of another siloed portal.
The ~40-permit journey to build one affordable project — 20 steps across 12 agencies, keyed on the parcel's BBL (the nyc-commons spine), gated on project shape (rezoning · City-owned · landmark · conversion).
geocode (DCP) → parcel (DOF) → ULURP (DCP) → environmental Notice to Proceed (MOER)
bond + subsidy (HDC) → HPD project
design (PDC) · landmark (LPC) · stormwater + asbestos (DEP) · building (DOB) · fire alarm (FDNY) · street work (DOT) · tree (DPR)
Certificate of Occupancy (DOB) → Housing Connect lottery (HPD)
NYC Local Law 30 requires services in ten citywide languages. An OpenAPI Overlay localizes the interface — titles, operation summaries, tool descriptions — from one base contract, never the data: paths, operationIds, schema fields, and every returned record stay in one canonical shape. And because MCP tools derive 1:1 from the operations, the same overlay yields a localized MCP server. Worked example: the HPD Housing Connect lottery.
one hpd/openapi/hpd.yaml
one thin overlay: 1.0.0 per language — JSONPath update actions on summary/title only
localized OpenAPI and MCP — identifiers & data untouched