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.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 70 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/nonprofit-explorer-mcp-server
GitHub Stars
2
Server Listing
nonprofit-explorer-mcp-server

TDQS

A4.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct role: search organizations by name/keyword, retrieve a single organization profile by EIN, and retrieve Form 990 filings by EIN. The descriptions explicitly guide agents from search results (EINs) to detail and filing tools, leaving little room for misselection.

Naming Consistency5/5

All three tools follow a consistent snake_case pattern with the same nonprofit_ prefix and clear verb_noun structure: search_organizations, get_organization, get_filings. This is predictable and easy to scan.

Tool Count5/5

Three tools form a tight, well-scoped read-only surface for a nonprofit data explorer: discovery, profile lookup, and filing history. Each tool earns its place, and there are no redundant or filler tools.

Completeness5/5

The read-only nonprofit domain is covered end-to-end: search for organizations, inspect a specific organization's profile, and retrieve its historical Form 990 filings with financial details and PDF links. No create/update/delete operations are expected for this data source.

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.

NameRequiredDescriptionDefault
einYesEmployer Identification Number. Use nonprofit_search_organizations to resolve an org name to its EIN.

Output Schema

NameRequiredDescription
einNoEmployer Identification Number as integer.
nameNoLegal org name per IRS.
errorNoPresent when the call failed. Absent on success.
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.
filingsNoFilings with extracted financial data, sorted newest first.
data_sourceNoProPublica + IRS attribution text.
propublica_urlNoProPublica Nonprofit Explorer URL for this org.
filings_pdf_onlyNoOlder filings with a PDF but no extracted financial data.
total_filings_pdf_onlyNoCount of PDF-only filings (no extracted data).
total_filings_with_dataNoCount of filings with extracted financial data.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: discloses the reporting lag and citation requirement, that an org with no filings returns an empty array plus a notice rather than an error, the existence of a separate filings_pdf_only bucket, and the upstream data source (ProPublica/IRS). These are exactly the operational facts an agent needs before interpreting results.

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 what is returned, then layers usage, caveats, and edge cases in a tight sequence with no filler. It is on the dense side (five distinct claims) but nearly every sentence carries decision-relevant information.

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?

Even though an output schema exists, the description supplies the interpretive context the schema cannot: the fiscal-year meaning, the lag, the empty-result semantics, and the PDF-only bucket. Nothing needed to call or interpret the tool is missing.

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, and the schema already documents both integer and hyphenated string forms of EIN plus the search-tool routing hint at 100% coverage. The description adds no further constraint on the parameter itself (its 'filing year' discussion concerns returned fields, not inputs), so the baseline 3 applies.

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 ('All Form 990 filings for a tax-exempt org by EIN') and enumerates the returned content precisely (revenue, expenses, assets, liabilities, net assets, exec comp, PDF links). This is clearly distinguishable from nonprofit_search_organizations (name→EIN lookup) and nonprofit_get_organization (profile data).

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?

Gives concrete usage contexts ('trend analysis, due diligence, and accessing primary 990 documents') and flags the 1–2 year data lag with an instruction to cite the year. It does not explicitly say when to prefer nonprofit_get_organization instead, but the intended role of this sibling is unambiguous from the content listed.

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_organizations 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.

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

Output Schema

NameRequiredDescription
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.
filing_count_pdf_onlyNoTotal PDF-only filings without extracted financial data. Use nonprofit_get_filings for their PDF links.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description adds real value beyond them: a 1–2 year data lag, a prominent tax year field to disambiguate recency, and provenance (ProPublica Nonprofit Explorer / IRS Form 990). It does not cover failure behavior for an unknown or invalid EIN, which keeps it short of a 5.

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-loaded with the core purpose, then scope, then the sibling routing rule, then caveats. The parenthetical enumeration of financial fields is the longest clause and is partially redundant with the output schema, but it still aids tool selection. No filler sentences.

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 needn't specify return shape, yet it still signals the two data sources (Form 990 vs. BMF) an agent will be reading. Combined with the staleness caveat and the EIN precondition, an agent has everything needed to call it 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% and the schema itself documents both integer and hyphenated-string EIN forms plus the leading-zero caveat. The description only adds the requirement and the origin of the value ('Obtain from nonprofit_search_organizations results'), which is useful but no deeper than the schema. Baseline 3 applies.

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 and resource ('Full profile for a single tax-exempt org by EIN') and enumerates exactly what is returned: legal name, address, NTEE, 501(c) type, ruling date, Form 990 financials, and BMF standing. This is clearly distinguishable from nonprofit_get_filings and nonprofit_search_organizations.

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?

Names the alternative explicitly and the condition that selects it: 'Use nonprofit_search_organizations first if you only have an org name — this tool requires an EIN.' The hard prerequisite (EIN required) is stated outright, so an agent cannot mis-invoke it with a name.

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

nonprofit_search_organizationsSearch NonprofitsA
Read-only
Inspect

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.

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

NameRequiredDescription
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.

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changednonprofit_get_filings12 fields changed
      • changedInput schema / properties / ein / description
        Previous value: -"Employer Identification Number. Use nonprofit_search to resolve an org name to its EIN."New value: +"Employer Identification Number. Use nonprofit_search_organizations to resolve an org name to its EIN."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database. `upstream_error`: ProPublica API returns a non-JSON body or network error. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `timeout`: A ProPublica API attempt expires before its response body finishes. `retry_deadline_exceeded`: The complete ProPublica API retry exchange exceeds its deadline. `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database. `upstream_error`: ProPublica API returns a non-JSON body or network error. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "not_found",
        -  "upstream_error"
        -]New value: +[
        +  "timeout",
        +  "retry_deadline_exceeded",
        +  "not_found",
        +  "upstream_error"
        +]
      • changedOutput schema / properties / filings / items / properties / contributions_and_grants / description
        Previous value: -"Total contributions and grants (totcntrbgfts). 990/990-EZ only; null for 990-PF."New value: +"Contributions and grants in USD: totcntrbgfts (990), totcntrbs (990-EZ), or grscontrgifts (990-PF). Null when not extracted."
      • addedOutput schema / properties / filings / items / properties / distributable_amount
        Added value: +{
        +  "description": "990-PF required distributable amount in USD, Part X line 7, distribamt. A payout requirement, not actual payments or a compliance measure. Null for other forms or when not extracted.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / filings / items / properties / fair_market_value_assets
        Added value: +{
        +  "description": "990-PF end-of-year fair-market-value assets in USD, header Item I, fairmrktvalamt. Null for other forms or when not extracted.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / filings / items / properties / grants_paid
        Added value: +{
        +  "description": "990-PF contributions, gifts, and grants paid in USD, Part I line 25 column (a), contrpdpbks. Null for other forms or when not extracted.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / filings / items / properties / investment_income / description
        Previous value: -"Investment income (invstmntinc). 990/990-EZ only; null for 990-PF."New value: +"Investment income in USD: invstmntinc (990), othrinvstinc (990-EZ), or intrstrvnue plus dividndsamt (990-PF Part I column (a), lines 3–4: savings interest plus dividends and securities interest; excludes capital gains, rents, and net investment income). PF requires both components; null when not extracted."
      • changedOutput schema / properties / filings / items / properties / net_assets / description
        Previous value: -"Net assets/fund balances (end of year) in USD. From totnetassetend. Null when not extracted."New value: +"Net assets/fund balances (end of year) in USD. From totnetassetend (990), totnetassetsend (990-EZ), or tfundnworth (990-PF). Null when not extracted."
      • addedOutput schema / properties / filings / items / properties / net_investment_income
        Added value: +{
        +  "description": "990-PF net investment income in USD, Part I line 27b, netinvstinc. Null for other forms or when not extracted.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / filings / items / properties / program_service_revenue / description
        Previous value: -"Program service revenue (totprgmrevnue). 990/990-EZ only; null for 990-PF."New value: +"Program service revenue in USD: totprgmrevnue (990) or prgmservrev (990-EZ). Not applicable for 990-PF."
      • changedOutput schema / properties / filings / items / required
        Previous value: -[
        -  "tax_prd_yr",
        -  "tax_prd",
        -  "form_type",
        -  "pdf_url",
        -  "updated",
        -  "total_revenue",
        -  "total_expenses",
        -  "total_assets",
        -  "total_liabilities",
        -  "net_assets",
        -  "contributions_and_grants",
        -  "program_service_revenue",
        -  "investment_income",
        -  "program_expense_ratio",
        -  "executive_compensation"
        -]New value: +[
        +  "tax_prd_yr",
        +  "tax_prd",
        +  "form_type",
        +  "pdf_url",
        +  "updated",
        +  "total_revenue",
        +  "total_expenses",
        +  "total_assets",
        +  "total_liabilities",
        +  "net_assets",
        +  "contributions_and_grants",
        +  "program_service_revenue",
        +  "investment_income",
        +  "grants_paid",
        +  "distributable_amount",
        +  "fair_market_value_assets",
        +  "net_investment_income",
        +  "program_expense_ratio",
        +  "executive_compensation"
        +]
    • Changednonprofit_get_organization6 fields changed
      • changedInput schema / properties / ein / description
        Previous value: -"Employer Identification Number. Accepts integer (530196605) or string with optional hyphen (\"53-0196605\"). Obtain from nonprofit_search results."New value: +"Employer Identification Number. Accepts integer (530196605) or string with optional hyphen (\"53-0196605\"). Obtain from nonprofit_search_organizations results."
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "ein",
        -      "strein",
        -      "name",
        -      "sort_name",
        -      "address",
        -      "city",
        -      "state",
        -      "zipcode",
        -      "ntee_code",
        -      "subsection_code",
        -      "ruling_date",
        -      "asset_amount",
        -      "income_amount",
        -      "revenue_amount",
        -      "deductible",
        -      "exempt_status",
        -      "foundation_type",
        -      "bmf_tax_period",
        -      "latest_filing",
        -      "filing_count",
        -      "data_source",
        -      "propublica_url"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "ein",
        +      "strein",
        +      "name",
        +      "sort_name",
        +      "address",
        +      "city",
        +      "state",
        +      "zipcode",
        +      "ntee_code",
        +      "subsection_code",
        +      "ruling_date",
        +      "asset_amount",
        +      "income_amount",
        +      "revenue_amount",
        +      "deductible",
        +      "exempt_status",
        +      "foundation_type",
        +      "bmf_tax_period",
        +      "latest_filing",
        +      "filing_count",
        +      "filing_count_pdf_only",
        +      "data_source",
        +      "propublica_url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database. `upstream_error`: ProPublica API returns a non-JSON body (HTML 500) or network error. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `timeout`: A ProPublica API attempt expires before its response body finishes. `retry_deadline_exceeded`: The complete ProPublica API retry exchange exceeds its deadline. `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database. `upstream_error`: ProPublica API returns a non-JSON body (HTML 500) or network error. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "not_found",
        -  "upstream_error"
        -]New value: +[
        +  "timeout",
        +  "retry_deadline_exceeded",
        +  "not_found",
        +  "upstream_error"
        +]
      • addedOutput schema / properties / filing_count_pdf_only
        Added value: +{
        +  "description": "Total PDF-only filings without extracted financial data. Use nonprofit_get_filings for their PDF links.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / latest_filing / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "form_type": {
        -        "description": "IRS form type filed.",
        -        "enum": [
        -          "990",
        -          "990-EZ",
        -          "990-PF"
        -        ],
        -        "type": "string"
        -      },
        -      "net_assets": {
        -        "description": "Net assets/fund balances (end of year) in USD. From totnetassetend. Null when not extracted.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "pdf_url": {
        -        "description": "Source Form 990 PDF link. Null for some IRS processing batches — check filings via nonprofit_get_filings.",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tax_prd_yr": {
        -        "description": "Fiscal year of this filing (e.g., 2023). NOT the current year — data lags 1–2 years.",
        -        "type": "number"
        -      },
        -      "total_assets": {
        -        "description": "Total assets (end of year) in USD. Null when not extracted.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "total_expenses": {
        -        "description": "Total expenses in USD. Null when not extracted.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "total_liabilities": {
        -        "description": "Total liabilities (end of year) in USD. Null when not extracted.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "total_revenue": {
        -        "description": "Total revenue in USD. Null when not extracted.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      }
        -    },
        -    "required": [
        -      "tax_prd_yr",
        -      "form_type",
        -      "total_revenue",
        -      "total_expenses",
        -      "total_assets",
        -      "total_liabilities",
        -      "net_assets",
        -      "pdf_url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "form_type": {
        +        "description": "IRS form type filed.",
        +        "enum": [
        +          "990",
        +          "990-EZ",
        +          "990-PF"
        +        ],
        +        "type": "string"
        +      },
        +      "net_assets": {
        +        "description": "Net assets/fund balances (end of year) in USD. From totnetassetend (990), totnetassetsend (990-EZ), or tfundnworth (990-PF). Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pdf_url": {
        +        "description": "Source Form 990 PDF link. Null for some IRS processing batches — check filings via nonprofit_get_filings.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tax_prd_yr": {
        +        "description": "Fiscal year of this filing (e.g., 2023). NOT the current year — data lags 1–2 years.",
        +        "type": "number"
        +      },
        +      "total_assets": {
        +        "description": "Total assets (end of year) in USD. Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "total_expenses": {
        +        "description": "Total expenses in USD. Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "total_liabilities": {
        +        "description": "Total liabilities (end of year) in USD. Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "total_revenue": {
        +        "description": "Total revenue in USD. Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "tax_prd_yr",
        +      "form_type",
        +      "total_revenue",
        +      "total_expenses",
        +      "total_assets",
        +      "total_liabilities",
        +      "net_assets",
        +      "pdf_url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Removednonprofit_search
    • Addednonprofit_search_organizations
  2. 3 tool updates
    • Changednonprofit_get_filings26 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database `upstream_error`: ProPublica API returns a non-JSON body or network error Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database. `upstream_error`: ProPublica API returns a non-JSON body or network error. Other values are possible when a failure originates below the handler."
      • removedOutput schema / properties / filings / items / properties / contributions_and_grants / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / contributions_and_grants / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / filings / items / properties / executive_compensation / properties / amount / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / executive_compensation / properties / amount / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / filings / items / properties / investment_income / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / investment_income / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / filings / items / properties / net_assets / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / net_assets / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / filings / items / properties / pdf_url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / pdf_url / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / filings / items / properties / program_expense_ratio / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "fundraising_expenses": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Professional fundraising fees (profndraising) in USD. Null when not reported."
        -      },
        -      "management_compensation": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Officer/director/trustee compensation (compnsatncurrofcr) in USD. Null when not reported."
        -      },
        -      "note": {
        -        "description": "Methodology note naming the source of the functional allocation.",
        -        "type": "string"
        -      },
        -      "other_salaries": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Other salaries and wages (othrsalwages) in USD. Null when not reported."
        -      },
        -      "program_expenses": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Program-service expenses in USD — Form 990 Part IX column (B), line 25."
        -      },
        -      "ratio": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Program-service expenses divided by total functional expenses, as a decimal 0.0–1.0. Always null against the current data source, which reports no program-service expense total."
        -      },
        -      "total_expenses": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total functional expenses in USD — Form 990 Part IX column (A). From totfuncexpns."
        -      }
        -    },
        -    "required": [
        -      "ratio",
        -      "program_expenses",
        -      "total_expenses",
        -      "management_compensation",
        -      "other_salaries",
        -      "fundraising_expenses",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "fundraising_expenses": {
        +        "description": "Professional fundraising fees (profndraising) in USD. Null when not reported.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "management_compensation": {
        +        "description": "Officer/director/trustee compensation (compnsatncurrofcr) in USD. Null when not reported.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "note": {
        +        "description": "Methodology note naming the source of the functional allocation.",
        +        "type": "string"
        +      },
        +      "other_salaries": {
        +        "description": "Other salaries and wages (othrsalwages) in USD. Null when not reported.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "program_expenses": {
        +        "description": "Program-service expenses in USD — Form 990 Part IX column (B), line 25.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "ratio": {
        +        "description": "Program-service expenses divided by total functional expenses, as a decimal 0.0–1.0. Always null against the current data source, which reports no program-service expense total.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "total_expenses": {
        +        "description": "Total functional expenses in USD — Form 990 Part IX column (A). From totfuncexpns.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "ratio",
        +      "program_expenses",
        +      "total_expenses",
        +      "management_compensation",
        +      "other_salaries",
        +      "fundraising_expenses",
        +      "note"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / filings / items / properties / program_service_revenue / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / program_service_revenue / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / filings / items / properties / total_assets / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / total_assets / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / filings / items / properties / total_expenses / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / total_expenses / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / filings / items / properties / total_liabilities / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / total_liabilities / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / filings / items / properties / total_revenue / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / total_revenue / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / filings / items / properties / updated / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / updated / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / filings_pdf_only / items / properties / pdf_url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings_pdf_only / items / properties / pdf_url / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changednonprofit_get_organization32 fields changed
      • removedOutput schema / properties / address / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / address / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / asset_amount / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / asset_amount / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / bmf_tax_period / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / bmf_tax_period / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / city / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / city / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / deductible / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / deductible / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database `upstream_error`: ProPublica API returns a non-JSON body (HTML 500) or network error Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database. `upstream_error`: ProPublica API returns a non-JSON body (HTML 500) or network error. Other values are possible when a failure originates below the handler."
      • removedOutput schema / properties / exempt_status / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / exempt_status / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / foundation_type / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / foundation_type / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / income_amount / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / income_amount / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / latest_filing / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "form_type": {
        -        "description": "IRS form type filed.",
        -        "enum": [
        -          "990",
        -          "990-EZ",
        -          "990-PF"
        -        ],
        -        "type": "string"
        -      },
        -      "net_assets": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Net assets/fund balances (end of year) in USD. From totnetassetend. Null when not extracted."
        -      },
        -      "pdf_url": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Source Form 990 PDF link. Null for some IRS processing batches — check filings via nonprofit_get_filings."
        -      },
        -      "tax_prd_yr": {
        -        "description": "Fiscal year of this filing (e.g., 2023). NOT the current year — data lags 1–2 years.",
        -        "type": "number"
        -      },
        -      "total_assets": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total assets (end of year) in USD. Null when not extracted."
        -      },
        -      "total_expenses": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total expenses in USD. Null when not extracted."
        -      },
        -      "total_liabilities": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total liabilities (end of year) in USD. Null when not extracted."
        -      },
        -      "total_revenue": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total revenue in USD. Null when not extracted."
        -      }
        -    },
        -    "required": [
        -      "tax_prd_yr",
        -      "form_type",
        -      "total_revenue",
        -      "total_expenses",
        -      "total_assets",
        -      "total_liabilities",
        -      "net_assets",
        -      "pdf_url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "form_type": {
        +        "description": "IRS form type filed.",
        +        "enum": [
        +          "990",
        +          "990-EZ",
        +          "990-PF"
        +        ],
        +        "type": "string"
        +      },
        +      "net_assets": {
        +        "description": "Net assets/fund balances (end of year) in USD. From totnetassetend. Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pdf_url": {
        +        "description": "Source Form 990 PDF link. Null for some IRS processing batches — check filings via nonprofit_get_filings.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tax_prd_yr": {
        +        "description": "Fiscal year of this filing (e.g., 2023). NOT the current year — data lags 1–2 years.",
        +        "type": "number"
        +      },
        +      "total_assets": {
        +        "description": "Total assets (end of year) in USD. Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "total_expenses": {
        +        "description": "Total expenses in USD. Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "total_liabilities": {
        +        "description": "Total liabilities (end of year) in USD. Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "total_revenue": {
        +        "description": "Total revenue in USD. Null when not extracted.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "tax_prd_yr",
        +      "form_type",
        +      "total_revenue",
        +      "total_expenses",
        +      "total_assets",
        +      "total_liabilities",
        +      "net_assets",
        +      "pdf_url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / ntee_code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ntee_code / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / revenue_amount / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / revenue_amount / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / ruling_date / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ruling_date / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sort_name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / sort_name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / state / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / state / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / subsection_code / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / subsection_code / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / zipcode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / zipcode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changednonprofit_search17 fields changed
      • removedOutput schema / properties / active_filters / properties / ntee_category / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / active_filters / properties / ntee_category / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / active_filters / properties / state / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / active_filters / properties / state / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / active_filters / properties / subsection_code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / active_filters / properties / subsection_code / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_state`: The state filter is not a US state, territory, or military postal code (or ZZ for foreign entities) `pagination_ceiling`: The requested page is at or beyond ProPublica's 10,000-result offset ceiling `upstream_error`: ProPublica API returns a 500 or network error Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_state`: The state filter is not a US state, territory, or military postal code (or ZZ for foreign entities). `pagination_ceiling`: The requested page is at or beyond ProPublica's 10,000-result offset ceiling. `upstream_error`: ProPublica API returns a 500 or network error. Other values are possible when a failure originates below the handler."
      • removedOutput schema / properties / organizations / items / properties / city / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / organizations / items / properties / city / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / organizations / items / properties / ntee_code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / organizations / items / properties / ntee_code / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / organizations / items / properties / state / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / organizations / items / properties / state / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / organizations / items / properties / sub_name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / organizations / items / properties / sub_name / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / organizations / items / properties / subseccd / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / organizations / items / properties / subseccd / type
        Added value: +[
        +  "number",
        +  "null"
        +]
  3. 3 tool updates
    • Changednonprofit_get_filings6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "ein",
        +      "name",
        +      "filings",
        +      "filings_pdf_only",
        +      "total_filings_with_data",
        +      "total_filings_pdf_only",
        +      "data_source",
        +      "propublica_url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database `upstream_error`: ProPublica API returns a non-JSON body or network error Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "upstream_error"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "ein",
        -  "name",
        -  "filings",
        -  "filings_pdf_only",
        -  "total_filings_with_data",
        -  "total_filings_pdf_only",
        -  "data_source",
        -  "propublica_url"
        -]
    • Changednonprofit_get_organization6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "ein",
        +      "strein",
        +      "name",
        +      "sort_name",
        +      "address",
        +      "city",
        +      "state",
        +      "zipcode",
        +      "ntee_code",
        +      "subsection_code",
        +      "ruling_date",
        +      "asset_amount",
        +      "income_amount",
        +      "revenue_amount",
        +      "deductible",
        +      "exempt_status",
        +      "foundation_type",
        +      "bmf_tax_period",
        +      "latest_filing",
        +      "filing_count",
        +      "data_source",
        +      "propublica_url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The EIN does not correspond to a known organization in the Nonprofit Explorer database `upstream_error`: ProPublica API returns a non-JSON body (HTML 500) or network error Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "upstream_error"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "ein",
        -  "strein",
        -  "name",
        -  "sort_name",
        -  "address",
        -  "city",
        -  "state",
        -  "zipcode",
        -  "ntee_code",
        -  "subsection_code",
        -  "ruling_date",
        -  "asset_amount",
        -  "income_amount",
        -  "revenue_amount",
        -  "deductible",
        -  "exempt_status",
        -  "foundation_type",
        -  "bmf_tax_period",
        -  "latest_filing",
        -  "filing_count",
        -  "data_source",
        -  "propublica_url"
        -]
    • Changednonprofit_search6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "total_results",
        +      "num_pages",
        +      "cur_page",
        +      "per_page",
        +      "page_offset",
        +      "organizations",
        +      "active_filters",
        +      "data_source"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `invalid_state`: The state filter is not a US state, territory, or military postal code (or ZZ for foreign entities) `pagination_ceiling`: The requested page is at or beyond ProPublica's 10,000-result offset ceiling `upstream_error`: ProPublica API returns a 500 or network error Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "invalid_state",
        +            "pagination_ceiling",
        +            "upstream_error"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "total_results",
        -  "num_pages",
        -  "cur_page",
        -  "per_page",
        -  "page_offset",
        -  "organizations",
        -  "active_filters",
        -  "data_source"
        -]
  4. 1 tool update
    • Changednonprofit_get_filings5 fields changed
      • addedOutput schema / properties / filings / items / properties / executive_compensation / additionalProperties
        Added value: +false
      • removedOutput schema / properties / filings / items / properties / executive_compensation / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "amount": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total executive compensation in USD. Null when not reported."
        -      },
        -      "field_name": {
        -        "description": "Source API field name for transparency (compnsatncurrofcr or compofficers).",
        -        "type": "string"
        -      },
        -      "form_type": {
        -        "description": "Form type this compensation field is sourced from.",
        -        "type": "string"
        -      },
        -      "note": {
        -        "description": "Plain-English description of what this field covers and where to find per-officer detail.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "amount",
        -      "field_name",
        -      "form_type",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / filings / items / properties / executive_compensation / properties
        Added value: +{
        +  "amount": {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "description": "Total executive compensation in USD. Null when not reported."
        +  },
        +  "field_name": {
        +    "description": "Source API field the amount was read from — compnsatncurrofcr on 990 and 990-EZ, compofficers on 990-PF.",
        +    "enum": [
        +      "compnsatncurrofcr",
        +      "compofficers"
        +    ],
        +    "type": "string"
        +  },
        +  "form_type": {
        +    "description": "Form type this compensation field is sourced from.",
        +    "enum": [
        +      "990",
        +      "990-EZ",
        +      "990-PF"
        +    ],
        +    "type": "string"
        +  },
        +  "note": {
        +    "description": "Plain-English description of what this field covers and where to find per-officer detail.",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / filings / items / properties / executive_compensation / required
        Added value: +[
        +  "amount",
        +  "field_name",
        +  "form_type",
        +  "note"
        +]
      • addedOutput schema / properties / filings / items / properties / executive_compensation / type
        Added value: +"object"
  5. 3 tool updates
    • Changednonprofit_get_filings3 fields changed
      • changedOutput schema / properties / filings / items / properties / program_expense_ratio / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "fundraising_expenses": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Professional fundraising fees (profndraising) in USD. Null when not reported."
        -      },
        -      "management_compensation": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Officer/director/trustee compensation (compnsatncurrofcr) in USD. Null when not reported."
        -      },
        -      "note": {
        -        "description": "Methodology note explaining the computation and its limitations.",
        -        "type": "string"
        -      },
        -      "other_salaries": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Other salaries and wages (othrsalwages) in USD. Null when not reported."
        -      },
        -      "program_expenses": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Computed program expenses (total − officer comp − other wages − fundraising) in USD."
        -      },
        -      "ratio": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Program expense ratio as decimal 0.0–1.0. Null if inputs insufficient."
        -      },
        -      "total_expenses": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total functional expenses (denominator) in USD. From totfuncexpns."
        -      }
        -    },
        -    "required": [
        -      "ratio",
        -      "program_expenses",
        -      "total_expenses",
        -      "management_compensation",
        -      "other_salaries",
        -      "fundraising_expenses",
        -      "note"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "fundraising_expenses": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Professional fundraising fees (profndraising) in USD. Null when not reported."
        +      },
        +      "management_compensation": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Officer/director/trustee compensation (compnsatncurrofcr) in USD. Null when not reported."
        +      },
        +      "note": {
        +        "description": "Methodology note naming the source of the functional allocation.",
        +        "type": "string"
        +      },
        +      "other_salaries": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Other salaries and wages (othrsalwages) in USD. Null when not reported."
        +      },
        +      "program_expenses": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Program-service expenses in USD — Form 990 Part IX column (B), line 25."
        +      },
        +      "ratio": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Program-service expenses divided by total functional expenses, as a decimal 0.0–1.0. Always null against the current data source, which reports no program-service expense total."
        +      },
        +      "total_expenses": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Total functional expenses in USD — Form 990 Part IX column (A). From totfuncexpns."
        +      }
        +    },
        +    "required": [
        +      "ratio",
        +      "program_expenses",
        +      "total_expenses",
        +      "management_compensation",
        +      "other_salaries",
        +      "fundraising_expenses",
        +      "note"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / filings / items / properties / program_expense_ratio / description
        Previous value: -"Program-expense ratio with inputs. Null for 990-PF (different field set). Approximation — consult the source PDF for the full expense schedule."New value: +"Always null against the current data source. ProPublica returns no Form 990 Part IX column (B) program-service expense total, and the functional allocation across program, management, and fundraising cannot be reconstructed from the fields it does return. Read Part IX of the filing at pdf_url for the split."
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Present 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.",
        +  "type": "string"
        +}
    • Changednonprofit_get_organization10 fields changed
      • changedOutput schema / properties / asset_amount / description
        Previous value: -"Most recent IRS BMF total assets in USD. Null when not reported."New value: +"Most recent IRS BMF total assets in USD. Null when not on record."
      • addedOutput schema / properties / bmf_tax_period
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Tax 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."
        +}
      • addedOutput schema / properties / deductible
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Whether 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."
        +}
      • addedOutput schema / properties / exempt_status
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "IRS 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."
        +}
      • addedOutput schema / properties / foundation_type
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "IRS 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."
        +}
      • changedOutput schema / properties / income_amount / description
        Previous value: -"Most recent IRS BMF total income in USD. Null when not reported."New value: +"Most recent IRS BMF total income in USD. Null when not on record."
      • changedOutput schema / properties / revenue_amount / description
        Previous value: -"Most recent IRS BMF total revenue in USD. Null when not reported."New value: +"Most recent IRS BMF total revenue in USD. Null when not on record."
      • changedOutput schema / properties / sort_name / description
        Previous value: -"Alternate or subtitle name from the org record. Null when absent."New value: +"IRS 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."
      • changedOutput schema / properties / subsection_code / description
        Previous value: -"501(c) subsection number (e.g., 3 = public charity). Null when not classified."New value: +"501(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."
      • changedOutput schema / required
        Previous value: -[
        -  "ein",
        -  "strein",
        -  "name",
        -  "sort_name",
        -  "address",
        -  "city",
        -  "state",
        -  "zipcode",
        -  "ntee_code",
        -  "subsection_code",
        -  "ruling_date",
        -  "asset_amount",
        -  "income_amount",
        -  "revenue_amount",
        -  "latest_filing",
        -  "filing_count",
        -  "data_source",
        -  "propublica_url"
        -]New value: +[
        +  "ein",
        +  "strein",
        +  "name",
        +  "sort_name",
        +  "address",
        +  "city",
        +  "state",
        +  "zipcode",
        +  "ntee_code",
        +  "subsection_code",
        +  "ruling_date",
        +  "asset_amount",
        +  "income_amount",
        +  "revenue_amount",
        +  "deductible",
        +  "exempt_status",
        +  "foundation_type",
        +  "bmf_tax_period",
        +  "latest_filing",
        +  "filing_count",
        +  "data_source",
        +  "propublica_url"
        +]
    • Changednonprofit_search5 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Keyword search string. Searched against org name, alternate name, 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."New value: +"Keyword 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."
      • changedInput schema / properties / subsection_code / description
        Previous value: -"501(c) subsection code. \"3\" = public charity (most common — donations tax-deductible), \"4\" = social welfare org, \"6\" = business league/trade association, \"92\" = 4947(a)(1) nonexempt charitable trust. Filters by tax status, not sector."New value: +"501(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."
      • changedOutput schema / properties / notice / description
        Previous value: -"Present when the page carried no organizations — distinguishes a zero-match query from a page past the end of the result set, and names the next call."New value: +"Present 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."
      • changedOutput schema / properties / organizations / items / properties / sub_name / description
        Previous value: -"Alternate or subtitle name, or chapter identifier. Null when absent."New value: +"The legal name with the IRS Business Master File secondary name line appended — a division, service-center, or chapter identifier, not a separate trade name the org operates under. Null when the org has no secondary name line."
      • changedOutput schema / properties / organizations / items / properties / subseccd / description
        Previous value: -"501(c) subsection code (e.g., 3 = public charity). Null when not classified."New value: +"501(c) subsection code (e.g., 3 = charitable organization). Null when not classified."
  6. 1 tool update
    • Changednonprofit_search6 fields changed
      • changedInput schema / properties / state / description
        Previous value: -"Two-letter US state abbreviation (e.g., \"WA\", \"NY\"). Use \"ZZ\" for foreign entities. Restricts results to orgs headquartered in that state."New value: +"Two-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."
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Present when the page carried no organizations — distinguishes a zero-match query from a page past the end of the result set, and names the next call.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / num_pages / description
        Previous value: -"Total pages available (total_results / 25, ceiling)."New value: +"Total pages available (total_results / 25, ceiling). The last valid page is num_pages - 1."
      • addedOutput schema / properties / page_offset
        Added value: +{
        +  "description": "Zero-indexed offset of the first result on this page. Requests are refused once this reaches 10,000.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / per_page
        Added value: +{
        +  "description": "Results per page applied by the API (25).",
        +  "type": "number"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "total_results",
        -  "num_pages",
        -  "cur_page",
        -  "organizations",
        -  "active_filters",
        -  "data_source"
        -]New value: +[
        +  "total_results",
        +  "num_pages",
        +  "cur_page",
        +  "per_page",
        +  "page_offset",
        +  "organizations",
        +  "active_filters",
        +  "data_source"
        +]
  7. 3 tool updates
    • First observednonprofit_get_filings
    • First observednonprofit_get_organization
    • First observednonprofit_search

Related MCP Connectors

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
    A
    maintenance
    MCP server for US government transparency data (congressional trades, federal contracts, campaign finance, lobbying, regulations) with per-call paid access via x402 USDC.
    10
    44 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.