io.github.lonniev/taxsort-mcp

السجل الرسمي المالية والمدفوعات

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

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

Remote (streamable-http)
Claude Code
claude mcp add --transport http taxsort-mcp 'https://taxsort-mcp.fastmcp.app/mcp'
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "taxsort-mcp": {
            "type": "http",
            "url": "https://taxsort-mcp.fastmcp.app/mcp"
        }
    }
}

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. taxsort-mcp
  2. What It Does
  3. Tools
  4. Server-Side Pagination
  5. Amount Filter Expressions
  6. Dual Classification
  7. Architecture
  8. Getting Started
  9. DPYC™ Social Contract
  10. License

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

Domain tools take the patron's npub and nothing else for identity: the connection proves it, either by signing each request with the npub's key (NIP-98) or as an OAuth holder connection that earned a grant through request_npub_proof / receive_npub_proof. The patron chooses the grant's lifetime, up to 30 days.

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; returns a nonce (standard tool)
receive_npub_proofComplete npub verification with that nonce; the connection then holds the npub (standard tool)
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)

register_standard_tools() mounts the wheel's full set, including session_status, check_balance, account_statement, purchase_credits, check_payment, check_price, service_status, request_credential_channel, receive_credentials, forget_credentials, request_npub_proof, receive_npub_proof, check_proof_status, held_identities, the pricing-model and coupon tools, request_adoption, report_issue, and the delegated oracle_* tools. See the tollbooth-dpyc README for the list.

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)
  • Web app — frontend/ (React + Vite on Cloudflare Pages, https://taxsort-app.pages.dev) calls the same MCP tools
  • One env var — TOLLBOOTH_NOSTR_OPERATOR_NSEC. Neon database provisioned automatically by Authority. BTCPay, the Anthropic API key and an optional GitHub token (for feedback issues) 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

The domain schema is created automatically the first time the vault is used.

Operator Onboarding
  1. Generate a Nostr keypair, set TOLLBOOTH_NOSTR_OPERATOR_NSEC
  2. Deploy to Horizon
  3. Get adopted by an Authority: call request_adoption(authority_npub=..., service_url=...) on your own MCP, signed with your operator nsec; the Authority's owner approves it
  4. Deliver credentials via Secure Courier (request_credential_channel(sender_npub=<operator npub>, service=...) returns a nonce; reply to the DM, then receive_credentials(sender_npub=..., service=..., nonce=...)):
     {
       "btcpay_host": "https://btcpay.example.com",
       "btcpay_api_key": "...",
       "btcpay_store_id": "...",
       "anthropic_api_key": "sk-ant-...",
       "github_token": "(optional) token that can open issues for feedback"
     }

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-trading practice game
goodearth-mcpRegion-scoped climate analytics for small farms
beesknees-mcpThe Bee's Knees — a multiplayer race to the queen
roastify-mcpRoastify coffee catalog and packaging artwork
ChartRemotely-mcpPuts a security on a desktop chart remotely
tollbooth-webShared browser SDK for operator front ends
tollbooth-oauth2-collectorOAuth2 callback handler — advocate service
tollbooth-shortlinksURL shortener utility

License

Apache License 2.0. Copyright 2026 Lonnie VanZandt.

الأسئلة الشائعة

ما هو io.github.lonniev/taxsort-mcp؟

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

كيف أثبّت io.github.lonniev/taxsort-mcp؟

يعمل كخادم بعيد. في Claude Code: claude mcp add --transport http taxsort-mcp 'https://taxsort-mcp.fastmcp.app/mcp'. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج io.github.lonniev/taxsort-mcp إلى مفتاح API؟

لا يذكر إدراجه في السجل أي مفتاح أو سر إلزامي. قد تتطلب بعض الميزات حسابًا لدى الخدمة التي يتصل بها.

هل io.github.lonniev/taxsort-mcp مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص Apache-2.0.

من يصون io.github.lonniev/taxsort-mcp؟

ينشره lonniev. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.