Koskamo

990.tax MCP

Provides two Model Context Protocol servers for AI assistants: a free, no-sign-in server to search and retrieve IRS public records for US nonprofits (status, financials, filings), and an OAuth-authenticated server to draft, review, and file Form 990-N returns for small nonprofits.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

990.tax MCP logo, by Digital Tax LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Digital Tax LLC
You need:OAuth sign-in with a 990.tax account
MCP endpoint (Streamable HTTP)
https://990.tax/mcp
Vendor documentation

What its tools do

8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

8 of 8 have a description · 8 of 8 declare behavior hints · 4 of 8 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to 990.tax ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for US nonprofits by name or EIN to retrieve IRS public records
  • Check tax-exempt status and filing history for specific organizations
  • Draft Form 990-N returns for small nonprofits using AI assistance
  • Calculate filing due dates and explain IRS reject codes

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
990.tax 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
8 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Lookups of IRS public records on US tax-exempt organizations (EO Business Master File, e-Postcard 990-N file, automatic revocation list, Publication 78, e-filed Form 990 returns), Form 990-series due dates and form thresholds, and explanations of IRS e-file reject codes. Every result names its IRS source and data date and links the matching 990.tax page. Data comes from IRS public files and can lag the IRS by weeks. 990.tax is a private company, not the IRS; results are information, not tax advice.

Tools

8 advertised

search_nonprofits — Search US nonprofits
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

search_nonprofits input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "Maximum results, 1-10 (default 5)"
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "description": "Organization name (or part of it) or EIN"
    },
    "state": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2,
      "description": "Two-letter US state or territory code, e.g. TX"
    }
  }
}
search_nonprofits annotations
{
  "title": "Search US nonprofits",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_nonprofit_profile — Get a nonprofit profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

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

get_nonprofit_profile input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ein"
  ],
  "properties": {
    "ein": {
      "type": "string",
      "description": "Employer Identification Number, 9 digits, with or without the dash (12-3456789)"
    },
    "include": {
      "type": "array",
      "items": {
        "enum": [
          "financials",
          "officers",
          "filing_history"
        ],
        "type": "string"
      },
      "maxItems": 3,
      "description": "Extra sections to return; leave out for the compact profile"
    }
  }
}
get_nonprofit_profile annotations
{
  "title": "Get a nonprofit profile",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_exempt_status — Check tax-exempt status and missing years
Advertised by the server during the last successful anonymous check.
Advertised read-only

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

check_exempt_status input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ein"
  ],
  "properties": {
    "ein": {
      "type": "string",
      "description": "Employer Identification Number, 9 digits, with or without the dash (12-3456789)"
    }
  }
}
check_exempt_status annotations
{
  "title": "Check tax-exempt status and missing years",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
which_990_form — Which Form 990 an organization files
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

which_990_form input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "ein": {
      "type": "string",
      "description": "Employer Identification Number, 9 digits, with or without the dash (12-3456789)"
    },
    "is_church": {
      "type": "boolean",
      "description": "Church, integrated auxiliary, or convention or association of churches"
    },
    "total_assets": {
      "type": "number",
      "minimum": 0,
      "description": "Total assets at year end, in USD"
    },
    "gross_receipts": {
      "type": "number",
      "minimum": 0,
      "description": "Gross receipts, normally the 3-year average for organizations 3+ years old, in USD"
    },
    "is_private_foundation": {
      "type": "boolean"
    },
    "is_509a3_supporting_org": {
      "type": "boolean",
      "description": "Supporting organization under section 509(a)(3)"
    }
  }
}
which_990_form annotations
{
  "title": "Which Form 990 an organization files",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_filing_due_date — Form 990 due date
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_filing_due_date input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "ein": {
      "type": "string",
      "description": "Employer Identification Number, 9 digits, with or without the dash (12-3456789)"
    },
    "form": {
      "enum": [
        "990",
        "990-N",
        "990-EZ",
        "990-PF"
      ],
      "type": "string",
      "description": "Default 990-N"
    },
    "tax_year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2000
    },
    "fiscal_year_end_month": {
      "type": "integer",
      "maximum": 12,
      "minimum": 1,
      "description": "Month the accounting year ends, 1-12 (12 = December 31)"
    }
  }
}
get_filing_due_date annotations
{
  "title": "Form 990 due date",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_nonprofit_stats — US nonprofit statistics
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_nonprofit_stats input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "scope"
  ],
  "properties": {
    "scope": {
      "enum": [
        "national",
        "state",
        "ntee"
      ],
      "type": "string"
    },
    "state": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2,
      "description": "With scope \"state\""
    },
    "ntee_major": {
      "type": "string",
      "maxLength": 1,
      "minLength": 1,
      "description": "With scope \"ntee\": NTEE major group letter, e.g. B (education)"
    }
  }
}
get_nonprofit_stats annotations
{
  "title": "US nonprofit statistics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_top_nonprofits — Nonprofit rankings
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_top_nonprofits input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "list"
  ],
  "properties": {
    "list": {
      "enum": [
        "highest-paid-nonprofit-executives",
        "largest-nonprofits",
        "top-fundraising-nonprofits",
        "richest-nonprofits",
        "biggest-nonprofit-employers"
      ],
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "Default 10"
    },
    "state": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2,
      "description": "Two-letter US state or territory code, e.g. TX"
    }
  }
}
get_top_nonprofits annotations
{
  "title": "Nonprofit rankings",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
explain_irs_reject_code — Explain an IRS e-file reject code
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

explain_irs_reject_code input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "code"
  ],
  "properties": {
    "code": {
      "type": "string",
      "maxLength": 20,
      "minLength": 5,
      "description": "Reject code, e.g. R0000-922-01"
    }
  }
}
explain_irs_reject_code annotations
{
  "title": "Explain an IRS e-file reject code",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1682 ms
95th percentile latency
1682 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1682 ms · metadata changed · 8 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http 990-tax-mcp https://990.tax/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add 990-tax-mcp --url https://990.tax/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable 990-tax-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "990-tax-mcp": {
      "url": "https://990.tax/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "990-tax-mcp": {
      "type": "streamableHttp",
      "url": "https://990.tax/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start 990-tax-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "990-tax-mcp": {
      "type": "http",
      "url": "https://990.tax/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http 990-tax-mcp https://990.tax/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://990.tax/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "990-tax-mcp": {
      "serverUrl": "https://990.tax/mcp"
    }
  }
}

Let your agent find its tools

Find servers like 990.tax MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run 990.tax MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing