Skip to main content
Glama
DojoGenesis

no-tax-on-tips-mcp

by DojoGenesis
README.md
# no-tax-on-tips-mcp

MCP server exposing the OBBBA "No Tax on Tips" federal deduction logic as callable tools (stdio transport).

## DISCLAIMERS

**1. Informational only — NOT tax advice.**
This tool provides estimates based on publicly available statutory and regulatory information. It is NOT legal or tax advice. Verify all results against IRS guidance at [irs.gov/TippedOccupations](https://www.irs.gov/TippedOccupations) and consult a qualified tax professional before making any tax decision.

**2. Occupation codes are placeholder slugs — NOT validated Treasury codes.**
The TTOC occupation codes in this server (e.g. `"bartender_barback"`) are DESCRIPTIVE PLACEHOLDER SLUGS. They are NOT the validated 3-digit numeric Treasury codes from the IRS final regulations (Federal Register 2026-07104). Operator validation is pending (`reviewed_by_operator_at_utc = 0` in source). Do not use these codes for official filings.

**3. Applies to tax years 2025-2028 only (OBBBA sunset window).**
The OBBBA No-Tax-on-Tips deduction is effective for tax years 2025 through 2028 (inclusive). Per-filing-status caps and MAGI phase-outs apply. Tax year 2025 has transition relief (separate-reporting requirement waived).

**4. module_version: `1.0.0-2026-04-13`**
This matches the IRS final regulations date (Federal Register 2026-07104). If IRS guidance changes, the module version must be updated and cached deduction results invalidated.

---

## Installation

```bash
npm install
npm run build
```

## Running

```bash
npm start
```

Or in development (no build step):

```bash
npm run dev
```

## Testing

```bash
npm test
```

## MCP Client Configuration

Add to your MCP client config (e.g. Claude Desktop `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "no-tax-on-tips": {
      "command": "node",
      "args": ["C:/Users/cruzr/no-tax-on-tips-mcp/dist/index.js"]
    }
  }
}
```

---

## Tools

### `check_tip_deduction_eligibility`

Checks eligibility without computing a dollar amount.

**Input:**
```json
{
  "occupation_code": "wait_staff",
  "magi_usd": 75000,
  "filing_status": "single",
  "tax_year": 2026
}
```

**Output:**
```json
{
  "in_sunset_window": true,
  "transition_relief": false,
  "ttoc_eligible": true,
  "phase_out_fraction": 0,
  "eligible": true,
  "notes": ["..."]
}
```

`eligible = in_sunset_window && ttoc_eligible && phase_out_fraction < 1`

---

### `estimate_tip_deduction`

Full deduction estimate. USD in, USD out. Internal math uses integer cents.

**Input:**
```json
{
  "qualified_tips_usd": 23000,
  "filing_status": "single",
  "tax_year": 2026,
  "magi_usd": 75000
}
```

**Output:**
```json
{
  "qualified_tips_usd": 23000,
  "cap_usd": 25000,
  "phase_out_fraction": 0,
  "deduction_usd": 23000,
  "disclaimer": "..."
}
```

---

### `list_eligible_occupations`

Returns the onboarding picker subset (11 occupation codes + 1 lookup placeholder).

---

### `get_obbba_reference`

Returns caps, phase-out bands, sunset window, module version, source URLs, and disclaimers.

---

## Caps and Phase-Out Bands (2025-2028)

| Filing Status | Cap | Phase-Out Threshold | Full Phase-Out |
|---|---|---|---|
| Single | $25,000 | $150,000 | $400,000 |
| Head of Household | $25,000 | $150,000 | $400,000 |
| Married Filing Jointly | $25,000 | $300,000 | $550,000 |
| Married Filing Separately | $12,500 | $150,000 | $275,000 |

Phase-out is linear: $100 reduction per $1,000 (or fraction) of MAGI over threshold.

---

## Source

Tax logic copied verbatim from `nightshift-v2/src/features/tax-engine/jurisdictions/us-fed/deductions/obbba-no-tax-on-tips/` (read-only source). No formulas were re-derived. Import paths adjusted for this standalone package; no other modifications.

**Source references:**
- IRS Tipped Occupations: https://www.irs.gov/TippedOccupations
- Federal Register 2026-07104: https://www.federalregister.gov/documents/2026/04/13/2026-07104/occupations-that-customarily-and-regularly-received-tips-definition-of-qualified-tips

---

## Publishing

Do NOT publish to npm or push to a remote without operator sign-off. This is a local build only. Publishing is a separate operator step.

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct purpose: eligibility check, deduction estimate, occupation list, and reference data. The check tool explicitly avoids computing a dollar amount, clearly differentiating it from the estimate tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (check_, estimate_, list_, get_) with lowercase snake_case, making them predictable.

Tool Count5/5

4 tools is well-scoped for a focused tax-deduction server, covering the essential actions without unnecessary bloat.

Completeness5/5

The tool set covers the full workflow: checking eligibility, estimating deduction, listing eligible occupations, and retrieving reference parameters. No obvious gaps for an informational/calculation server.

Maintenance

ActivitySlowing
ResponsivenessNo issues