Skip to main content
Glama

nonprofit-explorer-mcp-server

Server Details

MCP server for nonprofit financials via ProPublica — IRS Form 990 data for 1.8M+ nonprofits.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
cyanheads/nonprofit-explorer-mcp-server
GitHub Stars
2
Server Listing
nonprofit-explorer-mcp-server

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 3 of 3 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: search for organizations, retrieve an organization profile by EIN, and retrieve Form 990 filings by EIN. There is no overlap or ambiguity in what each tool does.

Naming Consistency4/5

All tool names share the 'nonprofit_' prefix and use snake_case, but the pattern is not perfectly uniform: two use 'get_' (get_organization, get_filings) while one is just 'search' rather than 'search_organizations'. Still, the naming is predictable and readable.

Tool Count5/5

Three tools is an appropriate, focused set for a nonprofit data explorer. Each tool addresses a core need: discovery, entity details, and financial filings, without unnecessary bloat.

Completeness5/5

The tool surface covers the full read-only workflow for exploring nonprofits: search to find EINs, fetch an organization profile, and retrieve all Form 990 filings. No obvious gaps exist for the stated purpose.

Available Tools

3 tools
nonprofit_get_filingsGet Nonprofit FilingsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
einYesEmployer Identification Number. Use nonprofit_search to resolve an org name to its EIN.

Output Schema

ParametersJSON Schema
NameRequiredDescription
einYesEmployer Identification Number as integer.
nameYesLegal org name per IRS.
noticeNoPresent when the organization resolved but Nonprofit Explorer holds no filing of any kind for it — names the org and why the filing history is empty. An empty filings array without this notice means the org has filings that carry a PDF but no extracted data; read filings_pdf_only.
filingsYesFilings with extracted financial data, sorted newest first.
data_sourceYesProPublica + IRS attribution text.
propublica_urlYesProPublica Nonprofit Explorer URL for this org.
filings_pdf_onlyYesOlder filings with a PDF but no extracted financial data.
total_filings_pdf_onlyYesCount of PDF-only filings (no extracted data).
total_filings_with_dataYesCount of filings with extracted financial data.
Behavior5/5

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

Annotations already declare readOnly and idempotent hints, but the description adds crucial behavioral context: data lags 1–2 years, empty filings array with notice for no filings, the existence of filings_pdf_only without extracted data, and data sourcing from ProPublica/IRS. This significantly exceeds annotation coverage.

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

Conciseness5/5

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

The description is front-loaded with the core function and data contents, then provides use cases and edge-case behavior in a logical flow. Every sentence earns its place, with no redundancy or filler.

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 a single well-documented parameter, an output schema is present, and the description still explains edge cases (no filings, PDF-only) and data lag, making the tool fully understandable for an agent to invoke correctly.

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% for the single ein parameter, extensively documenting integer/string formats and leading-zero handling. The description adds no new parameter-level meaning beyond saying 'by EIN,' so baseline 3 is appropriate.

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?

The description opens with a specific verb+resource: 'All Form 990 filings for a tax-exempt org by EIN' and lists exact data contents (revenue, expenses, executive compensation, PDF links). It clearly distinguishes itself from sibling tools by focusing on filings, while explicitly referencing nonprofit_search for EIN resolution.

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

Usage Guidelines4/5

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

States explicit use cases: 'Use for trend analysis, due diligence, and accessing primary 990 documents.' It also tells users to use nonprofit_search to resolve names to EINs, providing an alternative path. It lacks explicit 'when not to use' exclusions, but the context is clear enough.

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

nonprofit_get_organizationGet Nonprofit OrganizationA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
einYesEmployer Identification Number. Accepts integer (530196605) or string with optional hyphen ("53-0196605"). Obtain from nonprofit_search results.

Output Schema

ParametersJSON Schema
NameRequiredDescription
einYesEmployer Identification Number as integer.
cityYesCity. Null when not on record.
nameYesLegal org name per IRS.
stateYesTwo-letter state abbreviation. Null when not on record.
streinYesEIN in "XX-XXXXXXX" format.
addressYesStreet address. Null when not on record.
zipcodeYesZIP code. Null when not on record.
ntee_codeYesFull NTEE code (e.g., "E210" = hospital). Null when unclassified.
sort_nameYesIRS Business Master File secondary name line (SORT_NAME) — an internal sort key such as a division or service-center label, not an alternate organization name. Null for most orgs.
deductibleYesWhether contributions to this org are tax-deductible, as "<IRS code> — <meaning>". Three states, not two: code 1 deductible, code 2 not deductible, code 4 deductible by treaty (foreign orgs). Null when the IRS Business Master File records no deductibility code.
data_sourceYesProPublica + IRS attribution text.
ruling_dateYesISO date of IRS recognition (e.g., "1946-07"). Null when not on record.
asset_amountYesMost recent IRS BMF total assets in USD. Null when not on record.
filing_countYesTotal filings with extracted data on record.
exempt_statusYesIRS exemption status as "<IRS code> — <meaning>"; code 1 is an unconditional exemption. This records what the IRS granted, not whether the exemption is still in force — the Business Master File is a lagging snapshot and automatic revocations are published separately. Null when the Business Master File records no status code.
income_amountYesMost recent IRS BMF total income in USD. Null when not on record.
latest_filingYesFinancial snapshot from the most recent Form 990. Null if no filings_with_data are available.
bmf_tax_periodYesTax period of the latest return recorded in the IRS Business Master File (e.g. "2025-06-01"). Often more recent than latest_filing.tax_prd_yr, which reflects the newest 990 ProPublica has extracted. Null when not on record.
propublica_urlYesProPublica Nonprofit Explorer URL for this org.
revenue_amountYesMost recent IRS BMF total revenue in USD. Null when not on record.
foundation_typeYesIRS foundation classification as "<IRS code> — <meaning>", separating public charities (codes 10–25) from private foundations (codes 2–4). Codes 0 (all organizations except 501(c)(3)) and 9 (suspense) fall outside both groups. Null when the IRS Business Master File records no foundation code.
subsection_codeYes501(c) subsection number (e.g., 3 = charitable organization, covering both public charities and private foundations — see foundation_type to tell them apart). Null when not classified.
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is known. The description adds valuable behavioral context: data lag of 1–2 years, prominent display of tax year, and provenance (ProPublica Nonprofit Explorer from IRS Form 990 filings). This goes beyond the annotations without contradicting them, though it doesn't cover all edge cases (e.g., error handling).

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

Conciseness5/5

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

The description is well-structured and front-loaded: it opens with the core purpose, lists returns, then provides usage guidance and data caveats. Each sentence serves a distinct purpose—no filler or repetition. The length is appropriate for the complexity, and the organization makes it easy to scan.

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?

Given the tool's single parameter, clear annotations, and existing output schema, the description is highly complete. It covers what data is returned, key limitations (data lag), usage prerequisites (EIN required), and data source. There are no significant gaps that would confuse an AI agent selecting or invoking the tool.

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?

The input schema already provides 100% coverage of the 'ein' parameter, including detailed format examples and the instruction to obtain it from nonprofit_search. The description adds no new parameter-specific semantics beyond restating that an EIN is required. Baseline 3 is appropriate given the high schema coverage.

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?

The description clearly states the tool's function: 'Full profile for a single tax-exempt org by EIN' and enumerates specific data fields (legal name, NTEE classification, financial snapshot, etc.). It also distinguishes itself from the sibling nonprofit_search by explicitly noting the EIN requirement, making the resource and scope unambiguous.

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?

The description provides explicit usage guidance: 'Use nonprofit_search first if you only have an org name — this tool requires an EIN.' This directly states when to use an alternative and implies when to use this tool (when you have an EIN and need a full profile). This is clear, practical guidance.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server that provides access to ProPublica's Nonprofit Explorer API, enabling AI models to search and analyze nonprofit organizations' Form 990 data for CRM integration and prospect research.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for US government transparency data (congressional trades, federal contracts, campaign finance, lobbying, regulations) with per-call paid access via x402 USDC.
    4
    10
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.