Every tool
nyc-311-mcp has 21 tools. You don't need to know their names. Ask your question in plain English and your AI assistant picks the tool. Below is what each one does, a few things to try, and a replay of a real question and answer.
If this is an emergency, or if you think this is an emergency, call 911. Every answer from every tool ends with that line. Danger detection is a best effort and it will miss some emergencies.
The demos are real answers, captured November 9, 2026, with BoardStat data as of November 9, 2026, with 311 requests through November 8. We shortened them to fit, and left out home addresses. Your numbers will be newer.
- Help reporting a problem (3)
- Your community district or Council district (11)
- The Local Law 47 reports (3)
- Today in the city (2)
- Look up a 311 request (2)
Help reporting a problem
Tell it what's wrong in your own words. It finds the City's own 311 article for that problem, the agency that handles it, and every way to report it. It can also write a short report for you to paste in. It never files anything. You do that yourself.
how_to_report
Describe the problem the way you'd tell a neighbor. It searches the City's 311 articles and gives back the best match: the article title and link on 311 Online, the agency, the 311 problem type, what the City says happens next, and every way to report it. Give it your district and it also tells you how often people there reported the same thing. If your description sounds dangerous, the first line tells you to call 911. It catches a lot, but it will miss some emergencies, so don't count on it for that.
Try asking:
- “There's a pothole on my block that keeps getting bigger. How do I report it?”
- “My upstairs neighbor plays loud music every night.”
- “No heat in my apartment.”
- “Overflowing trash can and a broken bench in the park.”
There's a pothole on my block that keeps getting bigger. How do I report it? I'm in Brooklyn Community District 6.
The assistant calls how_to_report(description="there's a pothole on my block that keeps getting bigger", borough="Brooklyn", community_district=306)
"first_line": "Best match: \"Pothole or Cave-In on Street\" (KA-01093), handled by the Department of Transportation, 311 problem type \"Street Condition\". Confidence strong. Article text as of 2026-11-09." "portal_url": "https://portal.311.nyc.gov/article/?kanumber=KA-01093" "call_911": "Call 911 to report an unprotected street opening that could cause an accident." … "label": "the last 365 days of data (2025-11-09 to 2026-11-08)" "requests": 1448 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
Smoke pouring out of the apartment next door
The assistant calls how_to_report(description="smoke pouring out of the apartment next door")
"first_line": "Call 911 to report smoke or fumes." "source": "311 article KA-02220 (\"Smoke or Fumes\"), https://portal.311.nyc.gov/article/?kanumber=KA-02220" "confidence": "strong: the City's own article for the danger detected; call 911 first" For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
draft_311_report
Writes a short report you can paste into 311 Online: the problem, where, when, and what you saw. It doesn't fill in anything you didn't tell it. If something is missing, it marks the gap and asks you. It links the right 311 page, lists the City's Problem Detail options (from a 2024 City list, so they may be out of date), and says what happens after you report. It won't write a draft when it sees danger. It tells you to call 911 instead. It doesn't send anything or fill in any form.
Try asking:
- “Help me write a 311 report about a pothole at 7th Avenue and 9th Street in Brooklyn. It's been there since last week.”
- “Draft a 311 report about a broken streetlight on my corner.”
Help me write a 311 report about a pothole at 7th Avenue and 9th Street in Brooklyn. It's been there since last week.
The assistant calls draft_311_report(description="pothole", location="7th Avenue and 9th Street", borough="Brooklyn", when="since last week")
"first_line": "Draft ready for \"Pothole or Cave-In on Street\" (KA-01093). The City does not publish each form's exact fields, so the form may ask for things this draft doesn't cover." "paste_text": "Problem: Pothole or Cave-In on Street (311 problem type: Street Condition)\nWhere: 7th Avenue and 9th Street, Brooklyn\nWhen: since last week\nWhat I saw: pothole" … "not_sent": "This draft is not sent anywhere and the server files nothing. The person reports the problem themselves, on 311 Online, in the NYC311 app, by phone or by text." For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
list_311_categories
Browse 311's own topics, the same ones on 311 Online, when a match looks wrong or you just want to see what 311 covers. Pick a topic to list its articles, 20 at a time.
Try asking:
- “What kinds of things can I report to 311?”
- “Show me 311's noise articles.”
What kinds of things can I report to 311?
The assistant calls list_311_categories()
"name": "Benefits & Support" "description": "Affordable housing, homelessness, SNAP (food stamps), cash assistance, child care, volunteering, donating." "name": "Businesses & Consumers" … "count": 115 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
Your community district or Council district
These read the files BoardStat builds every night from NYC Open Data, with 311 requests from 2020 on. Every answer links to the BoardStat page with the same district, dates and problems, so you can check the numbers yourself. No API key needed.
find_district
Type an address the way you normally would. It tells you the community district and the Council district, and how many 311 requests have been made there since 2020.
Try asking:
- “What community board and Council district is 250 Broadway in?”
What community board and Council district is 250 Broadway in?
The assistant calls find_district(address="250 Broadway", borough="Manhattan")
"message": "Found as 250 BROADWAY." "label": "Manhattan CD 1" "label": "Council District 1" "requests_at_this_address": 148 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
district_summary
The big picture for one district: how many requests, how many aren't closed, how long they take to close, and the top problems. For each top problem, it compares the district's share with the borough's and the city's.
Try asking:
- “Give me a summary of 311 in Brooklyn Community Board 6.”
- “What does 311 look like in Council District 7 this fiscal year?”
Give me a summary of 311 in Brooklyn Community Board 6.
The assistant calls district_summary(community_district=306, limit=5)
"label": "2025-11-01 to 2026-11-08" "requests": 59922 "not_closed": 3580 "median_days_to_close": 0.2 … "problem": "Illegal Parking" "district_share": 0.2836 "borough_share": 0.2011 "city_share": 0.1588 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
top_problems
The most-reported problems in a district for any period, next to the same days a year earlier.
Try asking:
- “What were the top 311 complaints in Brooklyn 6 in the last 30 days?”
- “Top problems in Council District 39 last fiscal year?”
What were the top 311 complaints in Brooklyn 6 in the last 30 days?
The assistant calls top_problems(community_district=306, last_days=30, limit=5)
"label": "the last 30 days of data (2026-10-10 to 2026-11-08)" "problem": "Illegal Parking" "requests": 2313 "same_days_a_year_earlier": 1297 "change_pct": 78.3 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
problem_trend
One problem, month by month, in one district, with the same days a year earlier next to each month.
Try asking:
- “How has residential noise in Brooklyn 6 changed month to month this year?”
How has residential noise in Brooklyn 6 changed month to month this year?
The assistant calls problem_trend(community_district=306, problem="Noise - Residential", last_days=365)
"problem": "Noise - Residential" "requests": 2676 "month": "2025-12" "requests": 184 "same_days_a_year_earlier": 152 … For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
agency_response
For each agency: how many requests, how many are closed, and the median and average days to close. Remember that closed doesn't mean fixed.
Try asking:
- “How fast do agencies close requests in Council District 39?”
- “Which agency is slowest in Bronx 1 this fiscal year?”
How fast do agencies close requests in Council District 39?
The assistant calls agency_response(council_district=39, last_days=90, limit=5)
"agency_name": "Department of Housing Preservation and Development" "requests": 2067 "not_closed": 467 "median_days_to_close": 6 "average_days_to_close": 10.3 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
still_open
Requests that aren't closed yet, oldest first, with how many days each has been open and a count by agency. The City doesn't define its statuses, so we explain each one and label the explanation as ours.
Try asking:
- “What 311 requests in Brooklyn 6 are still open?”
- “Which agency has the most open requests in Queens 1?”
What 311 requests in Brooklyn 6 are still open?
The assistant calls still_open(community_district=306, limit=5)
"not_closed": 9372 "agency_name": "Department of Parks and Recreation" "not_closed": 2238 … "problem": "New Tree Request" "status": "In Progress" "days_open": 2503.4 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
top_addresses
The addresses with the most requests in a district, with each one's most common problem. You can narrow it to one problem.
Try asking:
- “Which addresses in Brooklyn 6 get the most 311 requests?”
- “Where are the most heat complaints in Bronx 5?”
Which addresses in Brooklyn 6 get the most 311 requests?
The assistant calls top_addresses(community_district=306, last_days=90, limit=5)
"label": "the last 90 days of data (2026-08-11 to 2026-11-08)" "requests": 15637 … "requests": 921 "most_common_problem": "Illegal Parking" … "address_count": 5521 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
address_history
Every request at one address since 2020, newest first, with the status explained and the agency's own resolution text. It's the closest thing to looking up a request when you don't have its number.
Try asking:
- “What's been reported at 1 Centre Street?”
- “Any open requests at City Hall?”
What's been reported at 1 Centre Street?
The assistant calls address_history(address="1 Centre Street", borough="Manhattan", limit=5)
"requests": 358 "not_closed": 9 … "problem": "Graffiti" "status": "Closed" "resolution": "The City has removed the graffiti from this property." For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
find_requests
Every request in a district, newest first, a page at a time. Filter by problem, agency, or status, including the City's own statuses like Pending.
Try asking:
- “Show me the newest street-condition requests in Brooklyn 6.”
- “List DOT requests in Manhattan 3 that are Pending.”
Show me the newest street-condition requests in Brooklyn 6.
The assistant calls find_requests(community_district=306, problems=["Street Condition"], limit=5)
"requests": 1464 "status": "Closed" "requests": 1373 … "description": "Cave-in" "agency": "DOT" "status": "In Progress" For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
boardstat_link
Makes a BoardStat link with your district, dates, problem, agency, and status already set, so you can open the map and charts yourself.
Try asking:
- “Give me a BoardStat link for residential noise in Brooklyn 6, last 90 days.”
Give me a BoardStat link for residential noise in Brooklyn 6, last 90 days.
The assistant calls boardstat_link(community_district=306, problems=["Noise - Residential"], last_days=90)
"boardstat_url": "https://www.beta.nyc/boardstat/district.html?geo=cd&id=306&start=2026-08-11&end=2026-11-08&type=Noise+-+Residential" For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
boardstat_status
How fresh BoardStat's data is, and whether last night's build ran late. Ask this when a number looks off.
Try asking:
- “How fresh is BoardStat's data?”
How fresh is BoardStat's data?
The assistant calls boardstat_status()
"built_at": "2026-11-10T00:37:17Z" "nightly_run_late": false "newest_request": "2026-11-08 02:06:22" "total": 23080603 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
The Local Law 47 reports
In 2005, Local Law 47 (Gale A. Brewer) required monthly 311 reports from the City, written into Charter § 1075. Two of those reports were repealed in 2023. We rebuilt all three from NYC Open Data. They are BetaNYC rebuilds, not the City's official reports, and every answer says so. No API key needed.
ll47_service_request_report
Rebuilds the monthly report on requests for service, formerly Charter § 1075(b): totals by category, agency, and status, and the average and median days to close, for a month and for the fiscal year to date. Citywide, by borough, or for one district.
Try asking:
- “Rebuild the Local Law 47 monthly 311 report for Brooklyn 6.”
- “Run the § 1075(b) report for Queens for October.”
Rebuild the Local Law 47 monthly 311 report for Brooklyn 6.
The assistant calls ll47_service_request_report(community_district=306, limit=5)
"label": "2026-10 (2026-10-01 to 2026-10-31)" "requests": 6108 "closed": 5227 … "status": "repealed" "note": "This is a BetaNYC rebuild from NYC Open Data, not the City's official report. Only the City can meet § 1075." For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
cb_monthly_list
The list that Charter § 1075(d), still law, says community boards should get: one district's requests for a month, every older request still unresolved, and the ones closed since. Comes in pages, or as a CSV.
Try asking:
- “Give Brooklyn Community Board 6 its monthly list of 311 requests for October.”
- “Same list for Staten Island 1, as a CSV.”
Give Brooklyn Community Board 6 its monthly list of 311 requests for October.
The assistant calls cb_monthly_list(community_district=306, limit=5)
"new_this_month": 6108 "unresolved_from_prior_months": 8167 "unresolved_at_month_end_now_closed": 29 "rows": 14304 For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
ll47_directory_assistance_report
Calls answered by 311 agents, by topic, for a month and the fiscal year to date, formerly Charter § 1075(c). This one is limited, and the answer says so: the open data can't separate out directory-assistance calls, and its agency column is blank. NYC Open Data can be slow here, so the first full-year answer may take a few tries.
Try asking:
- “How many calls did 311 agents answer in October, by topic?”
How many calls did 311 agents answer in fiscal year 2026, by topic?
The assistant calls ll47_directory_assistance_report(fiscal_year=2026, limit=5)
"limited": true "note": "Some months are still loading from NYC Open Data, so the full total is not ready yet. The others keep loading and are saved when done. Ask again in a minute." For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
Today in the city
The City's own 311 calendar and status alerts. These were in 1.1.0, too.
get_calendar
Alternate side parking, trash and recycling collection, and schools, for a day or up to 90 days.
Try asking:
- “Is alternate side parking in effect today?”
- “Is trash pickup on schedule the week of Thanksgiving?”
Is alternate side parking in effect today?
The assistant calls get_calendar()
"details": "Alternate side parking and meters are in effect." "details": "Trash, recycling, and compost collections are on schedule." "details": "Public schools are open." For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
get_status
Whether Code Blue, a fire hydrant emergency, snow or ice, or an emergency management alert is in effect right now. The answer now says it in words.
Try asking:
- “Is there a Code Blue tonight?”
- “Is there a snow emergency on the streets?”
Is there a Code Blue tonight?
The assistant calls get_status(type="CodeBlue")
"answer": "No: the City's 311 API says Code Blue is not in effect right now. That is as of when it was asked; it can change later today, so ask again for a later answer." For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
Look up a 311 request
Have a 311 number, like 311-12345678? These tell you where it stands, in words. The City sends a status code, and we translate it.
get_service_request
Look up a request by its 311 number. You get the agency, the problem, the status in words, and the agency's own note about what it did. ZIP codes are removed.
Try asking:
- “What happened with 311 request 311-17323508?”
What happened with 311 request 311-17323508?
The assistant calls get_service_request(sr_number="311-17323508")
"Agency": "Department of Sanitation" "Problem": "Snow or Ice" "ResolutionAction": "The Department of Sanitation investigated this complaint and issued a Notice of Violation." "status": "Closed" For informational purposes only. BetaNYC builds these answers from City data; they may contain errors. Check the City's 311 page before you report. If this is an emergency, or if you think this is an emergency, call 911.
get_service_request_list
Several 311 numbers at once. Any number the City can't find is listed, so nothing quietly goes missing.
Try asking:
- “Check these three 311 numbers for me: …”