openclaw/skills/tax/SKILL.md
Crypto tax reporting for XPR Network with regional support
npx skillsauth add XPRNetwork/xpr-agents taxInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You have tools to generate crypto tax reports from on-chain XPR Network activity. Supports New Zealand (NZ) and United States (US).
region: "US" for US tax reportsFor a full tax report, the recommended sequence is:
tax_get_balances — opening balances (start of tax year) and closing balances (end of tax year)tax_get_dex_trades — all Metal X DEX trading history for the periodtax_get_transfers — on-chain transfers, auto-categorized (staking rewards, lending, swaps, NFT sales, etc.)tax_get_rates — local currency conversion rates for each tokentax_calculate_gains — compute taxable gains/losses using FIFO or Average Costtax_generate_report — full report with tax brackets and estimated taxOr use tax_generate_report directly for a one-shot report that orchestrates all steps automatically.
COINGECKO_API_KEY in .env for full historical access)Transfers are auto-categorized by sender/receiver:
| Category | Detection |
|----------|-----------|
| staking_reward | from eosio or eosio.vpay |
| lending_deposit | to lending.loan |
| lending_withdrawal | from lending.loan |
| lending_interest | from lending.loan with interest memo |
| swap_deposit | to proton.swaps |
| swap_withdrawal | from proton.swaps |
| long_stake | to longstaking (XPR long staking) |
| long_unstake | from longstaking |
| loan_stake | to lock.token or yield.farms (LOAN/SLOAN staking) |
| loan_unstake | from lock.token or yield.farms |
| dex_deposit | to dex or metalx |
| dex_withdrawal | from dex or metalx |
| nft_sale | from atomicmarket |
| nft_purchase | to atomicmarket |
| burn | to eosio.null (token burn = realized loss) |
| escrow | to/from agentescrow |
| transfer | everything else |
staking_reward): Full amount is income at time of receiptlongstaking): Only the excess over the staked amount is income. E.g. stake 100 XPR, unstake 150 XPR → income of 50 XPRlock.token/yield.farms): Same excess-only rule as long stakinglending.loan with interest memo is incomeXUSDC and XMD are pegged to USD — their local currency value uses forex rates (USD/NZD) directly, without CoinGecko. This is more accurate than market-based pricing for stablecoins.
COINGECKO_API_KEY: unlimited historytax_generate_report returns a report_markdown field — a pre-formatted Markdown document with balance sheets, trading summary, income breakdown, tax brackets, and disclaimer. To deliver it:
report_markdown via store_deliverable with content_type: "application/pdf" — this is the primary deliverablecsv_exports.disposals via store_deliverable with content_type: "text/csv" — disposals CSVcsv_exports.income via store_deliverable with content_type: "text/csv" — income events CSVxpr_deliver_job with ALL URLs comma-separated (PDF first): "https://ipfs.io/ipfs/QmPDF...,https://ipfs.io/ipfs/QmDisposals...,https://ipfs.io/ipfs/QmIncome..."IMPORTANT: You MUST complete ALL steps (upload + deliver) in a single run. Do NOT stop after uploading the PDF — you must also upload the CSVs and call xpr_deliver_job. The job is not complete until xpr_deliver_job is called.
The frontend displays the primary file (PDF) prominently and lists additional files as download links.
region parameter defaults to "NZ" on all tools — pass a different region code when other regions are addedCOINGECKO_API_KEY in .env for best historical pricing (free Demo key removes 365-day limit)development
Operate an autonomous AI agent on XPR Network's trustless registry
data-ai
Metal Dollar (XMD) stablecoin — mint, redeem, supply analytics, collateral reserves, oracle prices
tools
Web scraping tools for fetching and extracting data from web pages
data-ai
CSV parsing, JSON-to-CSV conversion, and SVG chart generation