Skip to main content
Glama

PaperTax

Server Details

Tax records and Koinly/CTC CSV exports for Hyperliquid perps, HIP-3 and Papertrade (AU/US).

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A3.6/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a distinct action: explaining rules (explain_tax_treatment), exporting files (export_tax_file), fetching raw rows (get_ledger_events), and aggregate reporting (get_tax_summary). The only mild overlap is between get_ledger_events and get_tax_summary, since both surface tax data, but one is row-level and the other is per-venue aggregated, so descriptions resolve the boundary.

Naming Consistency5/5

All four names use consistent snake_case with a clear verb_noun structure (explain_/export_/get_ + object). The pattern is predictable and readable throughout.

Tool Count4/5

Four tools is on the lean side for a tax reporting server but each has a distinct, justified role. It is slightly under-provisioned rather than bloated, avoiding redundancy.

Completeness4/5

The surface covers the core tax workflow: rules explanation, ledger inspection, summary reporting, and export in multiple formats. Minor gaps exist around wallet discovery/management and data import, which an agent must work around since tools operate on 'one wallet' without listing available wallets.

Available Tools

4 tools
explain_tax_treatmentExplain default tax treatmentB
Read-onlyIdempotent
Inspect

PaperTax's default treatment notes for Australia or the US, optionally for one event type. Not tax advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_typeNo
jurisdictionNoUsed when tax_year is not given. AU = financial year 1 Jul–30 Jun; US = calendar yearAU

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description's only added behavioural context is the 'Not tax advice' disclaimer and the word 'default' (generic guidance, not user-specific computed figures) — useful, but silent on return format or what happens when event_type is omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence plus a short disclaimer; the resource, jurisdictions and optional filter are all front-loaded with no filler. It is slightly under-specified rather than bloated, which is a completeness issue rather than a conciseness one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, zero-required, read-only lookup with no output schema, the description covers what the tool returns and the jurisdiction scope but never explains the shape of the 'treatment notes' or the behaviour when no event_type is supplied (all event types vs none). Adequate but with a clear gap for a zero-required-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: jurisdiction is documented in the schema, while event_type has only a self-explanatory enum. The description compensates partly by naming the supported jurisdictions in prose and flagging event_type as an optional narrowing filter, but adds no value beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (PaperTax default treatment notes) and a specific scope (Australia or the US, optionally narrowed to one event type), so an agent knows exactly what it returns. It does not, however, contrast itself with the sibling get_tax_summary, which is the nearest conceptual neighbour.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies how to narrow the lookup ('optionally for one event type') and adds a 'Not tax advice' caveat, but gives no when-to-use guidance relative to get_tax_summary or get_ledger_events. Nothing tells the agent when this is the right call versus a summary or ledger tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_tax_fileExport a tax fileB
Read-onlyIdempotent
Inspect

Koinly universal CSV, Crypto Tax Calculator advanced CSV, 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNokoinly
sampleNoReturn deterministic sample data instead of reading Hyperliquid
addressYesPublic Hyperliquid wallet address
tax_yearNoTax year. AU-2027 = Australia · FY 2026–27; AU-2026 = Australia · FY 2025–26; US-2026 = United States · 2026; US-2025 = United States · 2025. Defaults to the year being filed now.
jurisdictionNoUsed when tax_year is not given. AU = financial year 1 Jul–30 Jun; US = calendar yearAU
unlock_tokenNoUnlock token returned by buy_report (or the website after paying), for wallets bought without an API key

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds genuinely useful behavioral context: live wallets require paid access, the audit format ties figures to transaction hashes and a data fingerprint, and large files are truncated with a download link. This is meaningful beyond the annotations but doesn't explain failure modes or token expiry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences that front-load the format catalogue and follow with the access constraint and truncation behavior. No filler, though the audit parenthetical is packed and slightly hard to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the key operational facts an agent needs: what each format yields, that paid access gates live wallets, and that large exports are truncated with a link. Missing only failure/auth-token-expiry detail, which is minor given annotations already handle safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 83%, so the schema already documents address, tax_year, jurisdiction, and sample. The description adds value by clarifying what each format actually produces (e.g. audit = JSON with transaction-hash-tied figures, auditpdf = printable PDF), but says nothing about unlock_token or the format enum's tradeoffs beyond naming them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names five concrete output formats (Koinly CSV, CTC CSV, accountant summary, audit JSON, audit PDF) with the verb implied by the tool name. It distinguishes this export tool from siblings like get_tax_summary and get_ledger_events by describing deliverables rather than raw data, though it never explicitly contrasts with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only one conditional is given: paid access for live wallets. There is no guidance on when to choose each format, when to use sample=true, or why an agent would pick export_tax_file over get_tax_summary or get_ledger_events. The format tradeoffs are left entirely to the caller.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ledger_eventsLedger eventsA
Read-onlyIdempotent
Inspect

Individual ledger rows (opens, closes, liquidations, funding, mints, staking) with default tax classification. Filter by event type or venue. Without paid access, live wallets return the first 10 rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
venueNoVenue key, e.g. hl, hip3:xyz, hip3:para, pt
sampleNoReturn deterministic sample data instead of reading Hyperliquid
addressYesPublic Hyperliquid wallet address
tax_yearNoTax year. AU-2027 = Australia · FY 2026–27; AU-2026 = Australia · FY 2025–26; US-2026 = United States · 2026; US-2025 = United States · 2025. Defaults to the year being filed now.
jurisdictionNoUsed when tax_year is not given. AU = financial year 1 Jul–30 Jun; US = calendar yearAU
unlock_tokenNoUnlock token returned by buy_report (or the website after paying), for wallets bought without an API key

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral value beyond them: rows carry a default tax classification, and unauthenticated access silently truncates live-wallet results to 10 rows. That truncation semantics is exactly the kind of trait annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what a row is before the filtering and access caveats. No filler and no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description reasonably characterizes the return shape (individual classified rows) and the truncation limit. It is slightly thin on how limit interacts with the unpaid 10-row cap and whether unlock_token is required for beyond-10 results, which the agent must infer from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so most parameters (address pattern, venue keys, tax_year, jurisdiction, sample) are already documented in the schema. The description only reinforces the type/venue filtering, adding no format or interaction detail beyond it. Baseline 3 is correct given the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (individual ledger rows) and enumerates the event kinds it returns (opens, closes, liquidations, funding, mints, staking), plus the default tax classification attached. It is clearly distinct from the get_tax_summary/export_tax_file siblings by being row-level, though it never names those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives operational guidance ('filter by event type or venue') and a gating caveat (live wallets return the first 10 rows without paid access), which implies when the tool is adequate versus when full history is needed. It stops short of explicitly routing the agent between this and the tax summary/export siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tax_summaryTax summary for a walletB
Read-onlyIdempotent
Inspect

Per-venue realised gains and losses, fees, funding, liquidations, open positions and items needing review for one wallet and tax year.

ParametersJSON Schema
NameRequiredDescriptionDefault
sampleNoReturn deterministic sample data instead of reading Hyperliquid
addressYesPublic Hyperliquid wallet address
tax_yearNoTax year. AU-2027 = Australia · FY 2026–27; AU-2026 = Australia · FY 2025–26; US-2026 = United States · 2026; US-2025 = United States · 2025. Defaults to the year being filed now.
jurisdictionNoUsed when tax_year is not given. AU = financial year 1 Jul–30 Jun; US = calendar yearAU

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description adds that the result is scoped to a single wallet and tax year and includes a 'items needing review' bucket, which is useful framing, but it says nothing about data freshness, upstream dependency on Hyperliquid, or cost/latency of the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that enumerates the payload rather than padding with prose. It is dense but every clause corresponds to a real output category, so nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing the return, and it does so by listing the summary's sections. For a read-only, four-parameter tool with full schema coverage, this is nearly sufficient; only the relationship to sibling views is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — every parameter including the tax_year and jurisdiction enum meanings and the sample flag is documented in the schema itself. The description only restates 'one wallet and tax year', adding no format, precedence, or interaction detail beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource and the full set of outputs (per-venue realised gains/losses, fees, funding, liquidations, open positions, review items) scoped to one wallet and tax year, so an agent immediately knows what comes back. It does not, however, distinguish this from sibling tools like get_ledger_events or export_tax_file, which would require reading their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use statement and no mention of alternatives, despite three plausible siblings (explain_tax_treatment, export_tax_file, get_ledger_events). The agent must infer from the name alone whether this is the read-only summary view versus the export or the raw ledger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • First observedexplain_tax_treatment
    • First observedexport_tax_file
    • First observedget_ledger_events
    • First observedget_tax_summary

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Parse crypto exchange CSVs (Coinbase, Binance, Kraken, +11 more) and bank statement PDFs (Chase, BofA, +11 more) into Koinly, TurboTax, CoinLedger, or ZenLedger formats. Free tier: 25 files/month, no credit card required.
    2 npm
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    Read-only MCP server for the Hyperliquid / HyperEVM ecosystem - yields, protocol TVL, fees, markets, funding history, order-book depth.
    9
    46 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Perpetual futures trading API for AI agents. Access 275+ markets (crypto, stocks, commodities, forex) via Hyperliquid. Copy trading, leaderboard, up to 50x leverage. No KYC. 20% referral commissions.
    21 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources