taxsort-mcp

MCP serverDev tools

TaxSort sorts your personal transactions into tax categories. Once it is added, your AI can classify transactions for you so your records are organized for tax purposes. The service charges per use.

Use taxsort-mcp in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add taxsort-mcp and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the taxsort check balance tool from taxsort-mcp

Details

Available today. Use it from your connected AI after setup.

After adding TaxSort, share the personal transactions you want sorted and ask your AI to classify them into tax categories. Keep in mind that the service charges per use.

taxsort-mcpStart free

What your AI can do with it

  • Sort personal transactions into tax categories
  • Classify individual transactions by their tax treatment
  • Label transactions so they are organized for tax purposes
  • Tell you how a specific transaction is classified for tax purposes

Install taxsort-mcp

The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.

  • Claude Code

    claude mcp add --transport http --scope user taxsort-mcp 'https://taxsort-mcp.fastmcp.app/mcp'

    Run it once in your project, then open /mcp to approve any sign-in the server asks for.

  • Claude Desktop

    https://taxsort-mcp.fastmcp.app/mcp

    Add a custom connector in Settings, paste this address, and approve the sign-in.

  • Cursor

    cursor://anysphere.cursor-deeplink/mcp/install?name=taxsort-mcp&config=eyJ1cmwiOiJodHRwczovL3RheHNvcnQtbWNwLmZhc3RtY3AuYXBwL21jcCJ9

    Open the link and Cursor adds the server at that address.

  • ChatGPT

    https://taxsort-mcp.fastmcp.app/mcp

    In Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.

  • Codex

    codex mcp add taxsort-mcp --url 'https://taxsort-mcp.fastmcp.app/mcp'

    Run it once, then sign in with codex mcp login taxsort-mcp if the server asks for an account.

From the project's README

As published by lonniev/taxsort-mcp in README.md.

MCP server for personal tax transaction classification (US Schedule A & C). Built on FastMCP, monetized via Tollbooth DPYC™ Lightning micropayments.

Don't Pester Your Customer™ (DPYC™) — API monetization for Entrepreneurial Bitcoin Advocates

Inspired by The Phantom Tollbooth by Norton Juster, illustrated by Jules Feiffer (1961).

What It Does

Import bank CSV exports (SoFi, Chase, Schwab, US Bank, PayPal, Coinbase), classify transactions into IRS tax categories using Claude AI, review and override classifications, generate tax summaries grouped by IRS line item, and track API usage costs.

Tools

All domain tools take proof: str for DPYC authentication.

Sessions

ToolDescription
create_sessionCreate a tax session for a year
list_sessionsList your sessions
get_sessionSession details + stats
session_heartbeatPresence heartbeat; returns who else is active in the session

Verification & Unlock

ToolDescription
request_npub_proofStart npub verification via Secure Courier DM
receive_npub_proofComplete npub verification (reply to the DM to prove npub ownership)
verify_passphraseVerify a passphrase to unlock a timed-out session
request_unlockRequest a session unlock after timeout
check_unlockCheck if the unlock response is valid

Import

ToolDescription
import_csvImport CSV — idempotent, preserves user edits
get_import_statsImport sources, date ranges, ambiguous counts

Transactions

ToolDescription
get_transactionsFilter by category, month, account, date range, search, unclassified-only
get_transactions_pagedServer-side filtered, grouped, sorted, paginated transactions
save_classificationsBulk write classifications from the FE (JSON array)
delete_classificationRemove a single classification, reverting to unclassified
clear_transactionsDelete all transactions and classifications for a session
delete_account_transactionsDelete all transactions for a specific imported account
reset_classificationsDelete all classifications but keep the imported transactions
get_amount_neighborsFetch transactions with the same amount within ±N days (duplicate detection)

Accounts

ToolDescription
get_accountsList all accounts in a session with types and transaction counts
set_account_typeSet an account's type: bank, card, investment, or loan

Summaries

ToolDescription
get_summaryGrouped spending totals by IRS line, category, month, account

Rules

ToolDescription
get_rulesGet patron's classification rules
save_ruleCreate a description-pattern + optional amount-filter → subcategory rule
delete_ruleDelete a rule by ID
apply_rulesRe-apply all rules to unclassified transactions
count_rule_matchesLive preview of how many transactions match a rule pattern

Custom Categories

ToolDescription
get_custom_categoriesGet custom categories defined by this user
save_custom_categoryAdd a custom category/subcategory
delete_custom_categoryDelete a custom category

Sharing

ToolDescription
create_share_tokenGenerate a token to share session with spouse
load_share_tokenLoad a shared session via token

AI Advisors

ToolDescription
ask_advisorAsk the Financial Advisor about using TaxSort
ask_tax_researcherAsk the Tax Code Researcher about IRS provisions

API Usage & Feedback

ToolDescription
report_api_usageReport Anthropic API usage from FE classification for cost tracking
get_api_usage_statsGet aggregated API usage statistics for cost analysis
get_anthropic_keyGet the Anthropic API key for FE-driven classification
get_github_tokenGet the GitHub token for creating feedback issues
create_feedback_issueCreate a GitHub issue for bug reports, feature requests, or feedback
list_feedback_issuesList feedback issues submitted by this patron

Standard DPYC™ (from tollbooth-dpyc wheel)

check_balance, purchase_credits, check_payment, check_price, service_status, request_credential_channel, receive_credentials, forget_credentials, oracle_how_to_join, oracle_about, oracle_lookup_member, oracle_network_advisory, oracle_get_tax_rate

Server-Side Pagination

get_transactions_paged performs filtering, grouping, sorting, and pagination entirely on the server. This is more efficient than fetching all transactions and processing client-side.

  • group_by: none, category, subcategory, account, month
  • group_sort: asc or desc (controls group ordering)
  • sort_col + sort_dir: row ordering within each group
  • page + page_size: zero-indexed pagination

Amount Filter Expressions

Rules (save_rule, count_rule_matches) support compound filters with amount_operator and amount_value:

OperatorMeaning
ltLess than (<-95 matches debits over $95)
lteLess than or equal
gtGreater than (gte 50 matches amounts $50+)
gteGreater than or equal
eqExact match (!33 style negation not supported — use neq)
neqNot equal

Examples: <-95 (debits exceeding $95), [0..10) (range via two rules), gte 50.

Dual Classification

  • save_classifications — bulk write from the frontend. Accepts a JSON array of {id, category, subcategory, ...} objects. Used during AI classification and manual review.
  • delete_classification — single revert. Removes one classification, returning the transaction to unclassified state.

Architecture

  • Pure MCP — no custom REST endpoints. Horizon exposes Streamable HTTP (JSON-RPC 2.0)
  • One env var — TOLLBOOTH_NOSTR_OPERATOR_NSEC. Neon database provisioned automatically by Authority. BTCPay and Anthropic API key delivered via Secure Courier
  • Per-npub isolation — each patron's transactions, rules, and sessions are keyed by their Nostr public key
  • NeonVault — all persistence via Neon's HTTP SQL API (httpx, no asyncpg)
  • Tollbooth DPYC™ — pre-funded Lightning balances, Authority-certified purchases, constraint-driven pricing

Getting Started

pip install -e ".[dev]"
export TOLLBOOTH_NOSTR_OPERATOR_NSEC=nsec1...
python server.py

Schema migration runs automatically on startup.

Operator Onboarding

  1. Generate a Nostr keypair, set TOLLBOOTH_NOSTR_OPERATOR_NSEC
  2. Deploy to Horizon
  3. Register with Authority: register_operator(npub=..., service_url=...)
  4. Deliver credentials via Secure Courier:
    {
      "btcpay_host": "https://btcpay.example.com",
      "btcpay_api_key": "...",
      "btcpay_store_id": "...",
      "anthropic_api_key": "sk-ant-..."
    }
    

DPYC™ Social Contract

Part of the DPYC™ Social Contract — a network of monetized MCP services where AI agents pay for what they use via Bitcoin Lightning.

Other Operators in the Network

RepoWhat it does
tollbooth-dpycShared Python SDK — vault, auth, pricing, Lightning, Nostr identity
dpyc-communityGovernance registry — membership, advisories, threat model
dpyc-oracleCommunity concierge — free onboarding and member lookup
tollbooth-authorityCertification backbone — Schnorr-signed certificates
tollbooth-sampleSample Operator (canonical template) — weather stats reference
tollbooth-pricing-studioiOS pricing-model editor / operator console
cypher-mcpMonetized graph answers — named Cypher templates over Neo4j/AuraDB
schwab-mcpCharles Schwab brokerage data — positions, quotes, options, orders
thebrain-mcpTheBrain knowledge graph — thoughts, links, attachments
excalibur-mcpX (Twitter) posting — social media automation with OAuth2
optionality-mcpOptions analytics — brokerage-data operator
tollbooth-oauth2-collectorOAuth2 callback handler — advocate service
tollbooth-shortlinksURL shortener utility

License

Apache License 2.0. Copyright 2026 Lonnie VanZandt.

Tools it offers (87)

What this server listed when Ahel dialed its public endpoint in Sep 2026, with no key and no account of yours. The names are the server’s own.

  • taxsort_check_balance
  • taxsort_purchase_credits
  • taxsort_check_payment
  • taxsort_restore_credits
  • taxsort_account_statement
  • taxsort_account_statement_infographic
  • taxsort_report_issue
  • taxsort_service_status
  • taxsort_get_operator_onboarding_status
  • taxsort_get_patron_onboarding_status
  • taxsort_session_status
  • taxsort_request_credential_channel
  • taxsort_receive_credentials
  • taxsort_forget_credentials
  • taxsort_update_patron_credential
  • taxsort_update_operator_credential
  • taxsort_delete_patron_credential
  • taxsort_delete_operator_credential
  • taxsort_get_patron_credential_fields
  • taxsort_request_npub_proof
  • taxsort_receive_npub_proof
  • taxsort_check_proof_status
  • taxsort_oracle_how_to_join
  • taxsort_oracle_get_tax_rate
  • taxsort_oracle_lookup_member
  • taxsort_oracle_about
  • taxsort_oracle_network_advisory
  • taxsort_check_authority_balance
  • taxsort_get_pricing_model
  • taxsort_set_pricing_model

Signals

Last commit
Sep 2026
Advanced
Delivery
taxsort-mcp MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
Item type
mcp-server
Key
io-github-lonniev-taxsort-mcp
Source
github.com/lonniev/taxsort-mcp
Hosted endpoint
https://taxsort-mcp.fastmcp.app/mcp