How Tax Agent compares with other Claude tax skills

There are a lot of agent skills for tax now, and most of the difference between them comes down to one question: when the answer is a number, where did the number come from? This page lays out what this plugin does, in checkable terms, and what it refuses to do.

What is actually in the box

WhatTax Agent
Calculations39 commands in tested Python, run locally
Agent interface9 MCP servers over stdio, plus a CLI for the federal surface
Engines7 implemented engines, each publishing what it will not claim
RulesVersioned packs; 39 rules carrying an authority and a legal effective date
EvidenceEvery run pins the snapshot hash, rule bundle and hash, engine manifest and input hashes, and replays to an identical digest
Tested301 scripted cases, 71 of them against live servers over JSON-RPC
RefusalsA designed outcome with a code: UNSUPPORTED_SCOPE, WRONG_RULE_YEAR, MISSING_BASIS, INFEASIBLE_CONSTRAINTS
ExecutionNone. No tool places an order, moves money or files a return
Licence and costApache-2.0, free, no account

The difference that matters

A prompt-only skill and an engine-backed one look identical in a demo. They diverge when a client asks how a figure was reached. A capital loss carryforward produced by a language model reading a prompt cannot be traced; one produced by calculate_loss comes from a rule pack that cites IRC section 1211(b), states the limit it applied, and names what it ignored.

The same applies to the gaps. Every server publishes its own boundaries on its page and in llms.txt, because an agent that does not know a tool's boundary will walk straight past it.

Questions people ask

What is the best AI agent for tax?

That depends on the work, and no honest answer is a single name. The question worth asking is where the figures come from: a skill that leaves arithmetic to a language model will be confidently wrong eventually, and the output gives a reviewer nothing to check. Here 39 commands across 9 MCP servers run tested Python, every figure is pinned to a versioned rule pack that carries its authority, and 301 scripted cases run on every build.

How does this compare with other Claude tax skills and MCP servers?

Most published tax skills are prompt files: a SKILL.md that tells the model how to reason and leaves the arithmetic to the model. Here the arithmetic is code, exposed as 39 MCP tools across 9 servers, with 7 engines that each publish what they will not claim. Four things are uncommon: wash-sale screening that spans accounts and UMA sleeves and catches a purchase a manager has planned but not placed; retirement account replacements modelled under Rev. Rul. 2008-5, where the loss is destroyed rather than deferred; selection that reports optimal only when the search provably exhausted, and a measured gap when it did not; and refusals that are the designed outcome rather than an error.

Is it safe to let an agent run these calculations for a client?

The plugin prepares work; it does not act. There is no execute_trade or file_return tool, every result carries execution_authorized: false, and the servers that read client data carry an authenticated principal, so an account named in an argument is a request rather than a grant. Unknown cost basis blocks a lot instead of defaulting to zero. A licensed professional still reviews the output.

What does Tax Agent not do?

It computes no tax owed at return level, no state's own income tax, and places no trades. Municipal bonds are priced on their own server and stay outside every portfolio engine. Options, K-1 partnerships, digital assets and equity compensation are out of scope and the registry refuses them rather than approximating. Each of the 9 servers publishes its own boundaries, rule by rule, on its page.

Is it free and open source?

Yes, Apache-2.0 licensed, with no account to create and no API key. The servers run locally over stdio, no client data leaves the machine, and the whole suite runs offline. Version 0.1.0 is current.

See for yourself

The servers and commands are listed with every input they ask for and the reason they ask for it, and the case inventory lists all 301 scripted cases with the file that defines each one. The code is on GitHub, and llms-full.txt is the whole documentation set in one file if you would rather hand it to an agent.