Back to Discover

taxsort-mcp

connector

lonniev

TaxSort — Tollbooth-monetized MCP server for personal tax transaction classification

View on GitHub
0 starsSynced Aug 4, 2026

Install to Claude Code

/plugin marketplace add lonniev/taxsort-mcp

README

taxsort-mcp

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

Rendered live from lonniev/taxsort-mcp's GitHub README — not stored, always reflects the source repo.

1 Install Method

NameDescriptionCategorySource
streamable-http remoteHosted streamable-http endpointmcp-serverhttps://taxsort-mcp.fastmcp.app/mcp

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet — be the first to share an update.