Taxsort Mcp

io.github.lonnievPublished by GitHub account lonnievv0.31.0Updated Nov 4, 2026

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

VerifiedStreamable HTTPWeb executableFinanceData & AnalyticsAI & ML

Overview

AI-generated overview

Remote MCP server that imports bank CSV exports, classifies transactions into US IRS tax categories, and produces Schedule A/C summaries.

What you can do
  • Create, list and inspect yearly tax sessions, with heartbeats and timed-out session unlock
  • Import bank CSV exports and review import stats, accounts and account types
  • Filter, page, group and sort transactions; save, delete or reset classifications and detect duplicate amounts
  • Manage description-pattern rules with amount filters and custom categories
  • Generate spending summaries grouped by IRS line, category, month or account
  • Share a session by token, ask built-in advisor and tax-researcher assistants, and track API usage or file feedback issues
When to use it
Useful for US taxpayers or preparers who want an assistant to sort personal bank, card, investment and crypto transactions into IRS Schedule A and C categories and roll them up into tax summaries, instead of classifying rows by hand in a spreadsheet.
Requirements
A remote endpoint reached over Streamable HTTP with OAuth sign-in; identity is a Nostr npub proven by NIP-98 signing or an OAuth grant obtained through the npub proof tools. A pre-funded Lightning balance is used for paid calls. No local install or environment variables are needed for end users.
Before you install
Handles sensitive financial data: full transaction histories from bank, card, investment and crypto accounts, isolated per npub. Calls are monetized through Lightning micropayments, so credits are spent. Several tools delete data (clear_transactions, delete_account_transactions, reset_classifications, delete_rule, delete_custom_category). Share tokens grant access to a session. Some tools expose stored credentials such as an Anthropic API key and a GitHub token, and feedback tools can open…

Installation

In SourceWeft

  1. Open Taxsort Mcp in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.lonniev%2Ftaxsort-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "taxsort": {
      "type": "http",
      "url": "https://taxsort-mcp.fastmcp.app/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

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

bash
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=...)):
    json
    {  "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.

Source: README.md at commit fe796cd

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

2
  1. v0.31.0LatestOct 21, 2026
  2. v0.30.7Sep 16, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts