You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Tool
Description
create_session
Create a tax session for a year
list_sessions
List your sessions
get_session
Session details + stats
session_heartbeat
Presence heartbeat; returns who else is active in the session
Verification & Unlock
Tool
Description
request_npub_proof
Start npub verification via Secure Courier DM
receive_npub_proof
Complete npub verification (reply to the DM to prove npub ownership)
verify_passphrase
Verify a passphrase to unlock a timed-out session
request_unlock
Request a session unlock after timeout
check_unlock
Check if the unlock response is valid
Import
Tool
Description
import_csv
Import CSV — idempotent, preserves user edits
get_import_stats
Import sources, date ranges, ambiguous counts
Transactions
Tool
Description
get_transactions
Filter by category, month, account, date range, search, unclassified-only
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.
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:
Operator
Meaning
lt
Less than (<-95 matches debits over $95)
lte
Less than or equal
gt
Greater than (gte 50 matches amounts $50+)
gte
Greater than or equal
eq
Exact match (!33 style negation not supported — use neq)
neq
Not 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)