Search and explore 1.8M+ US nonprofits, fetch Form 990 financials, and access IRS filing history via MCP. STDIO or Streamable HTTP.
Three well-named tools with comprehensive descriptions and detailed parameter documentation. All tools have explicit input schemas with types and descriptions. Descriptions are detailed (150 - 400 chars) and include context on data sources, lag, and usage patterns. Parameters use enums for constrained values (state codes, NTEE categories, subsection codes). Union types for EIN accept both integer and string formats with regex validation. Output schemas are documented in descriptions but not formally declared in JSON Schema. Error handling guidance is present in descriptions (e.g., 'zero-match query returns empty array with notice'). All tools are READ_ONLY with clear risk classification. Naming follows verb_noun pattern (search_, get_, get_filings). Minor gaps: no formal output schema definitions, no per-tool error recovery guidance, no pagination metadata in descriptions.
All Form 990 filings for a tax-exempt org by EIN: year-by-year revenue, expenses, assets, liabilities, net assets, revenue breakdown, executive compensation, and source PDF links. Use for trend analysis, due diligence, and accessing primary 990 documents. The filing year (tax_prd_yr) is the fiscal year of the return — data lags 1–2 years; always cite the year. An organization that resolves but has filed no 990 returns an empty filings array with a notice, not an error. Also returns filings_pdf_only — older filings with a PDF but no extracted financial data. Data from ProPublica Nonprofit Explorer, sourced from IRS Form 990 filings.
Full profile for a single tax-exempt org by EIN: legal name, address, NTEE classification, 501(c) type, IRS ruling date, and a financial snapshot from the most recent Form 990 filing (revenue, expenses, assets, net assets, and the source PDF link). Also returns the IRS Business Master File standing — whether contributions are deductible, exemption status, and public-charity vs. private-foundation classification. Use nonprofit_search first if you only have an org name — this tool requires an EIN. Data lags 1–2 years; the tax year is shown prominently. Data from ProPublica Nonprofit Explorer, sourced from IRS Form 990 filings.
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.
Output schemas not formally documented in JSON Schema format. Descriptions mention returned fields (revenue, expenses, assets, etc.) but no structured schema definition visible in tool registration.
Pagination guidance incomplete. nonprofit_search mentions 'page parameter and num_pages' but does not document total_results cap behavior or how to detect end-of-results in tool schema.
No error recovery guidance in tool definitions. Descriptions note that 'zero-match query returns empty array with notice' but do not guide LLM on what to do if EIN is invalid or org has no filings.
Data lag (1 - 2 years) mentioned in descriptions but not emphasized as a critical constraint. LLMs may assume current data and make incorrect recommendations based on stale financials.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
nonprofit_search result limit (10,000 cap) and behavior when cap is reached (page refused) not clearly documented in schema. LLM may not understand why pagination fails at high offsets.