Skip to main content
Glama

nonprofit-explorer-mcp-server

Get Nonprofit Organization

nonprofit_get_organization
Read-onlyIdempotent

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.

Input Schema

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

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
einNoEmployer Identification Number as integer.
cityNoCity. Null when not on record.
nameNoLegal org name per IRS.
errorNoPresent when the call failed. Absent on success.
stateNoTwo-letter state abbreviation. Null when not on record.
streinNoEIN in "XX-XXXXXXX" format.
addressNoStreet address. Null when not on record.
zipcodeNoZIP code. Null when not on record.
ntee_codeNoFull NTEE code (e.g., "E210" = hospital). Null when unclassified.
sort_nameNoIRS 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.
deductibleNoWhether 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_sourceNoProPublica + IRS attribution text.
ruling_dateNoISO date of IRS recognition (e.g., "1946-07"). Null when not on record.
asset_amountNoMost recent IRS BMF total assets in USD. Null when not on record.
filing_countNoTotal filings with extracted data on record.
exempt_statusNoIRS 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_amountNoMost recent IRS BMF total income in USD. Null when not on record.
latest_filingNoFinancial snapshot from the most recent Form 990. Null if no filings_with_data are available.
bmf_tax_periodNoTax 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_urlNoProPublica Nonprofit Explorer URL for this org.
revenue_amountNoMost recent IRS BMF total revenue in USD. Null when not on record.
foundation_typeNoIRS 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_codeNo501(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.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and idempotentHint=true, so the safety profile is already covered. The description adds valuable context beyond that: the data freshness caveat ('lags 1–2 years'), the source attribution ('ProPublica Nonprofit Explorer, sourced from IRS Form 990 filings'), and the note that the tax year is displayed prominently to avoid misreading stale data. This behavior — returning potentially dated financials that require interpretation — is exactly the kind of nuance annotations cannot convey.

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 dense but every sentence earns its place: the first sentence inventories the return payload, the second covers the standing/classification fields, the third routes to the sibling, and the fourth handles data lag and provenance. The most decision-relevant line ('use nonprofit_search first... requires an EIN') is placed third but the leading payload inventory is front-loaded appropriately. No filler or redundancy.

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?

Complete for a single-parameter read tool. An output schema exists, so return-value documentation is handled structurally. The description covers the data source, freshness caveat, sibling routing, and required parameter format. The only thing an agent might want — average field-level detail for every return value — is available in the output schema. Nothing needed for correct invocation or result interpretation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema fully documents the ein format (integer with leading-zero caveat, or string with optional hyphen). The description adds meaning beyond the schema by specifying where the EIN comes from ('Obtain from nonprofit_search results'), which tells the agent the provenance of the parameter and reinforces the tool-routing decision. It also explains what the parameter is used for (keying into the full profile), which the raw schema's 'Employer Identification Number' label does not.

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 ('returns a full profile') and resource ('single tax-exempt org by EIN'), enumerating the exact fields delivered (legal name, address, NTEE, 501(c) type, ruling date, financials, BMF standing). This cleanly distinguishes it from siblings: it is the rich single-record getter, while nonprofit_get_filings covers filings and nonprofit_search is the discovery tool. No ambiguity survives.

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 tells the agent when to use this tool vs. the sibling: 'Use nonprofit_search first if you only have an org name — this tool requires an EIN.' It also sets expectations about data recency ('Data lags 1–2 years'), which is a usage constraint the agent needs to decide whether the tool fits the user's needs. Both conditions for correct use are stated directly.

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.

TDQS

A4.7/5.0
Disambiguation5/5

Each tool serves a distinct, non-overlapping purpose: search for organizations, retrieve an organization's profile, and retrieve its filings. There is no ambiguity about which tool to use for a given task.

Naming Consistency5/5

All tools follow the same 'nonprofit_<action>' pattern with verbs indicating the operation (search, get_filings, get_organization). The naming is clean, predictable, and consistent.

Tool Count5/5

With only three tools, the set is tightly scoped to the server's purpose of exploring nonprofit data. Each tool is essential and there is no bloat or redundancy, making the count appropriate.

Completeness5/5

The tool surface covers the entire workflow: search to find entities, get details for a single entity, and retrieve historical filings for analysis. No obvious gaps exist for the stated purpose of exploring nonprofit data.