Connect Moonscape to Claude Code or Codex and ask in plain English. It answers with the figures Moonscape calculated, shows which tool it used, and links you to the rows in the app.
Read-only by default. Your own account only. Transaction tools are free; tax figures unlock per year, the same as in the app.
The first run opens a browser window to log in to Moonscape. Approve it and the assistant can see your account. No API keys to paste, nothing to configure in the app.
Claude Code and Codex take one line each.
The token is for your account only and lives on your machine.
“What were my gains for 2024?” “Why is that basis so low?” “What did my last sync bring in?”
claude mcp add moonscape -- npx -y @moonscape/mcp
A tool that touches tax data has to be boring about what it will and won’t do.
Login gets a token for you, the same kind your browser uses. It cannot see anyone else.
Imports need --allow-write. Without it the write tools are not registered, so a model cannot be talked into calling them.
Hundreds of acquisition lots invite a model to recompute your tax and get Section 104 or the 30-day rule wrong. It returns what Moonscape computed and links to the rows.
It never invents a number for a year you haven’t purchased.
2025 figures need a purchased tax year. Your 2025 transactions are imported and organised, so nothing is missing; unlocking the year is what turns them into gains and income.
List results come back as columns and rows rather than an array of objects. On a real 542-lot position that is a third of the tokens of pretty JSON, and the model reads it just as well.
{ columns, rows } for lists, trimmed numbers, tabular. Measured with cl100k_base: 12,983 tokens against 39,808 for pretty JSON.
No. Logging in gets a token for your own account, the same kind your browser session uses. The server passes it to the same API the app uses, so it sees exactly what you can see and nothing else.
Not by default. Every tool is read-only. Imports are opt in with --allow-write, which adds two tools that queue real work. Without the flag they are not registered at all, so a model cannot be talked into calling them.
Importing, searching and organising transactions is free, and so are the tools that cover them. Tax figures for a year need a purchased tax year, the same as in the app. When a year is locked the tool says so and links to where to unlock it, rather than guessing.
A model given hundreds of acquisition lots will try to recompute your tax itself, get Section 104 pooling or the 30-day rule wrong, and present the result confidently. The tools return figures Moonscape computed and link to the app for the rows. The one exception is get_matched_lots, which explains a single disposal.
Claude Code and Codex. Node 18 or later is the only requirement on your machine.