Model Context Protocol

Ask your AI assistant about your own crypto taxes.

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.

Try a question

Read-only by default. Your own account only. Transaction tools are free; tax figures unlock per year, the same as in the app.

Claude · moonscape connectedread-only
InstallOne command · Node 18+

One command. Log in once. Then ask.

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.

01
Add the server to your client

Claude Code and Codex take one line each.

02
Approve the login in your browser

The token is for your account only and lives on your machine.

03
Ask

“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
BoundariesIt reads. It doesn’t guess.

It reads. It doesn’t guess.

A tool that touches tax data has to be boring about what it will and won’t do.

Your own account only

Login gets a token for you, the same kind your browser uses. It cannot see anyone else.

Read-only unless you opt in

Imports need --allow-write. Without it the write tools are not registered, so a model cannot be talked into calling them.

Figures, not raw lots

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.

Locked years say so

It never invents a number for a year you haven’t purchased.

Claude · moonscape connectedlocked year
What do I owe for 2025?
get_tax_summarytax_year: 202596 ms

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.

Tools17 read-only · 2 opt in

Seventeen tools that read. Two that write, if you ask.

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.

Response shape

{ columns, rows } for lists, trimmed numbers, tabular. Measured with cl100k_base: 12,983 tokens against 39,808 for pretty JSON.

get_tax_summaryHeadline figures for a tax year
get_cgt_summaryAggregate capital gains
get_cgt_reportFull capital gains report for an unlocked year
list_transactionsImported transactions, newest first
get_recent_importsWhat the last sync or upload brought in
list_disposalsDisposal events
get_matched_lotsCost basis audit trail for one disposal
get_incomeIncome events, or totals by type
get_unrealizedHoldings and unrealized P&L per asset
list_reportsGenerated report packs and their status
download_reportSaves a finished report pack to your computer
list_exchangesEvery exchange and wallet Moonscape imports from
list_connectionsYour connected accounts
connect_exchange_urlLink to connect a new exchange
import_statusWhether an import is running, queued or failed
get_tax_settingsYour jurisdiction and accounting method
get_dashboardPortfolio overview
upload_csvopt in · --allow-writeUploads a transaction CSV for import
trigger_importopt in · --allow-writeStarts a sync of connected accounts
Questionshello@moonscape.app · a person replies within one business day
Can it see other people’s data?

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.

Can it change anything?

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.

Do I need a paid plan?

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.

Why won’t it hand over raw lots?

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.

Which clients work?

Claude Code and Codex. Node 18 or later is the only requirement on your machine.