taxformatter-mcp-server
by Sean-Bravo
README.md
<div align="center">
# ๐ TaxFormatter
### _Crypto CSVs and bank statement PDFs, parsed into tax-ready data._
**REST API ยท MCP Server ยท Node SDK ยท Python SDK ยท Consumer Dashboard**
[](https://api.taxformatter.com)
[](https://www.npmjs.com/package/@taxformatter/mcp-server)
[](https://www.npmjs.com/package/@taxformatter/sdk)
[](LICENSE)
</div>
---
## ๐ What It Does
TaxFormatter turns messy financial exports into structured, tax-ready data โ for humans _and_ for AI agents.
Drop a CSV from Coinbase, a ZIP from Kraken, a `.tar.gz` from Binance, or a PDF statement from Chase, and get back a clean, normalized transaction set you can pipe into Koinly, TurboTax, CoinLedger, ZenLedger โ or straight into your own software.
```
Exchange CSV Clean, normalized
Bank PDF โ transactions (JSON / CSV)
XLSX / ZIP / TAR.GZ + AI-generated insights
```
---
## โจ Features
### ๐ Developer REST API
Ship a crypto-tax or bank-ingestion feature into your product in an afternoon.
- `POST /v1/parse` โ upload a CSV or PDF, get structured JSON back
- `GET /v1/sources` โ list every supported exchange, bank, and output format
- `GET /v1/usage` โ monthly quota, RPM limit, current consumption
- `GET /v1/health` โ liveness probe
- **Auth:** `X-API-Key` header with `tf_live_*` keys (SHA-256 hashed at rest)
- **Host:** `https://api.taxformatter.com`
### ๐ค MCP Server for AI Agents
Give Claude, Cursor, Windsurf, or any MCP-compatible agent the ability to parse crypto and bank data directly.
```bash
npx @taxformatter/mcp-server
```
| Tool | What it does |
|------|---------------|
| `parse_crypto_csv` | Auto-detects the exchange, returns normalized transactions |
| `parse_bank_statement` | Extracts transactions from bank statement PDFs |
| `list_supported_sources` | Queries every supported source + output format |
### ๐ฆ Official SDKs
- **Node.js** โ [`@taxformatter/sdk`](packages/sdk-node) โ promise-based, fully typed
- **Python** โ [`taxformatter`](packages/sdk-python) โ idiomatic, type-hinted
### ๐ฆ 14 Exchanges ยท 7+ Banks ยท 4 Tax Software Formats
**Exchanges:** Coinbase ยท Kraken ยท Gemini ยท Binance ยท Robinhood ยท Crypto.com ยท PayPal ยท Cash App ยท Venmo ยท KuCoin ยท Bybit ยท FTX ยท Bitfinex ยท OKX
**Banks:** Chase ยท Mercury ยท Navy Federal ยท Bank of America ยท Wells Fargo ยท Citi ยท Capital One
**Export formats:** Koinly ยท TurboTax (Form 8949) ยท CoinLedger ยท ZenLedger
### ๐ง Tiered AI Insights
Every parsed file comes back with actionable analysis โ scaled to your plan.
| Tier | Model | Output |
|------|-------|--------|
| Free / Starter | Gemini 2.5 Flash | Quick stats + basic flagging |
| Growth | Claude Sonnet 4.6 | Balanced analysis, breakdowns |
| Business | Claude Opus 4.7 | Deep analysis + tax suggestions |
### ๐ฅ๏ธ Consumer Dashboard
Not a developer? The web app at [taxformatter.com](https://taxformatter.com) is a full drag-and-drop experience with real-time job status, exchange auto-detection, transformation previews, and one-click downloads.
---
## ๐๏ธ Tech Stack
| Layer | Technology |
|-------|------------|
| **Frontend** | Next.js 16 ยท React 19 ยท TypeScript ยท Tailwind v4 |
| **Auth** | NextAuth (Google OAuth + email/password + 2FA) |
| **Database** | Neon (serverless PostgreSQL) |
| **Storage** | AWS S3 (presigned URLs) |
| **Queue** | AWS SQS + DLQ |
| **Compute** | AWS Lambda ร 4 (scanner, processor, webhook, api) |
| **Edge** | AWS API Gateway + WAF + CloudFront |
| **Payments** | Stripe (consumer + developer tiers) |
| **Email** | AWS SES / Nodemailer |
| **Monitoring** | Sentry + CloudWatch |
| **IaC** | Terraform |
---
## ๐ Repo Layout
```
trw/
โโโ app/ # Next.js App Router (marketing, dashboard, /v1 admin)
โ โโโ api/ # Internal API routes (NextAuth, uploads, jobs, dev keys)
โ โโโ dashboard/ # Authenticated user area + /dashboard/developer
โ โโโ docs/ # MDX-powered docs site
โ โโโ upload/ # Anonymous bank statement โ CSV landing page
โ
โโโ backend/ # Python processing layer (AWS Lambda)
โ โโโ handlers/ # scanner ยท processor ยท webhook ยท api
โ โโโ services/
โ โ โโโ engine.py # CSV parsing (14 exchange parsers)
โ โ โโโ format_converter.py # Koinly โ TurboTax/CoinLedger/ZenLedger
โ โ โโโ fingerprinting.py # Exchange auto-detection
โ โ โโโ ai_insights.py # Tiered AI analysis
โ โ โโโ api_auth.py # API key validation + rate limiting
โ โ โโโ bank_statement/ # PDF extraction pipeline
โ โโโ configs/banks/*.yaml # YAML-driven bank configs
โ โโโ terraform/ # Infra as code
โ
โโโ packages/
โ โโโ mcp-server/ # @taxformatter/mcp-server (npm)
โ โโโ sdk-node/ # @taxformatter/sdk (npm)
โ โโโ sdk-python/ # taxformatter (PyPI)
โ
โโโ components/ # React components (marketing, dashboard, ui)
โโโ lib/ # Business logic (auth, api-keys, stripe, email)
โโโ db/ # PostgreSQL schema + migrations
โโโ docs/ # Setup guides
```
Full architectural reference: **[ARCHITECTURE.md](ARCHITECTURE.md)**
---
## โก Quick Start
### Run the web app
```bash
npm install
npm run dev
```
Open [http://localhost:3000](http://localhost:3000).
### Try the API
```bash
curl -X POST https://api.taxformatter.com/v1/parse \
-H "X-API-Key: tf_live_..." \
-F "file=@coinbase.csv"
```
### Use the MCP server with Claude Code
```json
{
"mcpServers": {
"taxformatter": {
"command": "npx",
"args": ["@taxformatter/mcp-server"],
"env": { "TAXFORMATTER_API_KEY": "tf_live_..." }
}
}
}
```
### Install the Node SDK
```bash
npm install @taxformatter/sdk
```
```ts
import { TaxFormatter } from "@taxformatter/sdk";
const tf = new TaxFormatter({ apiKey: process.env.TF_API_KEY! });
const result = await tf.parse({ file: fs.createReadStream("./coinbase.csv") });
```
---
## ๐งช Testing
```bash
npm test # Jest unit tests (160+ across API, MCP, keys, UI)
npm run test:e2e # Playwright end-to-end tests
npm run typecheck # TypeScript strict mode
npm run lint # ESLint
```
---
## ๐ณ Pricing
One plan, two ways to use it โ drop a file in the dashboard or call our API. Same quota, same AI insights.
| Tier | Price | Quota | RPM | AI Insights | Highlights |
|------|-------|-------|-----|-------------|------------|
| Free | $0 | 25 files | 10 | Gemini 2.5 Flash | All 14 exchanges ยท No credit card |
| Starter | $29/mo | 100 files | 30 | Gemini 2.5 Flash | All 14 exchanges |
| Growth | $99/mo | 500 files | 60 | Claude Sonnet 4.6 | + Bank PDF parsing |
| Business | $249/mo | 2,000 files | 120 | Claude Opus 4.7 | + Custom integrations ยท SLA |
---
## ๐ Security Highlights
- **Stateless API processing** โ file content lives in Lambda RAM only, never written to disk
- **Zero payload logging** โ `api_requests` stores metadata only (hash, status, bytes, timing)
- **API keys SHA-256 hashed** at rest, prefixed `tf_live_` for easy identification
- **TLS 1.3** enforced everywhere
- **AES-256** encryption on all stored uploads
- **AWS WAF** โ DDoS shield, SQL injection, XSS mitigation
- **User-controlled retention** โ 1 year default, or delete-after-download
Full disclosure at [taxformatter.com/security](https://taxformatter.com/security).
---
## ๐ Documentation
- **[ARCHITECTURE.md](ARCHITECTURE.md)** โ Full system design
- **[content/docs/api/index.md](content/docs/api/index.md)** โ API reference
- **[packages/mcp-server/README.md](packages/mcp-server/README.md)** โ MCP setup guide
- **[RELIABILITY.md](RELIABILITY.md)** โ SLOs, incident playbooks
- **[docs/](docs/)** โ Stripe, Sentry, and deployment guides
---
## License
Source-available, not open source. Copyright (c) 2026 Quantum Transfer Group,
all rights reserved โ you may read and audit this code, but not run, copy, or
build on it. Full terms in [LICENSE](LICENSE); the published npm and PyPI
client packages are licensed separately.
## Security
Found a vulnerability? Report it privately โ see [SECURITY.md](SECURITY.md).
Please don't open a public issue.
## Contributing
Bug reports are welcome, especially parsing failures against real exchange or
bank exports. We don't accept outside pull requests โ see
[CONTRIBUTING.md](CONTRIBUTING.md).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues