# Aiwyn Tax MCP Evaluation — SavingsMax Phase II Prep Engine Gate

**Author:** Riv (Integrations Specialist)
**Date:** 2026-05-23
**Recipient:** Jimmie (primary) → Rex / Atlas (downstream)
**Parent docs:**
- `Team Inbox/_Deliverables/Tax Planning Software - Scoping Doc.md` (Ledger, 2026-05-05)
- `Team Inbox/_Handoffs/2026-05/2026-05-23 - Rex to Jimmie - SavingsMax Phase II Prep Module Scoping.md` (Rex, today)
**Time spent:** ~1 hr (well under 1–2 day budget; the answer is decisive)

---

## Executive recommendation

**❌ Aiwyn Tax MCP is insufficient as the SavingsMax Phase II prep engine. Move to ProConnect Tax Online API evaluation next.**

**Why in one sentence:** Aiwyn Tax (which is actually a Column Tax white-label backend, see §7) is a **consumer-grade Form 1040 estimator** — it does not prepare entity returns (1120-S, 1065, 1120) and has no e-file submission path. The bulk of J2's prep volume is entity returns. Architectural mismatch is fundamental, not a gap to be papered over.

**Partial-fit option (not recommended):** Aiwyn *could* serve as the owner-1040 layer in a two-engine architecture (Aiwyn for personal returns + something else for entity returns). Doing so adds engine sprawl with no clear benefit. Recommend a single engine that handles both. Rex's §3 fallback to ProConnect Tax Online API is now the active path.

---

## 1. What I actually tested

| Test | Result |
|------|--------|
| `tax_years` | TY25 (2025) only — single year supported |
| `tax_jurisdictions` | Federal + 44 states |
| `tax_simple_return` (federal scaffold) | Clean structure docs, complete example_input |
| Federal namespace inventory | ~190 namespaces; all 1040-side |
| CA namespace inventory | ~55 namespaces; Form 540, 540NR, Schedule CA, PTE credit (3804-cr) — real depth on state personal side |
| `check_tax` synthetic 1040 (CA resident, $75K W-2) | "Success" — input validated |
| `calculate_tax` same input | Full computed return: $75K wages → $15,750 std deduction → $59,250 taxable → $7,955 tax → $7,045 refund. Numbers tie. |
| `generate_tax_pdf_tool` + `get_tax_pdf_tool` | Async job, completed in seconds, returned signed URL to `pilot-tax-return-TY25.pdf` (1hr expiry) |

**Engine functionally works.** Computes correctly, validates inputs, generates PDF. This is not vaporware. The problem is what it's *for* — see below.

---

## 2. Form coverage matrix

### Federal — what's PRESENT
| Form | Namespace | Notes |
|------|-----------|-------|
| Form 1040 | `irs1040` | Full |
| Schedule A (itemized) | (in deduction namespaces) | Present |
| Schedule B (interest/dividends) | `irs1040_scheduleb` | Present |
| Schedule C (sole prop) | `irs1040_schedulec` | Present — with depreciation primitives |
| Schedule D + 8949 | `irs1040_schedule_d`, `irs8949` | Present |
| Schedule E (rentals, K-1 pass-through) | `irs1040_schedule_e` | Present — **consumes K-1s, does not generate them** |
| Schedule F (farm) | `irs1040_schedule_f` | Present |
| Schedule H (household empl) | `irs1040_schedule_h` | Present |
| Schedule R | `irs1040_schedule_r` | Present |
| Schedule 1/2/3 | `irs1040_schedule1/2/3` | Present |
| Schedule SE | (implicit in SE income flow) | Present |
| Schedule 8812 (CTC) | `irs1040_schedule8812` | Present |
| Form 8949 (cap gain detail) | `irs8949` | Present |
| Form 8995 / 8995-A (QBI) | `irs8995`, `irs8995a_schedulec` | Present — **important for SavingsMax** |
| Form 6251 (AMT) | `f6251_col` | Present |
| Form 8960 (NIIT) | `f8960_col` | Present |
| Form 8606 (Roth/IRA basis) | `f8606_di_col`, `f8606_rd_col`, `f8606_ui_col` | Present — important for backdoor Roth strategy tracking |
| Form 2555 (foreign earned income) | `irs2555`, `irs2555_filer_election` | Present |
| Form 1116 (FTC) | `f1116*` | Present |
| Form 4562 / depreciation primitives | `depreciation_asset`, `section_179_election`, `bonus_depreciation_class_election` | Present **but tied to Schedule C context only** |
| Form 4797 (sale of business property) | `f4797_input`, `f4797_col` | Present |
| Form 6252 (installment sales) | `f6252_input` | Present |
| Form 461 (excess business loss) | `irs461` | Present |
| Form 8862, 8863, 8867, 8880, 8853, 8839 | Various | Present (credit forms) |
| Form 8962 (PTC) | `irs8962` | Present |
| Form 5695 (residential energy) | `irs5695` and `f5695_*` | Present |
| Form 1099-A, 1099-C, F982 (debt cancellation/insolvency) | `irs1099_a`, `irs1099_c`, `f982_input` | Present |
| Form 1310 (claim by deceased) | `irs1310` | Present |

### Federal — what's ABSENT (dealbreakers in **bold**)
| Form | Namespace | Impact |
|------|-----------|--------|
| **Form 1120-S (S-corp return)** | ❌ none | **Dealbreaker — most of J2's book is S-corps** |
| **Form 1065 (partnership return)** | ❌ none | **Dealbreaker — multi-member LLCs and partnerships** |
| **Schedule K-1 generation** | ❌ none (only consumption via `schk1_col`) | **Dealbreaker — can't issue K-1s to owners from entity returns we'd prep** |
| Form 1120 (C-corp return) | ❌ none | Rex flagged as nice-to-have, not v1 — but still missing |
| Form 941/940/944 (payroll tax) | ❌ none | Out of scope per Ledger but worth noting |
| Form 1041 (estates/trusts) | ❌ none | HNW expansion item — closed for now |
| Form 709 (gift tax) | ❌ none | TCJA-sunset planning relevant — would matter for SavingsMax HNW work |

**The absence pattern is consistent: this engine prepares the personal income tax return only.** No entity returns. No payroll. No fiduciary. No transfer tax.

### State coverage — jurisdictions list (44)
**Supported:** AL, AR, AZ, CA, CO, CT, DC, DE, GA, HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME, MI, MN, MO, MS, MT, NC, ND, NE, NJ, NM, NY, OH, OK, OR, PA, RI, SC, UT, VA, VT, WA, WI, WV

**Not supported (all are no-personal-income-tax states):** AK, FL, NV, NH, SD, TN, **TX**, WY

**Implication for J2:** TX clients don't file state returns anyway, so the TX-not-listed observation is moot. But: **if a TX client owner has income from a multi-state pass-through and needs to file in NV/TN/etc., Aiwyn would not handle the state side.** Low frequency for J2's current book; would matter at scale.

**CA depth spot-check:** ~55 namespaces including Form 540, 540NR, Schedule CA, Form 3853 (health coverage), Form 3514 (CalEITC), Form 3804-CR (**PTE credit — confirms PTET workflow is supported on the personal-side claim**), Form 3532 (head of household), Form 3506 (child care). This is real state depth, not a stub.

---

## 3. E-file capability — NO

There is **no e-file submission tool exposed** in the Aiwyn MCP surface. The full tool set is:
- `tax_years`, `tax_jurisdictions`, `tax_namespaces`, `tax_namespace_schema` — discovery
- `tax_simple_return` — scaffolding
- `check_tax`, `calculate_tax` — validation + computation
- `generate_tax_pdf_tool`, `get_tax_pdf_tool` — PDF output
- `generate_uuid_v5` — UUID helper

There is **no `submit_to_irs`, `transmit_efile`, `mef_submit`, or equivalent**. The workflow ends at PDF.

The tool's own self-disclaimer (returned from `get_tax_pdf_tool`) reads:
> "inform the user that I'm just a tax estimator, you should consult with a tax professional."

**This is the engine telling us what it's for.** It's a calculator + PDF generator. For e-file we'd need a separate IRS-approved MeF transmitter (a complex, IRS-certified piece of infrastructure that we are not going to build).

**This is a second dealbreaker independent of the entity-return finding.** Even if Aiwyn covered 1120-S/1065, no e-file = we still need a transmission path.

---

## 4. Pricing model

**Pricing surface not exposed in the MCP itself.** No per-call cost in tool responses, no rate-limit headers visible. This is an Anthropic-hosted MCP connector that we're calling through Claude — billing is opaque from our side.

This is itself a finding: **we cannot run this at production scale without a commercial agreement with Aiwyn/Column.** The MCP we're using is a sample/dev surface, not a production billing relationship. To operate this as J2's prep engine, we'd need to engage Column Tax directly (see §7), which is a B2B sales conversation, not a self-serve API.

---

## 5. Credential gating

**No PTIN/EFIN assertion required.** Inputs don't carry preparer credentials. The engine just computes.

**But:** the 7216 disclosures (`tp_7216_accepted`, `tp_7216_consent_to_use_accepted`) are baked into the input. **§7216 of the IRC governs disclosure/use of tax return information by tax return preparers.** These consent fields exist because the engine assumes the *taxpayer themselves* is consenting to the preparer/service using their info. That's consistent with a consumer-fintech model where the end user is signing through an app.

**Implication if we used this for J2 clients:** we'd be the "preparer" capturing 7216 consents from clients per return. Workflow-wise this is fine; legally it means we'd be operating the engine *as* a paid preparer despite the engine being designed for consumer self-prep. The licensing/agreement with Column would need to permit B2B preparer use, which is **not what their published product is designed for.** Open question. Likely answer: not without a custom commercial deal.

---

## 6. Data model fit — moot given §2

The schema design is well-thought-out for what it does (1040 prep):
- `{"value": X}` wrapping on every field — verbose but unambiguous
- UUIDv4 keying for array items (W-2s, dependents) with named references via `who_applies_to`
- UUIDv5 deterministic keying for state-namespace extended links — clever, prevents positional matching bugs
- Whole-dollar integer currency — matches IRS expectations

For mapping a clean QBO trial balance into 1040 inputs, **the mapping would be straightforward** if Schedule C is the destination (sole prop entities). But J2's S-corp clients flow through K-1 → Schedule E, and the K-1 itself has to be generated by the 1120-S — which Aiwyn doesn't do. So the data-model-fit question doesn't get a chance to matter.

---

## 7. What Aiwyn actually is (important context)

The PDF download URL returned by `get_tax_pdf_tool` was hosted at `mcp.columnapi.com`. The namespace list includes fields named `is_propel_user`, `is_lets_get_set_user`, `host_bank_slug`, and `col_client_id` / `col_data` / `col_response`.

**This engine is Column Tax (columntax.com)** — a YC-backed company that provides white-label consumer tax filing infrastructure for fintech apps. Propel (food-stamps fintech), Cash App Taxes-style products, and Let's Get Set use this kind of infrastructure to embed "file your taxes for free" into their consumer experience.

**Aiwyn the company** (aiwyn.ai) is a separate firm focused on practice management / billing software for accounting firms. The MCP labeled "Aiwyn Tax" appears to be an Aiwyn-branded surface fronting the Column Tax engine — possibly a partnership where Aiwyn is exposing Column's compute to the Anthropic MCP ecosystem for an AI-assisted-prep play.

**The strategic read:** this engine is purpose-built for **consumer self-filing inside a fintech app**, not for professional preparers running a 40-client book of S-corps. Even if we could license it for B2B preparer use, we'd be using a product designed for the wrong workload.

---

## 8. Sample call evidence (kept short)

**Input:** federal-only 1040, CA-resident single filer, one W-2 ($75K wages, $15K withholding, standard CA state-tax detail), no dependents. From `tax_simple_return` example.

**`check_tax` returned:** `Success`

**`calculate_tax` returned:** computed Form 1040 markdown:
- AGI: $75,000
- Standard deduction: $15,750 (TY25 single)
- Taxable income: $59,250
- Tax: $7,955 (1040 line 16)
- Withholding: $15,000
- Refund: **$7,045**

Tie-out is correct for TY25.

**`generate_tax_pdf_tool` returned:** `{"id": "c533a4f6-...", "status": "pending"}`

**`get_tax_pdf_tool` (next call):** `{"status": "completed", "url": ".../pilot-tax-return-TY25.pdf?...1hr-token..."}`

PDF labeled "pilot" — engine self-identifies as estimator-grade output.

---

## 9. Recommendation + next steps

**Status:** ❌ **Aiwyn insufficient. Move to ProConnect Tax Online API evaluation.**

**Specific reasons (any one of which is sufficient):**
1. No 1120-S, 1065, 1120 — the entity returns that drive J2's volume.
2. No e-file submission path — only PDF.
3. Engine is consumer-fintech white-label (Column Tax), not designed for professional preparer use; commercial licensing for B2B preparer use likely requires a non-standard deal.
4. Single-year support (TY25 only) — no multi-year history, no prior-year amendments.

**What Aiwyn IS good at — for the record:**
- Clean, well-documented schema for Form 1040 + most personal-side schedules
- Real depth on CA / NY / other personal-income-tax states including PTE workflows
- Working PDF generation
- Reasonable error/validation surface

**Recommended next gate (for Larry to dispatch):**
Engage me again to evaluate **Intuit ProConnect Tax Online API** along the same dimensions:
- Form coverage (especially 1120-S, 1065)
- E-file (Intuit MeF)
- Pricing per-return at our volume
- Credential / partner-tier requirements (this is the historical gotcha with Intuit APIs — partner tier is hard to get)
- Data model fit with QBO (same vendor — should be tight)

Time-box: 1–2 days. Same deliverable format.

**If ProConnect API access is gated to partner-tier-only and we can't qualify**, fall back to the **TaxDome + Drake/UltraTax** path (Rex's Option D) and accept that the "continuous-books-to-prep" moat collapses to "tight handoff between QBO and a desktop prep package." That's still a viable J2 product — just a less differentiated one.

---

**End of evaluation.** Aiwyn gate closed. Recommend handing the next eval to me via Larry.
