io.github.cyanheads/nonprofit-explorer-mcp-server
REMOTE · NONPROFIT-EXPLORER.CASEYJHAND.COM · 2 COMPONENTS · SCANNED AUG 3
MCP server for nonprofit financials via ProPublica — IRS Form 990 data for 1.8M+ nonprofits.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security66
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 3 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability65
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 926 tokens (~308/item across 3 items; 3 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · nonprofit-explorer.caseyjhand.com
claude mcp add --transport http cyanheads-nonprofit-explorer-mcp-server https://nonprofit-explorer.caseyjhand.com/mcp
[mcp_servers.cyanheads-nonprofit-explorer-mcp-server] url = "https://nonprofit-explorer.caseyjhand.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cyanheads-nonprofit-explorer-mcp-server": {
"type": "remote",
"url": "https://nonprofit-explorer.caseyjhand.com/mcp",
"enabled": true
}
}
} openclaw mcp add cyanheads-nonprofit-explorer-mcp-server --url https://nonprofit-explorer.caseyjhand.com/mcp --transport streamable-http
mcp_servers:
cyanheads-nonprofit-explorer-mcp-server:
url: "https://nonprofit-explorer.caseyjhand.com/mcp" {
"mcpServers": {
"cyanheads-nonprofit-explorer-mcp-server": {
"type": "http",
"url": "https://nonprofit-explorer.caseyjhand.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +2
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 63
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://nonprofit-explorer.caseyjhand.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=caseyjhand.com | CN=WE1,O=Google Trust Services,C=US | 7 Jul 2026 | 5 Oct 2026 | ECDSA 256 | ECDSA-SHA256 | 5aad900eb2055a0b0ea55912ec19680c |
| SANs: caseyjhand.com, *.caseyjhand.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
DNSSEC secure
Validation of nonprofit-explorer.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| caseyjhand.com. | present | 2371 | 13 | Verified |
| nonprofit-explorer.caseyjhand.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://nonprofit-explorer.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://nonprofit-explorer.caseyjhand.com/mcp | HTTPS enforced | 301 | https://nonprofit-explorer.caseyjhand.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
nonprofit_get_filings Get Nonprofit Filings ~191
All Form 990 filings for a tax-exempt org by EIN: year-by-year revenue, expenses, assets, program-expense ratio (with inputs shown), executive compensation, and source PDF/XML links. Use for trend analysis, due diligence, and accessing primary 990 documents. The filing year (tax_prd_yr) is the fiscal year of the return — data lags 1–2 years; always cite the year. Program expense ratio is computed as (total_expenses − officer comp − other wages − fundraising) / total_expenses for 990/990-EZ; not available for 990-PF. Also returns filings_pdf_only — older filings with a PDF but no extracted financial data. Data from ProPublica Nonprofit Explorer, sourced from IRS Form 990 filings.
| Name | Type | Req | Description |
|---|---|---|---|
| ein | — | yes | Employer Identification Number. Use nonprofit_search to resolve an org name to its EIN. |
| Name | Type | Req | Description |
|---|---|---|---|
| data_source | string | yes | ProPublica + IRS attribution text. |
| ein | number | yes | Employer Identification Number as integer. |
| filings | array | yes | Filings with extracted financial data, sorted newest first. |
| filings_pdf_only | array | yes | Older filings with a PDF but no extracted financial data. |
| name | string | yes | Legal org name per IRS. |
| propublica_url | string | yes | ProPublica Nonprofit Explorer URL for this org. |
| total_filings_pdf_only | number | yes | Count of PDF-only filings (no extracted data). |
| total_filings_with_data | number | yes | Count of filings with extracted financial data. |
No examples provided.
nonprofit_get_organization Get Nonprofit Organization ~156
Full profile for a single tax-exempt org by EIN: legal name, address, NTEE classification, 501(c) type, IRS ruling date, and a financial snapshot from the most recent Form 990 filing (revenue, expenses, assets, net assets, and the source PDF link). Use nonprofit_search first if you only have an org name — this tool requires an EIN. Data lags 1–2 years; the tax year is shown prominently. Data from ProPublica Nonprofit Explorer, sourced from IRS Form 990 filings.
| Name | Type | Req | Description |
|---|---|---|---|
| ein | — | yes | Employer Identification Number. Accepts integer (530196605) or string with optional hyphen ("53-0196605"). Obtain from nonprofit_search results. |
| Name | Type | Req | Description |
|---|---|---|---|
| address | — | yes | Street address. Null when not on record. |
| asset_amount | — | yes | Most recent IRS BMF total assets in USD. Null when not reported. |
| city | — | yes | City. Null when not on record. |
| data_source | string | yes | ProPublica + IRS attribution text. |
| ein | number | yes | Employer Identification Number as integer. |
| filing_count | number | yes | Total filings with extracted data on record. |
| income_amount | — | yes | Most recent IRS BMF total income in USD. Null when not reported. |
| latest_filing | — | yes | Financial snapshot from the most recent Form 990. Null if no filings_with_data are available. |
| name | string | yes | Legal org name per IRS. |
| ntee_code | — | yes | Full NTEE code (e.g., "E210" = hospital). Null when unclassified. |
| propublica_url | string | yes | ProPublica Nonprofit Explorer URL for this org. |
| revenue_amount | — | yes | Most recent IRS BMF total revenue in USD. Null when not reported. |
| ruling_date | — | yes | ISO date of IRS recognition (e.g., "1946-07"). Null when not on record. |
| sort_name | — | yes | Alternate or subtitle name from the org record. Null when absent. |
| state | — | yes | Two-letter state abbreviation. Null when not on record. |
| strein | string | yes | EIN in "XX-XXXXXXX" format. |
| subsection_code | — | yes | 501(c) subsection number (e.g., 3 = public charity). Null when not classified. |
| zipcode | — | yes | ZIP code. Null when not on record. |
No examples provided.
nonprofit_search Search Nonprofits ~463
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. Supports quoted phrases ("Red Cross"), required terms (+evanston), excluded terms (-dental). Data from ProPublica Nonprofit Explorer, sourced from IRS Form 990 filings.
| Name | Type | Req | Description |
|---|---|---|---|
| ntee_category | string | — | NTEE (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=P… |
| page | integer | — | Zero-indexed page number. 25 results per page. Total pages is in num_pages. Increment to paginate large result sets. |
| query | string | yes | 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 s… |
| state | string | — | Two-letter US state abbreviation (e.g., "WA", "NY"). Use "ZZ" for foreign entities. Restricts results to orgs headquartered in that state. |
| subsection_code | string | — | 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.… |
| Name | Type | Req | Description |
|---|---|---|---|
| active_filters | object | yes | Active filters echoed back for verification. |
| cur_page | number | yes | Current page (zero-indexed). |
| data_source | string | yes | ProPublica + IRS attribution text. |
| num_pages | number | yes | Total pages available (total_results / 25, ceiling). |
| organizations | array | yes | Matching organizations for the current page. |
| total_results | number | yes | Total matching orgs (up to 10,000 — the API ceiling). If 10000, actual count may be higher. |
No examples provided.