# IRS Open Data MCP Server (`rl1987/irs-data-mcp`) Actor

MCP server exposing IRS.gov open-data search and lookup tools: tax-exempt org search, FATCA FFI list, excise tax registration status, TAC office locator, e-file provider locator, VITA/TCE site locator, tax form catalog search, and EO BMF bulk extract lookup.

- **URL**: https://apify.com/rl1987/irs-data-mcp.md
- **Developed by:** [R.L.](https://apify.com/rl1987) (community)
- **Categories:** MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 price for completing a tool calls

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### IRS Open Data MCP Server

Eight IRS.gov search tools, zero manual browsing: **IRS Open Data MCP Server** turns [Tax Exempt Organization Search](https://apps.irs.gov/app/eos/), the [FATCA FFI List](https://apps.irs.gov/app/fatcaFfiList/flu.xhtml), [Excise Tax registration status](https://apps.irs.gov/app/exciseTax/), the [Taxpayer Assistance Center Locator](https://apps.irs.gov/app/office-locator/), the [Authorized e-file Provider Locator](https://www.irs.gov/e-file-providers/authorized-irs-e-file-provider-locator-service-for-tax-professionals), the [VITA/TCE Site Locator](https://freetaxassistance.for.irs.gov/s/sitelocator), the [Tax Mat form catalog](https://apps.irs.gov/app/taxmat/form-search/), and the [EO Business Master File extract](https://www.irs.gov/charities-non-profits/exempt-organizations-business-master-file-extract-eo-bmf) into MCP tools any AI agent can call directly. Ask for "is this nonprofit's EIN still tax-exempt" or "nearest free VITA tax prep site to 90210" in plain language and get back real, structured results — not a screen-scrape of a form you have to fill in yourself.

Each tool covers that source's real search surface — EIN/name lookup, GIIN/country filters, ZIP/radius search, state/NTEE filters — reverse-engineered from the actual site (the real JSON API behind the page where IRS has one, IRS's own published bulk CSV/delimited files where a stable API doesn't exist). No headless browser required for seven of the eight tools, so lookups are fast and cheap to run.

Because it runs on Apify in [Standby mode](https://docs.apify.com/platform/actors/development/programming-interface/standby), it behaves like a normal always-on HTTP MCP endpoint — no cold start per query — plus you get Apify's monitoring, scheduling, and proxy infrastructure for free if you need it.

#### Why use IRS Open Data MCP Server?

- **One connection, eight IRS data sources.** Skip eight different forms and eight different query languages — point an agent at a single MCP endpoint instead.
- **Due diligence and compliance workflows.** Verify a nonprofit's tax-exempt status, check a counterparty's excise tax registration, or confirm FATCA FFI status, all from a chat or agent workflow.
- **Taxpayer-facing assistants.** Help users find the nearest IRS office, a free VITA tax prep site, or an authorized e-file provider near them.
- **Research and data enrichment.** Pull structured nonprofit records at scale from the EO BMF bulk extract.

#### How to use IRS Open Data MCP Server

1. Add it to your MCP client as an HTTP/Streamable-HTTP server:

   ```
   claude mcp add --transport http irs-data \
     https://rl1987--irs-data-mcp.apify.actor/mcp \
     --header "Authorization: Bearer $APIFY_TOKEN"
   ```

   The token is your own [Apify API token](https://console.apify.com/account/integrations) (Console → Settings → Integrations), not the Actor owner's — export it as `$APIFY_TOKEN` in your shell, or substitute your own.

2. Verify the connection and tool count:

   ```
   claude mcp list
   # or, inside a Claude Code session:
   /mcp
   ```

3. Ask your agent to search, e.g. "Use irs-data to look up the EIN for the American Red Cross" or "Find VITA tax prep sites near 90210 via find\_vita\_tce\_free\_tax\_prep\_site."

A team can commit a `.mcp.json` with just the URL (no token) to a shared repo; each teammate runs `claude mcp add --scope local` once with their own token.

#### Tools

| Tool | Source | Covers |
| --- | --- | --- |
| `search_tax_exempt_organizations` | [TEOS](https://apps.irs.gov/app/eos/) | EIN/name search across Pub 78, Auto-Revocation List, Determination Letters, Form 990-N, copies of returns |
| `search_fatca_ffi_list` | [FATCA FFI List](https://apps.irs.gov/app/fatcaFfiList/flu.xhtml) | GIIN, FFI name, country filters |
| `check_excise_tax_registration` | [Excise Tax (Form 637)](https://apps.irs.gov/app/exciseTax/) | registration number + activity letter status check |
| `find_irs_taxpayer_assistance_center` | [TAC Locator](https://apps.irs.gov/app/office-locator/) | address/city-state/ZIP search, radius, office hours/services |
| `find_authorized_efile_provider` | [e-file Provider Locator](https://www.irs.gov/e-file-providers/authorized-irs-e-file-provider-locator-service-for-tax-professionals) | ZIP code and/or state search, provider service type |
| `find_vita_tce_free_tax_prep_site` | [VITA/TCE Site Locator](https://freetaxassistance.for.irs.gov/s/sitelocator) | ZIP + radius, language, virtual sites, hours, appointment info |
| `search_irs_tax_forms_catalog` | [Tax Mat](https://apps.irs.gov/app/taxmat/form-search/) | form number/title/keyword search across the paper form catalog |
| `get_eo_business_master_file_records` | [EO BMF](https://www.irs.gov/charities-non-profits/exempt-organizations-business-master-file-extract-eo-bmf) | per-state bulk extract, filterable by EIN, name substring, NTEE code |

Every tool returns JSON with the matched records and, where the source provides one, a link back to the record's IRS.gov detail page — no PDFs or bulk archives are pre-downloaded on your behalf.

#### Example output (`search_tax_exempt_organizations`, abbreviated)

```json
{
  "database": "all",
  "search_by": "name",
  "search_term": "red cross",
  "matched": 234,
  "truncated": true,
  "records": [
    {
      "ein": "941322159",
      "name": "American Red Cross",
      "dba": null,
      "city": "Washington",
      "state": "DC",
      "country": "US",
      "types": "CHARITIES"
    }
  ]
}
```

#### Pricing / cost

This Actor uses Apify's [Pay Per Event](https://docs.apify.com/platform/actors/publishing/monetize#pay-per-event-pricing-model) model — see [`.actor/pay_per_event.json`](.actor/pay_per_event.json) for the configured `tool-call` price. You're charged once per completed tool call, not per underlying HTTP request the tool makes internally, and never for a failed call.

#### Tips

- `get_eo_business_master_file_records` and `search_fatca_ffi_list` cache their downloaded bulk files in memory for the life of the container — the first call against a new state (or the FATCA list) is slower than subsequent ones.
- `find_vita_tce_free_tax_prep_site` replays a Salesforce Lightning API call pinned to the site's current deployment build; if IRS redeploys that Experience Cloud site, this tool may need updating.
- Most tools accept a `limit` parameter — keep it modest for faster responses, since several sources return large candidate sets before filtering.

#### FAQ, disclaimers, and support

All data comes directly from public, unauthenticated IRS.gov endpoints and bulk data files — this Actor performs no scraping of restricted or robots.txt-disallowed paths (the e-file provider locator, for instance, deliberately uses IRS's published bulk file instead of the disallowed live search endpoint). IRS.gov backend APIs and Salesforce Lightning internals are undocumented and can change without notice; if a tool starts failing, please open an issue. This is an unofficial, independently built integration and is not affiliated with or endorsed by the IRS.

### Documentation reference

- [Apify SDK for Python documentation](https://docs.apify.com/sdk/python)
- [Apify Platform documentation](https://docs.apify.com/platform)
- [FastMCP documentation](https://gofastmcp.com/getting-started/welcome)
- [Apify MCP server documentation](https://docs.apify.com/platform/integrations/mcp)

### Did you find this useful?

⭐ Rate this actor on Apify! Your feedback helps other users find it and helps us keep improving it.

# Actor input Schema

## Actor input object example

```json
{}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("rl1987/irs-data-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("rl1987/irs-data-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call rl1987/irs-data-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rl1987/irs-data-mcp"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/T40c5vyc7534etJb3/builds/6Av76noI0s5DgUNLE/openapi.json
