An AI agent can check 1099 files with the IRISfile MCP server. It can convert them to IRIS XML and look up a submission's status. It works with Claude, Cursor and any client that speaks MCP over HTTP.
The server gives an agent four IRISfile tools. The agent can list the forms IRISfile supports. It can check a FIRE or CSV file against the IRS rules. It can convert a clean file to IRIS A2A XML and check where a submission stands.
Filing isn't available through MCP. No tool sends anything to the IRS or takes a payment. You file and pay in the IRISfile dashboard.
https://irisfile.co/mcpAuthorization: Bearer <key> or as an x-api-key header.initialize, notifications/initialized, tools/list and ping work, so clients and directories can list the tools.submission_id.Sign in to IRISfile and click API keys in the top bar, or go to the API keys page.
Type a name for the key, such as the client it is for, and click Create key.
Copy the key. IRISfile shows it once and stores only a fingerprint of it.
To stop a key working, click Revoke on its row, then Confirm revoke.
An account can hold 10 active keys. Each key can read every file in the account, so treat it like a password.
Run this in a terminal. It adds the server for your user with the key in a header.
claude mcp add --transport http --scope user \
irisfile https://irisfile.co/mcp \
--header "Authorization: Bearer $IRISFILE_API_KEY"Open Customize, then Connectors. Click Add, then Add custom connector. Enter the endpoint URL and choose No sign in. Under Request headers, add Authorization with the value Bearer followed by your key.
Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in one project. Cursor reads the key from the IRISFILE_API_KEY environment variable.
{
"mcpServers": {
"irisfile": {
"url": "https://irisfile.co/mcp",
"headers": {
"Authorization": "Bearer ${env:IRISFILE_API_KEY}"
}
}
}
}Clients that take a JSON server list with a type field use this shape.
{
"mcpServers": {
"irisfile": {
"type": "http",
"url": "https://irisfile.co/mcp",
"headers": {
"Authorization": "Bearer ${IRISFILE_API_KEY}"
}
}
}
}irisfile_ supported_ formsirisfile_ validatecontent (the file text) with format, fire or csv; or the submission_id of a file in your account.irisfile_ convertirisfile_validate.irisfile_ submission_ statussubmission_id of a file in your account.Each call returns up to 200 errors and warnings. The dashboard keeps the full list for a stored file.
Checking and converting are free through MCP, as they are in the dashboard. The XML download link needs a license for the file’s tax year. irisfile_convert returns it only when your account holds that license.
Without a license, the result says license_required. It gives the tax years, the license price and a link to the dashboard billing page. Buy the license there, then call irisfile_convert again. See pricing for the prices.
Every response masks SSNs and EINs to their last 4 digits. That covers tool results, validation messages and error replies. Names, addresses and amounts still appear in results, because the agent needs them to fix a record.
IRIS XML carries full TINs, so irisfile_convert never puts it in the response. It returns a signed download link for each transmission.
Each link stops working 10 minutes after the call. Call irisfile_convert again for a new link.
irisfile_validate stores nothing: IRISfile reads the file, reports on it and keeps no copy. irisfile_convert with file text doesn't keep the text either. It stores the XML it generates in your account's storage, so the link can serve it. An hourly cleanup deletes that XML once its link has been expired for 10 minutes. XML for a file you uploaded in the dashboard stays with that file, as it does in the dashboard. Each key records the date it was last used.
A file your agent sends passes through your AI client and its model provider before it reaches IRISfile. IRISfile can't control what that provider keeps. Send only the files you want the agent to process, and check your provider's data settings.
Each key can make 60 requests a minute on each IRISfile server instance. Calls without a key are limited to 120 a minute from one address on each instance. A request over the limit gets HTTP 429 with a Retry-After header.
Give an agent your 1099 files to check.
Get notified