API DOCUMENTATION / PUBLIC SERVICES CONNECTOR

Public services connector

Find food banks, benefit offices and other public service sites near you.

What it is

Find public and nonprofit service sites in the U.S.: food banks, SNAP retailers and WIC offices, community health centers, Head Start programs and HUD housing counselors, nearest first, with the programs each site offers and how to apply. Built from federal and state open data; each site links to its source. Hours are as published by the source and may be out of date. Preview data: coverage is partial and fields may change. Every record links to its sources; check anything important at the source.

Connect

Endpoint: https://public-services-mcp.headcountlabs.com/mcp/public/public-services. It uses Streamable HTTP, is stateless and takes POST requests only. No account or key is needed. The data is read-only and U.S. only.

Example prompts

  • Food banks near zip 10027.
  • Where can I apply for WIC in Dallas, and what do I need?
  • Is there a Head Start program near Logan Square, Chicago?
  • Food banks near Harlem.
  • What is WIC and where do I apply in Dallas?

Tools

These are the tools the endpoint returns from tools/list. A * marks a required input.

ToolWhat it doesInputs
find_servicesFind places that deliver government and nonprofit services near a point, nearest first: community health centers, Head Start, HUD housing counselors, public housing agencies, SNAP retailers, city service centers.lat*, lon*, radius_m, walk_minutes, category, program, q, open_now, open_day, offers, requirements, language, limit, cursor, fields
get_service_siteOne public-service site (health center, food pantry, library, senior center, ...) by UUID (from find_services): address, phone, website, hours and schedule, categories, eligibility, documents, languages and fees.id*, fields
get_programOne government or public program (SNAP, Head Start, a city benefit) by UUID or federal assistance listing number (e.g.id, assistance_listing, fields
get_agencyOne government agency by UUID (from get_program): name, level (federal, state, county, city), jurisdiction, website, the agency it is part of, its sub-agencies (up to 50, each with its program count) and how many programs it runs directly (agency_programs lists them; include_sub=true adds the sub-agencies' programs).id*, fields
find_programsFind government and public programs (food assistance, housing vouchers, health centers, child care subsidies) by words in the name, category (health, food, housing, ...) or jurisdiction (US, a state code like NY, or a city jurisdiction).q, category, jurisdiction, limit, cursor, fields
find_agenciesFind government agencies (federal departments, state and city agencies) by words in the name, level (federal, state, county, city) or jurisdiction.q, level, jurisdiction, limit, cursor, fields
agency_programsThe public programs an agency administers directly (by agency UUID), alphabetical, optionally only those whose name contains q, with how many sites offer each.id*, q, include_sub, limit, cursor, fields
service_countsCount public-service sites (health centers, food pantries, libraries, senior centers, ...) near a point: total, free, by category and by service type (top 20 each).lat*, lon*, radius_m, walk_minutes
get_service_site_recordThe full stored record of one public-service site by its UUID (the id returned by find_services or get_service_site): every field with the source it came from.id*
get_program_recordThe full stored record of one public program by its UUID (the id returned by find_programs, get_program or agency_programs): every field with the source it came from.id*
get_agency_recordThe full stored record of one government agency by its UUID (the id returned by find_agencies, get_agency or the agency of get_program): every field with the source it came from.id*

Every tool only reads public records and changes nothing. Pages hold at most 100 items, 20 by default. fields trims each item. Record IDs are for follow-up calls only.

Limits

Rate limits: 20 tool calls per minute per conversation (ChatGPT openai/session or the Mcp-Session-Id issued at initialize) and 600 requests per minute per network; over the limit, a tool call returns isError with the wait time and HTTP requests get 429 with Retry-After.

Responses are capped at 60,000 characters (items trimmed from the end, meta.truncated set).

Errors

A failed call returns an MCP tool result with isError: true and the API error JSON (invalid_parameter 400 naming the parameter, not_found 404, invalid_cursor 400, query_timeout 503 asking for a narrower search, read_only 503). Unknown tools and record paths outside this index are refused with a message. JSON-RPC errors: -32700 parse error, -32601 unknown method. HTTP 405 for GET/DELETE, 413 over 256 KB.

Continue in the reference

More documentation.

MCP tools Ask a question
All API documentation