Municipal bond tax treatment
One command on the Municipal bonds server, callable over MCP as get_muni_capabilities. Every result carries the method it used, the rule pack it was pinned to, what is still missing and whether coverage was complete, for a licensed professional to review.
What it needs, and why
This command takes no arguments: it reports what the server covers. Which calculators taxagent-muni exposes, what it will not compute, and the rule pack its figures are pinned to. Reading the registry before promising anything is the difference between a refusal and a plausible wrong answer.
Requests it answers
- “What municipal bond tax does this server cover?”
- “Does it look up whether a bond is private activity?”
An agent with these skills loaded picks the command from phrasing like that, asks for whatever input is missing, and reports the figures with the method that produced them.
Run it
scripts/mcp_server.sh --server muniThe same command is exposed by taxagent-muni, so Claude, Claude Code, Codex, Cursor and any other MCP client can call it directly. Analysis only. No tool in this server places orders, modifies custodian records or files returns. This server holds no client data: every figure arrives in the call and nothing is stored. Results are estimates over those figures, not a return and not tax advice. Whether a bond is a private activity bond, and what any state charges, are supplied by the caller rather than looked up.
Scripted cases that exercise it
1 of the 71 console cases call this command on a real server over JSON-RPC and assert the outcome. Every one runs on every build, and all of them are listed on the case inventory.
| Case | What it asks | What it shows | Outcome |
|---|---|---|---|
muni-capabilities | What it will not decide | Whether a bond is a private activity bond, what any state charges, and credit or call risk. Munis are also outside every portfolio engine. | completed |
Limits it inherits from taxagent-muni
- Whether a bond is a private activity bond. That is a fact about the issue, and it decides whether the interest is an AMT preference.
- Any state's treatment of its own or another state's bonds. The holder's state rate is supplied by the caller, not looked up.
- Credit risk, call features, duration and liquidity, none of which a yield comparison sees.
- Original issue discount accrual schedules, and the constant-yield premium schedule the statute requires: amortization is shown straight-line, which reaches the same place at maturity.
- The effect of exempt interest on how much Social Security is taxable, which is real and is why 'tax-free' overstates it.
The server, its other 3 commands and what it deliberately leaves alone are on the Municipal bonds page.