990.tax nonprofit lookup
tax.990/nonprofit-lookup990.taxstreamable-httpv1.0.0Scanned
IRS records on US nonprofits: exempt status, revocations, Form 990 financials, due dates, stats.
8 tools: 2 change things and 6 only read.
- Reads private data · 2
- Reads text others write · 0
- Can send data out · 0
- 1 finding
Anlyon alternative
2 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
8 tools
Changes things 2Claude Code: ask
explain_irs_reject_codePlain-English meaning of an IRS Modernized e-File business rule reject code for Forms 990-N, 990-EZ, 990 and 8868 (e.g.1 finding
Why it is in this group
- The name "explain_irs_reject_code" says "explain": a word for reading.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "explain_irs_reject_code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "explain_irs_reject_code" says "explain": a word for reading.
Description, as the server wrote it Plain-English meaning of an IRS Modernized e-File business rule reject code for Forms 990-N, 990-EZ, 990 and 8868 (e.g. R0000-922-01), the IRS rule text, and how to fix it.
Annotations the server declares
- title: Explain an IRS e-file reject code
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
which_990_formWhich annual return applies under the IRS thresholds: 990-N (gross receipts normally $50,000 or less), 990-EZ (under $200,000 and assets under $500,000), 990, 990-PF, or none (chur…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Which annual return applies under the IRS thresholds: 990-N (gross receipts normally $50,000 or less), 990-EZ (under $200,000 and assets under $500,000), 990, 990-PF, or none (churches, group-return members). With an EIN, missing amounts come from the IRS Business Master File. Cites the IRS rule.
Annotations the server declares
- title: Which Form 990 an organization files
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 6Show 6 read-only tools
check_exempt_statusWhether the IRS automatically revoked an organization's tax exemption (revocation, posting and reinstatement dates), and which of its last three ended accounting years have no retu…Reads private dataNo findings
Why it is in this group
- The name "check_exempt_status" says "status": a word for reading.
What it can reach
- private-dataThe description's first sentence says "file": it reads files.
Description, as the server wrote it Whether the IRS automatically revoked an organization's tax exemption (revocation, posting and reinstatement dates), and which of its last three ended accounting years have no return on the IRS public files. Three consecutive missing years revoke the exemption (IRC 6033(j)).
Annotations the server declares
- title: Check tax-exempt status and missing years
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_filing_due_dateDue date of a Form 990-N, 990-EZ, 990 or 990-PF for a fiscal year end and tax year, moved off weekends and legal holidays, the Form 8868 extended due date (none for the 990-N), day…No findings
Why it is in this group
- The name "get_filing_due_date" says "get": a word for reading.
Description, as the server wrote it Due date of a Form 990-N, 990-EZ, 990 or 990-PF for a fiscal year end and tax year, moved off weekends and legal holidays, the Form 8868 extended due date (none for the 990-N), days remaining, and late-filing consequences. Give the fiscal year end month or an EIN. Tax year = the calendar year the accounting year begins in; default is the latest ended year.
Annotations the server declares
- title: Form 990 due date
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_nonprofit_profileOne organization's IRS record: exempt status, 501(c) subsection, NTEE category, ruling year, deductibility (Publication 78), fiscal year end, which return it files, last filing, an…Reads private dataNo findings
Why it is in this group
- The name "get_nonprofit_profile" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "file": it reads files.
Description, as the server wrote it One organization's IRS record: exempt status, 501(c) subsection, NTEE category, ruling year, deductibility (Publication 78), fiscal year end, which return it files, last filing, and the latest e-filed financial summary. Optional sections: financials (up to 5 years of revenue, expenses, assets from e-filed Form 990/990-EZ/990-PF), officers (up to 15 officers, directors and key employees with compensation from the latest e-filed return), filing_history (e-Postcards and e-filed returns).
Annotations the server declares
- title: Get a nonprofit profile
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_nonprofit_statsCounts and totals for US tax-exempt organizations from IRS public data: national, one state, or one NTEE major category (A-Z).No findings
Why it is in this group
- The name "get_nonprofit_stats" says "get": a word for reading.
Description, as the server wrote it Counts and totals for US tax-exempt organizations from IRS public data: national, one state, or one NTEE major category (A-Z). Active organizations, 990-N filers, revocations, and revenue, assets, employees and pay from e-filed returns; national adds e-Postcard filers by year, revocations by month and organizations by category.
Annotations the server declares
- title: US nonprofit statistics
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_top_nonprofitsRanked lists from e-filed Form 990 returns, national (25) or per state (10): highest-paid executives, largest by revenue, most money raised, richest by net assets, biggest employer…No findings
Why it is in this group
- The name "get_top_nonprofits" says "get": a word for reading.
Description, as the server wrote it Ranked lists from e-filed Form 990 returns, national (25) or per state (10): highest-paid executives, largest by revenue, most money raised, richest by net assets, biggest employers.
Annotations the server declares
- title: Nonprofit rankings
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_nonprofitsFind US tax-exempt organizations by name or EIN in IRS records.No findings
Why it is in this group
- The name "search_nonprofits" says "search": a word for reading.
Description, as the server wrote it Find US tax-exempt organizations by name or EIN in IRS records. Returns up to 10 matches with EIN, city, state, exempt status (active, revoked, reinstated, terminated) and the latest form filed. Use the EIN with the other tools.
Annotations the server declares
- title: Search US nonprofits
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged untrusted-input or outbound.
- Reads private data2
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write0
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
The server marks "explain_irs_reject_code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "explain_irs_reject_code" says "explain": a word for reading.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http nonprofit-lookup https://990.tax/mcpclaude mcp add --transport http nonprofit-lookup https://990.tax/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__nonprofit-lookup__search_nonprofits",
"mcp__nonprofit-lookup__get_nonprofit_profile",
"mcp__nonprofit-lookup__check_exempt_status",
"mcp__nonprofit-lookup__get_filing_due_date",
"mcp__nonprofit-lookup__get_nonprofit_stats",
"mcp__nonprofit-lookup__get_top_nonprofits"
],
"ask": [
"mcp__nonprofit-lookup__which_990_form",
"mcp__nonprofit-lookup__explain_irs_reject_code"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as nonprofit-lookup. Review it before you use it.
Capability tags behind 2 rules
- mcp__nonprofit-lookup__get_nonprofit_profile private-data
- mcp__nonprofit-lookup__check_exempt_status private-data
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/tax.990/nonprofit-lookup/verify?hash=d5143510d07b28a646f0085b4e4882e677045a18ae593bd742e274a81b64bb3f" | jq -e '.changed == false'Pinned hash d5143510d07b, from Nov 3, 2026, 18:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/tax.990/nonprofit-lookup/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/tax.990/nonprofit-lookup)Source: MCP Registry. Synced Nov 3, 2026, 19:17 UTC.