Skip to main content
Glama

nonprofit-explorer-mcp-server

Search Nonprofits

nonprofit_search_organizations
Read-only

Search 1.8M+ IRS-recognized tax-exempt organizations by name, keyword, city, or phrase. Optionally narrow by US state, NTEE major sector (1–10), or 501(c) subsection type. Returns EINs — pass them to nonprofit_get_organization or nonprofit_get_filings for details. Results are paginated at 25 per page; use the page parameter and num_pages to paginate. Total results cap at 10,000 in the API; if total_results === 10000 the actual count may be higher. A zero-match query and a page past the last one both return an empty organizations array with a notice rather than an error; only a page whose offset reaches that 10,000 cap is refused. Supports quoted phrases ("Red Cross"), required terms (+evanston), excluded terms (-dental). Data from ProPublica Nonprofit Explorer, sourced from IRS Form 990 filings.

Input Schema

NameRequiredDescriptionDefault
pageNoZero-indexed page number. 25 results per page. Total pages is in num_pages. Increment to paginate large result sets.
queryYesKeyword search string. Searched against org name, the secondary name line, and city in order of relevance. Supports: quoted phrases ("Red Cross"), required terms (+evanston), excluded terms (-dental). Empty string returns all orgs within the active filters.
stateNoTwo-letter US state, territory, or military postal code (e.g., "WA", "NY", "PR"). Case-insensitive — normalized to uppercase before filtering. A code outside that set is rejected rather than silently returning national results. Restricts results to orgs headquartered in that state. "ZZ" (foreign address) is accepted, but no organization in the index currently carries it.
ntee_categoryNoNTEE (National Taxonomy of Exempt Entities) major group integer (1–10). 1=Arts/Culture/Humanities, 2=Education, 3=Environment/Animals, 4=Health, 5=Human Services, 6=International/Foreign Affairs, 7=Public/Societal Benefit, 8=Religion Related, 9=Mutual/Membership Benefit, 10=Unknown/Unclassified.
subsection_codeNo501(c) subsection code. "3" = charitable/religious/educational organization (most common — includes both public charities and private foundations; nonprofit_get_organization returns foundation_type to tell them apart), "4" = social welfare org, "6" = business league/trade association, "92" = 4947(a)(1) nonexempt charitable trust. Filters by tax status, not sector.

Output Schema

NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
noticeNoPresent when the response needs a caveat the domain fields cannot carry: a page that returned no organizations (distinguishing a zero-match query from a page past the end of the result set, and naming the next call), a total_results sitting on the API result ceiling rather than counting matches, or both at once in one string. Absent when the page is populated and the total is an exact count.
cur_pageNoCurrent page (zero-indexed).
per_pageNoResults per page applied by the API (25).
num_pagesNoTotal pages available (total_results / 25, ceiling). The last valid page is num_pages - 1.
data_sourceNoProPublica + IRS attribution text.
page_offsetNoZero-indexed offset of the first result on this page. Requests are refused once this reaches 10,000.
organizationsNoMatching organizations for the current page.
total_resultsNoTotal matching orgs (up to 10,000 — the API ceiling). If 10000, actual count may be higher.
active_filtersNoActive filters echoed back for verification.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond readOnlyHint=true: pagination at 25/page, a 10,000-result API cap with the total_results===10000 caveat, and precise error semantics (zero-match and past-last page return empty array with notice; only offset past the cap is refused). This is unusually rich behavioral context for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and result usage before the operational details, and each sentence carries real information. It is dense but a couple of sentences (e.g., the ProPublica sourcing blurb) could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and readOnlyHint in place, the description still fills the important gaps: how to paginate, the hard cap, and the non-error empty-result behavior. An agent has everything needed to call this correctly and interpret responses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself already documents query syntax, state validation, NTEE, and subsection codes in detail. The description largely repeats that (quoted phrases, +/-, - terms) and adds some pagination framing, but adds little semantic meaning the schema doesn't already carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scale: 'Search 1.8M+ IRS-recognized tax-exempt organizations by name, keyword, city, or phrase.' It clearly distinguishes the tool from siblings by describing the return value (EINs) and explicitly naming nonprofit_get_organization and nonprofit_get_filings as follow-ups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: search here, then pass EINs to nonprofit_get_organization or nonprofit_get_filings for details. It also names the optional narrowing filters (state, NTEE sector, 501(c) subsection) and describes edge-case behavior so the agent knows what to expect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.