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

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: searching for organizations, retrieving organization profiles, and retrieving filings. No ambiguity or overlap exists between them.

Naming Consistency5/5

All tool names start with 'nonprofit_' followed by a clear verb_noun pattern: search, get_organization, get_filings. Consistent and predictable.

Tool Count4/5

Three tools is minimal but appropriate for this niche domain. The set covers the primary operations without being too sparse, though additional tools like comparing organizations could be justified.

Completeness4/5

The tool surface covers search, organization details, and filings, which are the core needs. Missing features like bulk operations or advanced filtering are minor gaps but do not hinder basic use.

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, program-expense ratio (with inputs shown), executive compensation, and source PDF/XML 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. Program expense ratio is computed as (total_expenses − officer comp − other wages − fundraising) / total_expenses for 990/990-EZ; not available for 990-PF. 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.
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.
Behavior4/5

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

Annotations already set readOnlyHint and idempotentHint to true. Description adds key behavioral details: data source (ProPublica/IRS), 1-2 year lag, computation of program expense ratio, and distinction of filings with PDF only. No contradiction with annotations.

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?

Description is informative but not overly verbose. It front-loads the main purpose and data types, then adds usage context and limitations. Could be slightly more concise by reducing redundancy in the first sentence.

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 output schema exists (not shown), description does not need to detail return values. It covers data specifics, computation logic, limitations, and source attribution comprehensively for a single-parameter 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?

Only one parameter (ein) with 100% schema coverage including format details and cross-reference to nonprofit_search. Description adds minimal extra meaning beyond the schema's description; the utility hint about resolving name to EIN is useful but not essential.

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 retrieves 'All Form 990 filings for a tax-exempt org by EIN' and lists specific financial data points. It differentiates from siblings by focusing on filings rather than organization details (nonprofit_get_organization) or search (nonprofit_search).

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?

Provides explicit use cases: 'trend analysis, due diligence, and accessing primary 990 documents.' Mentions limitations like data lag and unavailability of program ratio for 990-PF, and directs to use nonprofit_search for resolving name to EIN. However, it does not explicitly say when not to use this tool versus siblings.

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). 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_nameYesAlternate or subtitle name from the org record. Null when absent.
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 reported.
filing_countYesTotal filings with extracted data on record.
income_amountYesMost recent IRS BMF total income in USD. Null when not reported.
latest_filingYesFinancial snapshot from the most recent Form 990. Null if no filings_with_data are available.
propublica_urlYesProPublica Nonprofit Explorer URL for this org.
revenue_amountYesMost recent IRS BMF total revenue in USD. Null when not reported.
subsection_codeYes501(c) subsection number (e.g., 3 = public charity). Null when not classified.
Behavior5/5

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

Annotations already indicate readOnlyHint and idempotentHint. The description adds valuable context about data lag (1-2 years), source (ProPublica, IRS Form 990), and that it returns a single org, complementing the annotations without contradiction.

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?

Two sentences efficiently convey purpose, usage, and data characteristics. Information is front-loaded, with no wasted words.

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 present, the description covers all necessary context: what the tool does, when to use it, data freshness, and source. No gaps remain.

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% with detailed description of the ein parameter (integer or string formats). The description reinforces that the EIN comes from nonprofit_search and that it's required, adding value beyond the schema.

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 it returns a 'full profile for a single tax-exempt org by EIN' and enumerates specific fields (legal name, address, NTEE classification, etc.). It distinguishes from siblings by directing to nonprofit_search for name-only queries.

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 says to use nonprofit_search first if only have an org name, and that this tool requires an EIN. Also mentions data lag and source, providing clear when-to-use and context.

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!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources