papertax
by AwakeWeb3 · remote · no sign-in to list tools · v0.16.0 · published by GitHub user AwakeWeb3
Hyperliquid tax reports and Koinly/CTC exports, papertrade positions and top traders for agents
11 tools: 4 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http papertax https://papertax.xyz/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "get_ledger_events" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_ledger_events" says "get": a word for reading.
The server marks "create_verified_pnl" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "create_verified_pnl" says "create": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
11 tools
Changes things 4Claude Code: ask
buy_reportBuy the full report for one wallet and tax year ($29 up to 500 events, $59 up to 5,000, $99 above; upgrades charge the difference).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Buy the full report for one wallet and tax year ($29 up to 500 events, $59 up to 5,000, $99 above; upgrades charge the difference). method "card" charges the account owner's saved card: needs Authorization: Bearer ptx_… and the owner's opt-in; set max_price_cents to cap it. method "usdc" returns a quote: send exactly that USDC amount on HyperEVM (chain 999) to the given address, then call again with quote_id and tx_hash. (x402 clients can instead pay in USDC on Base or Solana at GET https://papertax.xyz/api/buy?address=…&year=….) Returns an unlock_token and export links. This spends money: confirm with the user first.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
create_verified_pnlRead a wallet's results for one tax year from the chain and return a public, signed link (https://papertax.xyz/v/…) with a share image, for posting on X or anywhere else.1 finding
Why it is in this group
- The name "create_verified_pnl" says "create": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "create_verified_pnl" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "create_verified_pnl" says "create": a word for a change.
Description, as the server wrote it Read a wallet's results for one tax year from the chain and return a public, signed link (https://papertax.xyz/v/…) with a share image, for posting on X or anywhere else. Free, and nothing is stored. Dollar amounts are included only when amounts is true. With private true (the default) the wallet address is left out of the link and the page; with private false the page shows it, so check with the user first. It proves what the wallet did, not who owns it.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
export_tax_fileKoinly universal CSV, Crypto Tax Calculator advanced CSV, Cryptact custom file (JST, priced in yen by Cryptact), plain-text accountant summary, or the audit pack (audit = JSON with…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Koinly universal CSV, Crypto Tax Calculator advanced CSV, Cryptact custom file (JST, priced in yen by Cryptact), plain-text accountant summary, or the audit pack (audit = JSON with every figure tied to its transaction hash, a rules version and a data fingerprint; auditpdf = the printable PDF). Live wallets need paid access (API key or paid report). Large files are cut short with a download link.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_ledger_eventsIndividual ledger rows with default tax classification: perp opens, closes, liquidations and funding; spot buys and sells; vault deposits and withdrawals; staking rewards; HyperEVM…1 finding
Why it is in this group
- The name "get_ledger_events" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "get_ledger_events" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_ledger_events" says "get": a word for reading.
Description, as the server wrote it Individual ledger rows with default tax classification: perp opens, closes, liquidations and funding; spot buys and sells; vault deposits and withdrawals; staking rewards; HyperEVM swaps and protocol deposits; transfers; papertrade mints and staking. Filter by event type or venue. Without paid access, live wallets return the first 10 rows.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 7Claude Code: allow
explain_tax_treatmentpapertax's default treatment notes for Australia, the US, the UK, Canada, New Zealand, Japan or Spain, optionally for one event type.No findings
Why it is in this group
- The name "explain_tax_treatment" says "explain": a word for reading.
Description, as the server wrote it papertax's default treatment notes for Australia, the US, the UK, Canada, New Zealand, Japan or Spain, optionally for one event type. Not tax advice.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_gamesHow papertax games work (Edge, Climb, and 1v1 and Pit rooms on real papertrade positions, with crews and weekly leaderboards), this week's boards (top 10 players or crews; players …No findings
Why it is in this group
- The name "get_games" says "get": a word for reading.
Description, as the server wrote it How papertax games work (Edge, Climb, and 1v1 and Pit rooms on real papertrade positions, with crews and weekly leaderboards), this week's boards (top 10 players or crews; players show as their X account, papertrade name or wallet), open and live rooms, and the Bulls vs Bears tally. Read-only; playing needs the website and a wallet, and games open when trading on papertax goes live.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_papertrade_positionsFree, read-only.No findings
Why it is in this group
- The name "get_papertrade_positions" says "get": a word for reading.
Description, as the server wrote it Free, read-only. A wallet's papertrade (BTC and ETH perps on HyperEVM) balance and open positions: market, side, leverage, margin, entry, current price, liquidation price and how far away it is, and what each would keep if closed now, after papertrade's impact haircut and 2% win fee. Answers "how are my positions doing?". Closing or opening needs the wallet's signature on papertax.xyz.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_papertrade_resultsFree, read-only.No findings
Why it is in this group
- The name "get_papertrade_results" says "get": a word for reading.
Description, as the server wrote it Free, read-only. What a wallet kept from papertrade closes over a period (default the last 30 days): closes, wins, losses, liquidations, win fees paid, PAPER minted, by market, and the best and worst trade. Answers "what did I keep this month?".
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_tax_summaryFree.No findings
Why it is in this group
- The name "get_tax_summary" says "get": a word for reading.
Description, as the server wrote it Free. Per-venue realised gains and losses, fees, funding, liquidations, open positions and items needing review for one wallet and tax year, plus trading analytics (fee and funding drag, liquidation review, net after costs by market and month). For live wallets, report gives the event count, the full report's price for this caller, whether they already have access, and how to buy it.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_top_tradersFree, read-only.No findings
Why it is in this group
- The name "get_top_traders" says "get": a word for reading.
Description, as the server wrote it Free, read-only. papertrade's top traders by profit and loss over 24h, 7d, 30d or all time, or a search by leaderboard name or wallet, with the X account a trader signed in with, if any, and a link to their page on papertax.xyz/traders, where people can follow them. Not recommendations.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
preview_papertrade_closeFree, read-only.No findings
Why it is in this group
- The name "preview_papertrade_close" says "preview": a word for reading.
Description, as the server wrote it Free, read-only. What closing one papertrade position (or all of them) would keep at the current price or a price you give, and what that does to the wallet's realised net for a tax year (all venues, and papertrade alone). Answers "what would closing my ETH long do to my tax year?". An estimate, not tax advice; nothing is closed.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.16.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http papertax https://papertax.xyz/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__papertax__get_tax_summary",
"mcp__papertax__explain_tax_treatment",
"mcp__papertax__get_papertrade_positions",
"mcp__papertax__preview_papertrade_close",
"mcp__papertax__get_papertrade_results",
"mcp__papertax__get_top_traders",
"mcp__papertax__get_games"
],
"ask": [
"mcp__papertax__get_ledger_events",
"mcp__papertax__export_tax_file",
"mcp__papertax__create_verified_pnl",
"mcp__papertax__buy_report"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as papertax. Review it before you use it.
