User journeys and sample prompts

DRAFT. First pass, 2026-07-16. These are illustrative prompts to demonstrate what each BetaNYC MCP (and the general Socrata catalog) can do, plus “crosswalk” journeys that chain several together. Prompts are written for a person talking to an AI agent that has these MCPs connected — they are starting points, not guaranteed exact outputs. Always verify answers against the linked official source.

This is the one place that captures the broader user journey: how a New Yorker — a resident, a community board member, a journalist, a nonprofit — moves from a plain-language question to an answer grounded in the actual public record.

Two kinds of prompts live here:

  1. Basic prompts — one MCP at a time. Each shows what a single data source can answer on its own.
  2. Crosswalk journeys — several MCPs chained together to answer a question no single source can. This is where grounded agents get genuinely useful: the agent picks up a thread in one dataset and follows it into another.

Every journey is framed as a user story (“As a ___, I want to ___, so that ___“) so the value is legible before the prompt, not after.

For which source actually holds which data, see when-to-use-which-portal.md. For query syntax, see query-patterns.md.


# Source MCP Domain it answers
1 NYC 311 nyc-311-mcp Service requests, complaints, city-service calendar, status alerts
2 NYC Council nyc-council-mcp Bills, hearings, votes, committees, council members (Legistar)
3 NYC Checkbook nyc-checkbook-mcp City spending, contracts, budget, payroll, revenue (Comptroller)
4 NYC Council Budget nyc-budget-mcp Discretionary funding — Schedule C awards, Terms & Conditions, §254 capital
5 NYC City Record nyc-record-mcp Procurement notices — solicitations, awards, public hearings
6 NYC Charter, Laws & Rules nyc-charter-laws-rules Charter, Administrative Code, Rules of the City of New York (legal text)
7 NYS Open Legislation nys-openlegislation-mcp State bills, laws, members, committees, calendars, transcripts
8 NY Open Data (general) socrata Everything else the city or state publishes as a dataset

A note on grounding. Every prompt below is answerable because the agent is connected to a real source. Ask the same questions of an ungrounded chatbot and it will confidently guess — wrong bill numbers, invented dollar figures, stale council members. The whole point of this repo is that these answers come from the public record, not the model’s memory. When you demo, it’s worth pulling up the underlying source once to show the number is real.


Part 1 — Basic prompts (one MCP each)

1. NYC 311 — nyc-311-mcp

User story: As a resident, I want to see what my neighbors are actually complaining about, so that I can bring evidence — not anecdotes — to my community board.

Routing note (verified 2026-07-16): the nyc-311-mcp server covers the city-service calendar, status/emergency alerts, and individual/bulk service-request lookup by SR number — not aggregate roll-ups. For “top complaint types in a district over the last 30 days” or “all noise complaints grouped by day,” the agent should query the NYC Open Data 311 dataset (erm2-nwe9, “311 Service Requests from 2020 to Present”) via the Socrata MCP (source #8 below). Both are “311,” but aggregation lives in Open Data.

2. NYC Council — nyc-council-mcp

User story: As a community board member, I want to track legislation before the Council that affects my district, so that we can weigh in before it passes, not after.

3. NYC Checkbook — nyc-checkbook-mcp

User story: As a watchdog, I want to see where the city is actually spending money, so that I can hold agencies accountable to their budgets.

4. NYC Council Budget (discretionary funding) — nyc-budget-mcp

User story: As a nonprofit director, I want to know which council members fund organizations like ours, so that we can make a targeted case for discretionary support.

5. NYC City Record — nyc-record-mcp

User story: As a small-business owner or bidder, I want to catch city solicitations early, so that we have time to respond before the deadline.

6. NYC Charter, Laws & Rules — nyc-charter-laws-rules

User story: As an advocate, I want to cite the exact law, so that our testimony rests on the actual text of the code, not a paraphrase.

7. NYS Open Legislation — nys-openlegislation-mcp

User story: As a policy staffer, I want to see what Albany is doing on an issue, so that I can align city advocacy with state action.

8. NY Open Data (general catalog) — socrata

User story: As a curious New Yorker, I want to find whatever dataset exists on a topic, so that I can start from real numbers instead of guessing whether the data is even published.


Part 2 — Crosswalk journeys (chaining MCPs)

This is the payoff. A single dataset answers a single question; a grounded agent that can move between sources answers the questions people actually have — the ones that start in one dataset and end in another.

Crosswalk A — “From complaint to policy” 🧵

311 → Council → Charter/Laws

User story: As a community board member, I want to connect what residents complain about to what the Council is doing about it and what the law already says, so that our advocacy is grounded end to end.

“Start with the top three 311 complaint types in Manhattan Community District 1 this quarter. For the most common one, find any NYC Council legislation from the last year that addresses it, and pull the section of the Administrative Code the complaint category falls under. Give me a one-page brief tying the three together.”

Why it lands: the agent moves from lived experience (311) → the legislative response (Council) → the legal foundation (code). No single portal does that.

Crosswalk B — “Follow the discretionary dollar” 💵

Budget → Council → Checkbook

User story: As a funder or watchdog, I want to trace a discretionary award from the allocation to the sponsoring member to the actual spending, so that I can verify the money did what it was allocated to do.

“Find the largest NYC Council discretionary (Schedule C) award in Council District 1 in the most recent fiscal year. Tell me which council member sponsors that district, and then check NYC Checkbook for any city spending or contracts with that same organization. Flag any gaps between the allocation and what shows up in Checkbook.”

Why it lands: discretionary allocation (budget MCP), political accountability (Council member), and actual disbursement (Checkbook) are three separate systems. Chaining them is exactly the “follow the money” move journalists do by hand.

Crosswalk C — “The full contract lifecycle” 📄

City Record → Checkbook → Council

User story: As a procurement watchdog, I want to follow a city contract from the solicitation notice to the award to any Council oversight, so that I understand the whole lifecycle, not just one snapshot.

“Find a recently open solicitation in the City Record from the Department of Transportation. Then search NYC Checkbook for existing contracts with the same agency in that category to see what past awards looked like. Finally, check whether the Council has any recent hearings or legislation touching that agency’s contracting.”

Why it lands: procurement (City Record) → spending (Checkbook) → oversight (Council) is the accountability arc of a single dollar of city money.

Crosswalk D — “City and state on the same issue” 🏛️

NYS Open Legislation → Council → Open Data

User story: As a policy staffer, I want to line up what Albany and City Hall are each doing on one issue and back it with data, so that our coalition advocates at the right level of government.

“On the issue of e-bike and delivery-worker safety: search NYS Open Legislation for relevant state bills this session, search the NYC Council for related local legislation, and then find a NYC Open Data dataset (e.g., collisions or 311) that quantifies the problem. Summarize where the state and city each stand and what the data shows.”

Why it lands: most real civic issues are split across state and city jurisdiction. An agent that can query both legislatures and the data catalog resolves “whose job is this?” in one pass.

Crosswalk E — “Data-driven testimony” 🎤

Open Data → 311 → Budget

User story: As a resident preparing to testify, I want a tight, sourced case in fifteen minutes, so that I can walk into a hearing with real numbers instead of a hunch.

“I’m testifying about street-tree maintenance in Community District 1. Find the NYC Open Data street-tree dataset and count the trees in the district and their health status, pull recent 311 complaints about tree conditions or dead trees there, and check whether any Council discretionary funding went to parks or greening in that district. Draft three minutes of testimony with every number sourced.”

Why it lands: it turns three disconnected public sources into a single, citable argument — and every figure traces back to an official record, which is the whole grounding thesis.

Crosswalk F — “Who funded this seat?” 🗳️

NY Open Data (campaign finance) → NYS Open Legislation → the join that isn’t there

User story: As a watchdog or reporter, I want to see who funded the campaigns in a particular legislative district, so that I can connect money to the votes cast by the person who holds that seat.

“Using New York State’s campaign finance disclosure data on data.ny.gov, show me the contributions to State Senate campaigns in Senate District 59. Then tell me who currently holds that seat. If the data can’t be cut that way, say so and show me what it can be cut by.”

Why it lands: this is the rare journey where the honest answer is you can’t get there, and finding that out in thirty seconds is the product. The agent should come back with a coverage finding rather than a donor list — and an ungrounded model will happily invent the donor list instead.

What the data actually supports (verified 2026-07-22, sources refreshed the same morning at 09:57 UTC):

Dataset ID Rows
Disclosure reports, all schedules, since July 1999 e9ss-239a 18,345,122
Contributions 4j2b-6a2j 12,915,078
Expenditures ajsb-8pni 4,229,292

All three are New York State Board of Elections data, posted daily, with org_amt carrying the transaction amount. Contributions and expenditures are cuts of the parent schema split by filing schedule, so the three share a column vocabulary and join on filer_id and trans_number.

The finding, stated at the width we tested. In e9ss-239a, the district column is populated on 28,520 of 18,345,122 rows — 0.16%. Narrow to rows where office_desc is State Senator and 13,014 carry a district. Of those, 94% belong to just two districts — SD 21 (6,864 rows) and SD 59 (5,403 rows) — and they come from 11 committees between them. The column holds 57 distinct district values across those 13,014 rows, so six of New York’s 63 senate districts do not appear at all — and the 55 districts other than SD 21 and SD 59 share roughly 750 rows between them.

What that supports: you cannot use this dataset to ask who funded campaigns in a given senate district. What it does not support: any claim that New York does not publish district-attributable campaign finance anywhere. We tested three Socrata datasets, not the Board of Elections’ own reporting portal at publicreporting.elections.ny.gov. Say the first; do not say the second.

We also did not establish why the field is sparse. Eleven committees accounting for 94% of district-tagged senate rows is consistent with filer-level practice rather than dataset coverage, but that is an inference. Offer to check rather than assert it.

Two supporting details worth having in the room:

End on what’s working, not only what isn’t. The public campaign finance program’s fields are real and filling in: r_claim, r_in_district, r_lobbyist, r_vendor, and r_is_qualified_expense. 872,265 rows carry a match-claim flag, concentrated from 2022 onward, and 2026 is already the largest year at 455,513 with half the year still to run. That is new transparency infrastructure doing its job, and a room that only hears about gaps will discount the ones you found.

⚠️ Do not profile a sitting member with this. Every figure above is structural and required looking up no individual. If you are demonstrating to a legislator, running their own donor list in their own office reads as a threat display regardless of how neutrally you narrate it — and it converts a credibility demo into something else. If a staffer asks to see their filings, that is their invitation to extend. It is not yours to open.


How to run these

Contributing a journey

Have a question your community keeps asking? Add it. Open a PR with a new user story + prompt in the matching section, or a new crosswalk if it chains sources in a way not shown here. Real questions from real board meetings, newsrooms, and nonprofits are exactly what makes this resource useful.