{
  "schemaVersion": "1.0",
  "item": {
    "slug": "xpr-tax",
    "name": "XPR Crypto Tax",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/paulgnz/xpr-tax",
    "canonicalUrl": "https://clawhub.ai/paulgnz/xpr-tax",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/xpr-tax",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=xpr-tax",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "dist/index.js",
      "skill.json",
      "src/index.ts"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/xpr-tax"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/xpr-tax",
    "agentPageUrl": "https://openagent3.xyz/skills/xpr-tax/agent",
    "manifestUrl": "https://openagent3.xyz/skills/xpr-tax/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/xpr-tax/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Crypto Tax Reporting",
        "body": "You have tools to generate crypto tax reports from on-chain XPR Network activity. Supports New Zealand (NZ) and United States (US)."
      },
      {
        "title": "Key Facts",
        "body": "NZ tax year: April 1 – March 31 (e.g. \"2025\" = Apr 2024 – Mar 2025)\nUS tax year: January 1 – December 31 (calendar year, e.g. \"2024\" = Jan 2024 – Dec 2024)\nNZ has NO capital gains tax — all crypto gains are taxed as income if you're a regular trader\nUS HAS capital gains tax — short-term (<1 year) taxed as ordinary income, long-term at lower rates. Uses 2024 Single filer federal brackets. Does not include state taxes or NIIT.\nCost basis methods: FIFO (first-in-first-out) or Average Cost\nAll tools are read-only — they query APIs and calculate, never transact\nDefault region is NZ — pass region: \"US\" for US tax reports"
      },
      {
        "title": "Typical Workflow",
        "body": "For a full tax report, the recommended sequence is:\n\ntax_get_balances — opening balances (start of tax year) and closing balances (end of tax year)\ntax_get_dex_trades — all Metal X DEX trading history for the period\ntax_get_transfers — on-chain transfers, auto-categorized (staking rewards, lending, swaps, NFT sales, etc.)\ntax_get_rates — local currency conversion rates for each token\ntax_calculate_gains — compute taxable gains/losses using FIFO or Average Cost\ntax_generate_report — full report with tax brackets and estimated tax\n\nOr use tax_generate_report directly for a one-shot report that orchestrates all steps automatically."
      },
      {
        "title": "Data Sources (Mainnet Only)",
        "body": "Saltant API — historical balance snapshots (liquid, staked, lending, yield farm)\nMetal X API — DEX trade history in CSV format (only filled trades)\nHyperion API — raw on-chain transfer/action history\nCoinGecko API — historical and current crypto prices (set COINGECKO_API_KEY in .env for full historical access)"
      },
      {
        "title": "Transfer Categories",
        "body": "Transfers are auto-categorized by sender/receiver:\n\nCategoryDetectionstaking_rewardfrom eosio or eosio.vpaylending_depositto lending.loanlending_withdrawalfrom lending.loanlending_interestfrom lending.loan with interest memoswap_depositto proton.swapsswap_withdrawalfrom proton.swapslong_staketo longstaking (XPR long staking)long_unstakefrom longstakingloan_staketo lock.token or yield.farms (LOAN/SLOAN staking)loan_unstakefrom lock.token or yield.farmsdex_depositto dex or metalxdex_withdrawalfrom dex or metalxnft_salefrom atomicmarketnft_purchaseto atomicmarketburnto eosio.null (token burn = realized loss)escrowto/from agentescrowtransfereverything else"
      },
      {
        "title": "Staking Income Rules",
        "body": "Block producer rewards (staking_reward): Full amount is income at time of receipt\nLong staking (XPR via longstaking): Only the excess over the staked amount is income. E.g. stake 100 XPR, unstake 150 XPR → income of 50 XPR\nLOAN staking (via lock.token/yield.farms): Same excess-only rule as long staking\nLending interest: Full amount from lending.loan with interest memo is income"
      },
      {
        "title": "Stablecoin Handling",
        "body": "XUSDC 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."
      },
      {
        "title": "Rate Sources (Priority Order)",
        "body": "DEX trades — derives token prices from TOKEN/XMD trade ratios (most accurate, no API limits)\nForward-fill — gaps between DEX trade dates use nearest prior known rate\nCoinGecko — fallback for dates with no DEX data. Without API key: limited to 365 days. With COINGECKO_API_KEY: unlimited history\nForex — stablecoins use USD→NZD conversion rate"
      },
      {
        "title": "Delivering the Report",
        "body": "tax_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:\n\nUpload report_markdown via store_deliverable with content_type: \"application/pdf\" — this is the primary deliverable\nUpload csv_exports.disposals via store_deliverable with content_type: \"text/csv\" — disposals CSV\nUpload csv_exports.income via store_deliverable with content_type: \"text/csv\" — income events CSV\nCall xpr_deliver_job with ALL URLs comma-separated (PDF first): \"https://ipfs.io/ipfs/QmPDF...,https://ipfs.io/ipfs/QmDisposals...,https://ipfs.io/ipfs/QmIncome...\"\n\nIMPORTANT: 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.\n\nThe frontend displays the primary file (PDF) prominently and lists additional files as download links."
      },
      {
        "title": "Known Limitations",
        "body": "Only filled DEX trades are included (not pending orders)\nNFT: only buy/sell supported (not auctions)\nLiquidations on Metal Lending are not supported\nEscrow payments are tracked but not fully categorized\nHistorical pricing accuracy depends on DEX trade activity and CoinGecko data availability"
      },
      {
        "title": "Important Notes",
        "body": "Always include the disclaimer from the report — this is not tax advice\nSuggest users save CSV exports for the IRD 7-year record requirement\nThe region parameter defaults to \"NZ\" on all tools — pass a different region code when other regions are added\nSet COINGECKO_API_KEY in .env for best historical pricing (free Demo key removes 365-day limit)\nFor tokens not on CoinGecko, the tool derives prices from Metal X DEX trade ratios"
      }
    ],
    "body": "Crypto Tax Reporting\n\nYou have tools to generate crypto tax reports from on-chain XPR Network activity. Supports New Zealand (NZ) and United States (US).\n\nKey Facts\nNZ tax year: April 1 – March 31 (e.g. \"2025\" = Apr 2024 – Mar 2025)\nUS tax year: January 1 – December 31 (calendar year, e.g. \"2024\" = Jan 2024 – Dec 2024)\nNZ has NO capital gains tax — all crypto gains are taxed as income if you're a regular trader\nUS HAS capital gains tax — short-term (<1 year) taxed as ordinary income, long-term at lower rates. Uses 2024 Single filer federal brackets. Does not include state taxes or NIIT.\nCost basis methods: FIFO (first-in-first-out) or Average Cost\nAll tools are read-only — they query APIs and calculate, never transact\nDefault region is NZ — pass region: \"US\" for US tax reports\nTypical Workflow\n\nFor a full tax report, the recommended sequence is:\n\ntax_get_balances — opening balances (start of tax year) and closing balances (end of tax year)\ntax_get_dex_trades — all Metal X DEX trading history for the period\ntax_get_transfers — on-chain transfers, auto-categorized (staking rewards, lending, swaps, NFT sales, etc.)\ntax_get_rates — local currency conversion rates for each token\ntax_calculate_gains — compute taxable gains/losses using FIFO or Average Cost\ntax_generate_report — full report with tax brackets and estimated tax\n\nOr use tax_generate_report directly for a one-shot report that orchestrates all steps automatically.\n\nData Sources (Mainnet Only)\nSaltant API — historical balance snapshots (liquid, staked, lending, yield farm)\nMetal X API — DEX trade history in CSV format (only filled trades)\nHyperion API — raw on-chain transfer/action history\nCoinGecko API — historical and current crypto prices (set COINGECKO_API_KEY in .env for full historical access)\nTransfer Categories\n\nTransfers are auto-categorized by sender/receiver:\n\nCategory\tDetection\nstaking_reward\tfrom eosio or eosio.vpay\nlending_deposit\tto lending.loan\nlending_withdrawal\tfrom lending.loan\nlending_interest\tfrom lending.loan with interest memo\nswap_deposit\tto proton.swaps\nswap_withdrawal\tfrom proton.swaps\nlong_stake\tto longstaking (XPR long staking)\nlong_unstake\tfrom longstaking\nloan_stake\tto lock.token or yield.farms (LOAN/SLOAN staking)\nloan_unstake\tfrom lock.token or yield.farms\ndex_deposit\tto dex or metalx\ndex_withdrawal\tfrom dex or metalx\nnft_sale\tfrom atomicmarket\nnft_purchase\tto atomicmarket\nburn\tto eosio.null (token burn = realized loss)\nescrow\tto/from agentescrow\ntransfer\teverything else\nStaking Income Rules\nBlock producer rewards (staking_reward): Full amount is income at time of receipt\nLong staking (XPR via longstaking): Only the excess over the staked amount is income. E.g. stake 100 XPR, unstake 150 XPR → income of 50 XPR\nLOAN staking (via lock.token/yield.farms): Same excess-only rule as long staking\nLending interest: Full amount from lending.loan with interest memo is income\nStablecoin Handling\n\nXUSDC 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.\n\nRate Sources (Priority Order)\nDEX trades — derives token prices from TOKEN/XMD trade ratios (most accurate, no API limits)\nForward-fill — gaps between DEX trade dates use nearest prior known rate\nCoinGecko — fallback for dates with no DEX data. Without API key: limited to 365 days. With COINGECKO_API_KEY: unlimited history\nForex — stablecoins use USD→NZD conversion rate\nDelivering the Report\n\ntax_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:\n\nUpload report_markdown via store_deliverable with content_type: \"application/pdf\" — this is the primary deliverable\nUpload csv_exports.disposals via store_deliverable with content_type: \"text/csv\" — disposals CSV\nUpload csv_exports.income via store_deliverable with content_type: \"text/csv\" — income events CSV\nCall xpr_deliver_job with ALL URLs comma-separated (PDF first): \"https://ipfs.io/ipfs/QmPDF...,https://ipfs.io/ipfs/QmDisposals...,https://ipfs.io/ipfs/QmIncome...\"\n\nIMPORTANT: 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.\n\nThe frontend displays the primary file (PDF) prominently and lists additional files as download links.\n\nKnown Limitations\nOnly filled DEX trades are included (not pending orders)\nNFT: only buy/sell supported (not auctions)\nLiquidations on Metal Lending are not supported\nEscrow payments are tracked but not fully categorized\nHistorical pricing accuracy depends on DEX trade activity and CoinGecko data availability\nImportant Notes\nAlways include the disclaimer from the report — this is not tax advice\nSuggest users save CSV exports for the IRD 7-year record requirement\nThe region parameter defaults to \"NZ\" on all tools — pass a different region code when other regions are added\nSet COINGECKO_API_KEY in .env for best historical pricing (free Demo key removes 365-day limit)\nFor tokens not on CoinGecko, the tool derives prices from Metal X DEX trade ratios"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/paulgnz/xpr-tax",
    "publisherUrl": "https://clawhub.ai/paulgnz/xpr-tax",
    "owner": "paulgnz",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/xpr-tax",
    "downloadUrl": "https://openagent3.xyz/downloads/xpr-tax",
    "agentUrl": "https://openagent3.xyz/skills/xpr-tax/agent",
    "manifestUrl": "https://openagent3.xyz/skills/xpr-tax/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/xpr-tax/agent.md"
  }
}