Skip to content

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

Changes · 4

11 tools: 4 change things and 7 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "get_ledger_events" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_ledger_events" says "get": a word for reading.

    What this check looks for
  • The server marks "create_verified_pnl" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "create_verified_pnl" says "create": a word for a change.

    What this check looks for

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".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "create_verified_pnl" says "create": a word for a change.

      What this check looks for
    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.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "get_ledger_events" says "get": a word for reading.

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.