{"openapi":"3.1.0","info":{"title":"Tollbooth — verified calculators for AI agents","version":"1.0.0","description":"59 pay-per-call, provenance-backed financial/tax/legal calculators for autonomous agents. Every answer ships a formula trace, its 2026 source, and a reproducible hash you can re-verify free. Data vintage: July 2026. Estimates only — not financial, legal, or tax advice. Computed from published 2026 datasets and stated formulas; verify with a qualified professional before acting.","x-payment-protocol":"x402","x-network":"eip155:8453"},"servers":[{"url":"https://x402toll.com"}],"paths":{"/v1/paycheck":{"post":{"operationId":"paycheck","summary":"US net-paycheck breakdown for any of 51 jurisdictions: 2026 federal brackets, FICA (SS wage base $184,500, additional Medicare), and state income tax. Golden-vector verified.","description":"US net-paycheck breakdown for any of 51 jurisdictions: 2026 federal brackets, FICA (SS wage base $184,500, additional Medicare), and state income tax. Golden-vector verified.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: taxable = salary - standardDeduction; federal = marginal 2026 brackets; state = marginal/flat per 51-jurisdiction table (MFJ doubles single thresholds); FICA = 6.2% SS to wage base + 1.45% Medicare + 0.9% additional over threshold; net/check = netAnnual / payPeriods","tags":["Payroll & tax"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["salary","state"],"properties":{"salary":{"type":"number","minimum":0,"maximum":10000000},"state":{"type":"string","description":"2-letter US state/DC code"},"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"},"payFrequency":{"type":"string","enum":["weekly","biweekly","semimonthly","monthly"],"default":"biweekly"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/mortgage-affordability":{"post":{"operationId":"mortgage_affordability","summary":"Self-employed mortgage affordability: 2-year income averaging with add-backs, the declining-income rule, front/back DTI limits, PMI-aware max-price solve.","description":"Self-employed mortgage affordability: 2-year income averaging with add-backs, the declining-income rule, front/back DTI limits, PMI-aware max-price solve.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: qualifying income = declining rule (year1 only if declining) else 2-yr average, both + add-backs; budget = min(frontDTI, backDTI - debts); P = (B + D*(k+pm)) / (k + pm + tr) with amortization factor k, PMI when LTV > 80%","tags":["Real estate"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["year1NetIncome","year2NetIncome"],"properties":{"year1NetIncome":{"type":"number"},"year2NetIncome":{"type":"number"},"addBacks":{"type":"number","default":0},"monthlyDebts":{"type":"number","default":0},"downPayment":{"type":"number","default":0},"interestRatePct":{"type":"number","default":6.5},"termYears":{"type":"number","enum":[15,20,30],"default":30},"propertyTaxPct":{"type":"number","default":1.1},"annualInsurance":{"type":"number","default":1500},"monthlyHOA":{"type":"number","default":0},"frontDTIPct":{"type":"number","default":28},"backDTIPct":{"type":"number","default":36},"pmiRatePct":{"type":"number","default":0.6}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/llc-cost":{"post":{"operationId":"llc_cost","summary":"LLC formation cost for any US state + DC: filing fee, annual/biennial report, franchise tax, publication requirements — Year-1 and 5-year totals from each state's own 2026 fee schedule.","description":"LLC formation cost for any US state + DC: filing fee, annual/biennial report, franchise tax, publication requirements — Year-1 and 5-year totals from each state's own 2026 fee schedule.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: year1 = filing + (annual report if annual) + franchiseFlat + registeredAgent + publication; 5yr = filing + report*(5 if annual, 2 if biennial) + franchise*5 + agent*5 + publication","tags":["Business"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["state"],"properties":{"state":{"type":"string","description":"2-letter US state/DC code"},"registeredAgent":{"type":"boolean","default":false},"nycMetro":{"type":"boolean","default":true},"azExempt":{"type":"boolean","default":true}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/reports/debt-plan":{"post":{"operationId":"debt_plan","summary":"Full debt-payoff report: avalanche vs snowball simulated month-by-month with debt rollover — payoff order, debt-free month, total interest, and the exact gap between strategies.","description":"Full debt-payoff report: avalanche vs snowball simulated month-by-month with debt rollover — payoff order, debt-free month, total interest, and the exact gap between strategies.\n\nPayment: x402 ($0.25 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: monthly: accrue balance*APR/12 per open debt, pay minimums, cascade remaining budget to target (avalanche: highest APR first; snowball: smallest balance first); 600-month cap","tags":["Lending"],"x-x402":{"price":"$0.25","priceUsd":0.25,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["debts"],"properties":{"debts":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"object","required":["balance","apr","minPayment"],"properties":{"name":{"type":"string"},"balance":{"type":"number"},"apr":{"type":"number"},"minPayment":{"type":"number"}}}},"extraMonthly":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/reports/llc-50-state":{"post":{"operationId":"llc_50_state","summary":"All 51 US jurisdictions ranked by true 5-year LLC cost — filing, reports, franchise taxes, publication requirements — with per-state notes.","description":"All 51 US jurisdictions ranked by true 5-year LLC cost — filing, reports, franchise taxes, publication requirements — with per-state notes.\n\nPayment: x402 ($0.50 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: computeLlcCost across all 51 jurisdictions, ranked by 5-year total then Year-1 total","tags":["Business"],"x-x402":{"price":"$0.50","priceUsd":0.5,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"registeredAgent":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/reports/relocation-paycheck":{"post":{"operationId":"relocation_paycheck","summary":"The same salary across all 51 US jurisdictions, ranked by net take-home — the relocation what-if in one call, with per-state tax detail and the best-to-worst annual spread.","description":"The same salary across all 51 US jurisdictions, ranked by net take-home — the relocation what-if in one call, with per-state tax detail and the best-to-worst annual spread.\n\nPayment: x402 ($1.00 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: computePaycheck across all 51 jurisdictions at the given salary/filing status, ranked by net annual","tags":["Payroll & tax"],"x-x402":{"price":"$1.00","priceUsd":1,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["salary"],"properties":{"salary":{"type":"number"},"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"},"payFrequency":{"type":"string","enum":["weekly","biweekly","semimonthly","monthly"],"default":"biweekly"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/crypto/tax-lots":{"post":{"operationId":"crypto_tax_lot","summary":"Match a crypto sale against buy lots (FIFO / LIFO / HIFO), returning realized gain/loss split short- vs long-term (IRS >365-day rule) plus the remaining lots.","description":"Match a crypto sale against buy lots (FIFO / LIFO / HIFO), returning realized gain/loss split short- vs long-term (IRS >365-day rule) plus the remaining lots.\n\nPayment: x402 ($0.25 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: order lots by method (FIFO=oldest, LIFO=newest, HIFO=highest cost); consume the sale qty; per matched portion gain = qty*(sellPrice - lotPrice), term = long if held > 365 days else short","tags":["Crypto & DeFi"],"x-x402":{"price":"$0.25","priceUsd":0.25,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["lots","sale"],"properties":{"method":{"type":"string","enum":["fifo","lifo","hifo"],"default":"fifo"},"lots":{"type":"array","minItems":1,"maxItems":200,"items":{"type":"object","required":["qty","priceUsd","date"],"properties":{"qty":{"type":"number"},"priceUsd":{"type":"number"},"date":{"type":"string"}}}},"sale":{"type":"object","required":["qty","priceUsd","date"],"properties":{"qty":{"type":"number"},"priceUsd":{"type":"number"},"date":{"type":"string"}}}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/crypto/impermanent-loss":{"post":{"operationId":"impermanent_loss","summary":"Impermanent loss for a 50/50 constant-product LP position vs simply holding, given the price change of the volatile asset.","description":"Impermanent loss for a 50/50 constant-product LP position vs simply holding, given the price change of the volatile asset.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: IL_fraction = 2*sqrt(r)/(1+r) - 1, r = currentPrice/initialPrice; dollar loss = -IL_fraction * positionValue","tags":["Crypto & DeFi"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["initialPrice","currentPrice"],"properties":{"initialPrice":{"type":"number"},"currentPrice":{"type":"number"},"positionValueUsd":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/crypto/apr-apy":{"post":{"operationId":"apr_apy","summary":"Convert between APR and APY at any compounding frequency (or continuous).","description":"Convert between APR and APY at any compounding frequency (or continuous).\n\nPayment: x402 ($0.02 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: APY = (1+APR/n)^n - 1; APR = n*((1+APY)^(1/n) - 1); continuous uses e^APR-1 / ln(1+APY)","tags":["Crypto & DeFi"],"x-x402":{"price":"$0.02","priceUsd":0.02,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ratePct"],"properties":{"direction":{"type":"string","enum":["apr_to_apy","apy_to_apr"],"default":"apr_to_apy"},"ratePct":{"type":"number"},"compoundsPerYear":{"type":"number","default":12},"compounding":{"type":"string","enum":["periodic","continuous"],"default":"periodic"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/crypto/liquidation-price":{"post":{"operationId":"liquidation_price","summary":"Liquidation price for a leveraged long or short (isolated margin), plus the % move to liquidation.","description":"Liquidation price for a leveraged long or short (isolated margin), plus the % move to liquidation.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: long: entry*(1 - 1/L + mmr); short: entry*(1 + 1/L - mmr), L = leverage, mmr = maintenance margin rate","tags":["Crypto & DeFi"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["entryPrice","leverage"],"properties":{"side":{"type":"string","enum":["long","short"],"default":"long"},"entryPrice":{"type":"number"},"leverage":{"type":"number"},"maintenanceMarginRatePct":{"type":"number","default":0.5}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/crypto/yield-compare":{"post":{"operationId":"yield_compare","summary":"Rank up to 10 stablecoin/yield options by projected return over a horizon at each stated APY.","description":"Rank up to 10 stablecoin/yield options by projected return over a horizon at each stated APY.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: projectedValue = principal*(1+apy)^years per option; ranked descending; spread = best - worst interest","tags":["Crypto & DeFi"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["principalUsd","options"],"properties":{"principalUsd":{"type":"number"},"years":{"type":"number","default":1},"options":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","required":["apyPct"],"properties":{"name":{"type":"string"},"apyPct":{"type":"number"}}}}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/tax/self-employment":{"post":{"operationId":"self_employment_tax","summary":"Self-employment (SE) tax on Schedule C net profit — Social Security to the 2026 $184,500 wage base, Medicare, Additional Medicare, and the deductible half.","description":"Self-employment (SE) tax on Schedule C net profit — Social Security to the 2026 $184,500 wage base, Medicare, Additional Medicare, and the deductible half.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: seBase = netProfit*0.9235; SS = 12.4%*min(seBase, 184500 - W2 SS wages); Medicare = 2.9%*seBase; +0.9% over the filing threshold; deductible half = (SS+Medicare)/2","tags":["Payroll & tax"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["netProfit"],"properties":{"netProfit":{"type":"number"},"filingStatus":{"type":"string","enum":["single","mfj","hoh","mfs"],"default":"single"},"w2SocialSecurityWages":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/tax/estimated":{"post":{"operationId":"estimated_tax","summary":"Quarterly estimated-tax safe harbor (Form 1040-ES): the required annual payment and per-quarter amount to avoid an underpayment penalty.","description":"Quarterly estimated-tax safe harbor (Form 1040-ES): the required annual payment and per-quarter amount to avoid an underpayment penalty.\n\nPayment: x402 ($0.10 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: required = min(90% of this-year tax, 100% of prior-year tax [110% if prior AGI > $150k, or > $75k if MFS]); quarterly = (required - withholding)/4","tags":["Payroll & tax"],"x-x402":{"price":"$0.10","priceUsd":0.1,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["expectedTaxThisYear","priorYearTax","priorYearAGI"],"properties":{"expectedTaxThisYear":{"type":"number"},"priorYearTax":{"type":"number"},"priorYearAGI":{"type":"number"},"withholdingThisYear":{"type":"number","default":0},"filingStatus":{"type":"string","enum":["single","mfj","hoh","mfs"],"default":"single"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/tax/capital-gains":{"post":{"operationId":"capital_gains_tax","summary":"Federal capital-gains tax: long-term stacked across the 2026 0%/15%/20% breakpoints, short-term at ordinary marginal rates, plus the 3.8% Net Investment Income Tax.","description":"Federal capital-gains tax: long-term stacked across the 2026 0%/15%/20% breakpoints, short-term at ordinary marginal rates, plus the 3.8% Net Investment Income Tax.\n\nPayment: x402 ($0.10 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: LT gains stack above ordinary taxable income across 0/15/20 bands (2026 breakpoints); ST gain taxed as incremental ordinary tax; NIIT = 3.8%*min(NII, MAGI over threshold)","tags":["Payroll & tax"],"x-x402":{"price":"$0.10","priceUsd":0.1,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"filingStatus":{"type":"string","enum":["single","mfj","hoh","mfs"],"default":"single"},"ordinaryTaxableIncome":{"type":"number","default":0},"longTermGain":{"type":"number","default":0},"shortTermGain":{"type":"number","default":0},"magi":{"type":"number"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/retirement/401k":{"post":{"operationId":"401k_match","summary":"401(k) contribution vs the 2026 limits (incl. age 50+ and 60–63 catch-ups) plus the employer match, capped at the §415(c) total.","description":"401(k) contribution vs the 2026 limits (incl. age 50+ and 60–63 catch-ups) plus the employer match, capped at the §415(c) total.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: employeeLimit = $24,500 + catch-up (age 50+ $8,000; age 60–63 $11,250, replaces not stacks); match = matchRate*min(contribution, salary*matchLimit); total capped at $72,000","tags":["Retirement"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["salary"],"properties":{"salary":{"type":"number"},"age":{"type":"number","default":40},"contributionPct":{"type":"number"},"contributionAmount":{"type":"number"},"employerMatchPct":{"type":"number","default":0},"employerMatchLimitPct":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/retirement/ira-limits":{"post":{"operationId":"ira_limits","summary":"2026 IRA / Roth contribution limit for your situation — including the Roth MAGI phase-out and traditional-deduction phase-out (if covered by a workplace plan).","description":"2026 IRA / Roth contribution limit for your situation — including the Roth MAGI phase-out and traditional-deduction phase-out (if covered by a workplace plan).\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: limit = $7,500 + $1,100 (age 50+); Roth/traditional reduced pro-rata across the 2026 MAGI phase-out range, IRS $10 rounding, $200 floor","tags":["Retirement"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["magi"],"properties":{"filingStatus":{"type":"string","enum":["single","mfj","hoh","mfs"],"default":"single"},"age":{"type":"number","default":40},"magi":{"type":"number"},"coveredByEmployerPlan":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/margin":{"post":{"operationId":"margin_markup","summary":"Margin, markup, and profit from cost — give cost plus any one of price, target margin %, or markup %, and it solves the rest.","description":"Margin, markup, and profit from cost — give cost plus any one of price, target margin %, or markup %, and it solves the rest.\n\nPayment: x402 ($0.02 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: from price: profit=price-cost, margin=profit/price, markup=profit/cost; from margin: price=cost/(1-m); from markup: price=cost*(1+mk)","tags":["Commerce"],"x-x402":{"price":"$0.02","priceUsd":0.02,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["cost"],"properties":{"cost":{"type":"number"},"price":{"type":"number"},"marginPct":{"type":"number"},"markupPct":{"type":"number"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/discount":{"post":{"operationId":"discount","summary":"Sale price after one or more stacked percentage discounts (applied sequentially, not summed) plus an optional flat amount off.","description":"Sale price after one or more stacked percentage discounts (applied sequentially, not summed) plus an optional flat amount off.\n\nPayment: x402 ($0.02 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: price = original * prod(1 - dᵢ/100) - flatOff; savings = original - final","tags":["Commerce"],"x-x402":{"price":"$0.02","priceUsd":0.02,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["originalPrice"],"properties":{"originalPrice":{"type":"number"},"discountsPct":{"type":"array","maxItems":20,"items":{"type":"number"}},"discountPct":{"type":"number"},"flatOff":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/tip-split":{"post":{"operationId":"tip_split","summary":"Tip amount, total, and per-person split for a restaurant bill.","description":"Tip amount, total, and per-person split for a restaurant bill.\n\nPayment: x402 ($0.01 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: tip = bill * tipPct/100; total = bill + tip; perPerson = total / numPeople","tags":["Commerce"],"x-x402":{"price":"$0.01","priceUsd":0.01,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["billAmount"],"properties":{"billAmount":{"type":"number"},"tipPct":{"type":"number","default":18},"numPeople":{"type":"number","default":1}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/break-even":{"post":{"operationId":"break_even","summary":"Break-even units and revenue (CVP): where contribution margin covers fixed costs.","description":"Break-even units and revenue (CVP): where contribution margin covers fixed costs.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: contributionMargin = price - variableCost; breakEvenUnits = fixedCosts / contributionMargin (rounded up); revenue = units * price","tags":["Commerce"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["fixedCosts","pricePerUnit","variableCostPerUnit"],"properties":{"fixedCosts":{"type":"number"},"pricePerUnit":{"type":"number"},"variableCostPerUnit":{"type":"number"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/order-total":{"post":{"operationId":"order_total","summary":"Order total from subtotal, discount, tax rate, and shipping — tax excludes shipping by default (toggle with taxShipping).","description":"Order total from subtotal, discount, tax rate, and shipping — tax excludes shipping by default (toggle with taxShipping).\n\nPayment: x402 ($0.02 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: afterDiscount = subtotal - discount; tax = (afterDiscount + (taxShipping? shipping:0)) * taxRate/100; total = afterDiscount + shipping + tax","tags":["Commerce"],"x-x402":{"price":"$0.02","priceUsd":0.02,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["subtotal"],"properties":{"subtotal":{"type":"number"},"discountPct":{"type":"number"},"discountAmount":{"type":"number"},"taxRatePct":{"type":"number","default":0},"shipping":{"type":"number","default":0},"taxShipping":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/roi":{"post":{"operationId":"roi_roas","summary":"ROI %, ROAS, profit, and profit margin from revenue and cost (e.g. ad spend).","description":"ROI %, ROAS, profit, and profit margin from revenue and cost (e.g. ad spend).\n\nPayment: x402 ($0.02 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: profit = revenue - cost; ROI% = profit/cost*100; ROAS = revenue/cost; margin% = profit/revenue*100","tags":["Commerce"],"x-x402":{"price":"$0.02","priceUsd":0.02,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["revenue","cost"],"properties":{"revenue":{"type":"number"},"cost":{"type":"number"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/sales-tax":{"post":{"operationId":"sales_tax","summary":"US sales tax — add or remove tax using the verified 2026 STATE base rate for any state + DC, plus an optional local rate. Flags gross-receipts states (HI/NM) and local-only states (AK).","description":"US sales tax — add or remove tax using the verified 2026 STATE base rate for any state + DC, plus an optional local rate. Flags gross-receipts states (HI/NM) and local-only states (AK).\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: combined = stateRate + localRate; add: tax = amount*rate/100; remove: base = amount/(1+rate/100), tax = amount-base","tags":["Commerce"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["state","amount"],"properties":{"state":{"type":"string","description":"2-letter US state/DC code"},"amount":{"type":"number"},"mode":{"type":"string","enum":["add","remove"],"default":"add"},"localRatePct":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/vat-gst":{"post":{"operationId":"vat_gst","summary":"VAT / GST for 16 major economies (UK, EU, Australia, Canada, Japan, Singapore, UAE, India, and more) at the verified 2026 standard rate — add or remove.","description":"VAT / GST for 16 major economies (UK, EU, Australia, Canada, Japan, Singapore, UAE, India, and more) at the verified 2026 standard rate — add or remove.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: add: vat = amount*rate/100, gross = amount+vat; remove: net = amount/(1+rate/100), vat = amount-net","tags":["Commerce"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["country","amount"],"properties":{"country":{"type":"string","description":"ISO country code, e.g. GB, DE, AU, SG, IN"},"amount":{"type":"number"},"mode":{"type":"string","enum":["add","remove"],"default":"add"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/processor-fee":{"post":{"operationId":"processor_fee","summary":"Payment-processor fee and net received for Stripe, PayPal, and Square at their verified 2026 standard US rates — or reverse gross-up (what to charge to net a target).","description":"Payment-processor fee and net received for Stripe, PayPal, and Square at their verified 2026 standard US rates — or reverse gross-up (what to charge to net a target).\n\nPayment: x402 ($0.02 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: net: fee = amount*pct/100 + fixed; gross-up: charge = (target + fixed)/(1 - pct/100)","tags":["Commerce"],"x-x402":{"price":"$0.02","priceUsd":0.02,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amount"],"properties":{"processor":{"type":"string","enum":["stripe","paypal-checkout","paypal-standard","square-online","square-inperson","square-keyed"],"default":"stripe"},"amount":{"type":"number"},"mode":{"type":"string","enum":["net","gross-up"],"default":"net"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/commerce/marketplace-fee":{"post":{"operationId":"marketplace_fee","summary":"Seller fees and net payout for Amazon, eBay, and Etsy at their verified 2026 standard fee schedules (Amazon referral %, eBay final value fee, Etsy listing + transaction + processing).","description":"Seller fees and net payout for Amazon, eBay, and Etsy at their verified 2026 standard fee schedules (Amazon referral %, eBay final value fee, Etsy listing + transaction + processing).\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: Amazon: max(price*referral%, $0.30); eBay: (price+ship)*13.6% + per-order; Etsy: $0.20 + 6.5% + (3% + $0.25)","tags":["Commerce"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["marketplace","salePrice"],"properties":{"marketplace":{"type":"string","enum":["amazon","ebay","etsy"],"default":"amazon"},"salePrice":{"type":"number"},"shippingCharged":{"type":"number","default":0},"referralPct":{"type":"number","description":"Amazon only — override the 15% default for your category"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/amortization":{"post":{"operationId":"loan_amortization","summary":"Amortized monthly payment, total interest, and a year-by-year balance schedule for any loan.","description":"Amortized monthly payment, total interest, and a year-by-year balance schedule for any loan.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: P = L·c(1+c)ⁿ / ((1+c)ⁿ−1), c = APR/1200; schedule simulated monthly","tags":["Lending"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["loanAmount","apr","termMonths"],"properties":{"loanAmount":{"type":"number"},"apr":{"type":"number"},"termMonths":{"type":"number"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/mortgage-payment":{"post":{"operationId":"mortgage_payment","summary":"Full monthly mortgage payment (PITI): principal & interest, property tax, insurance, PMI (auto when LTV > 80%), and HOA.","description":"Full monthly mortgage payment (PITI): principal & interest, property tax, insurance, PMI (auto when LTV > 80%), and HOA.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: loan = price − down; P&I amortized; tax = price·rate/1200; PMI applied when loan/price > 80%","tags":["Lending"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["homePrice","apr"],"properties":{"homePrice":{"type":"number"},"downPayment":{"type":"number","default":0},"apr":{"type":"number"},"termMonths":{"type":"number","default":360},"propertyTaxPct":{"type":"number","default":0},"annualInsurance":{"type":"number","default":0},"pmiRatePct":{"type":"number","default":0},"monthlyHOA":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/auto-loan":{"post":{"operationId":"auto_loan","summary":"Auto-loan payment including state sales tax (verified 2026 rates), trade-in credit, down payment, and fees.","description":"Auto-loan payment including state sales tax (verified 2026 rates), trade-in credit, down payment, and fees.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: tax = (price − tradeIn)·stateRate; financed = price − down − tradeIn + tax + fees; payment amortized","tags":["Lending"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["vehiclePrice","apr"],"properties":{"vehiclePrice":{"type":"number"},"downPayment":{"type":"number","default":0},"tradeInValue":{"type":"number","default":0},"state":{"type":"string","default":"TX"},"salesTaxLocalPct":{"type":"number","default":0},"fees":{"type":"number","default":0},"apr":{"type":"number"},"termMonths":{"type":"number","default":60}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/refinance":{"post":{"operationId":"refinance_breakeven","summary":"Refinance analysis: new payment, monthly savings, months to break even on closing costs, and lifetime interest saved.","description":"Refinance analysis: new payment, monthly savings, months to break even on closing costs, and lifetime interest saved.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: compare amortized payments at old vs new rate/term; breakEven = ceil(closingCosts / monthlySavings)","tags":["Lending"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["currentBalance","currentApr","currentRemainingMonths","newApr"],"properties":{"currentBalance":{"type":"number"},"currentApr":{"type":"number"},"currentRemainingMonths":{"type":"number"},"newApr":{"type":"number"},"newTermMonths":{"type":"number"},"closingCosts":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/dti":{"post":{"operationId":"dti","summary":"Debt-to-income ratio — front-end and back-end — with pass/fail against your (or the conventional 28/36) limits.","description":"Debt-to-income ratio — front-end and back-end — with pass/fail against your (or the conventional 28/36) limits.\n\nPayment: x402 ($0.02 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: front = housing/income; back = (housing + debts)/income","tags":["Lending"],"x-x402":{"price":"$0.02","priceUsd":0.02,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["grossMonthlyIncome","proposedHousingPayment"],"properties":{"grossMonthlyIncome":{"type":"number"},"proposedHousingPayment":{"type":"number"},"otherMonthlyDebts":{"type":"number","default":0},"frontLimitPct":{"type":"number","default":28},"backLimitPct":{"type":"number","default":36}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/extra-payment":{"post":{"operationId":"extra_payment","summary":"How much time and interest an extra monthly payment saves on a loan.","description":"How much time and interest an extra monthly payment saves on a loan.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: simulate payoff at (payment + extra) vs the scheduled term; report months and interest saved","tags":["Lending"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["loanAmount","apr","termMonths"],"properties":{"loanAmount":{"type":"number"},"apr":{"type":"number"},"termMonths":{"type":"number"},"extraMonthly":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/mortgage-points":{"post":{"operationId":"mortgage_points","summary":"Whether buying discount points pays off: monthly savings from the rate buydown and the break-even month.","description":"Whether buying discount points pays off: monthly savings from the rate buydown and the break-even month.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: compare amortized payments at base vs buydown rate; breakEven = ceil(pointsCost / monthlySavings)","tags":["Lending"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["loanAmount","baseApr","buydownApr","pointsCost"],"properties":{"loanAmount":{"type":"number"},"termMonths":{"type":"number","default":360},"baseApr":{"type":"number"},"buydownApr":{"type":"number"},"pointsCost":{"type":"number"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/apr":{"post":{"operationId":"apr","summary":"True APR (Reg Z / TILA) from the note rate plus financed fees — the real cost of borrowing.","description":"True APR (Reg Z / TILA) from the note rate plus financed fees — the real cost of borrowing.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: payment on the note; solve monthly i where amountFinanced = payment·(1−(1+i)⁻ⁿ)/i; APR = i·12","tags":["Lending"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["loanAmount","noteRatePct","termMonths"],"properties":{"loanAmount":{"type":"number"},"noteRatePct":{"type":"number"},"feesFinanced":{"type":"number","default":0},"termMonths":{"type":"number"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/heloc":{"post":{"operationId":"heloc_payment","summary":"HELOC payments: interest-only during the draw period and the amortizing payment when repayment begins (the payment jump).","description":"HELOC payments: interest-only during the draw period and the amortizing payment when repayment begins (the payment jump).\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: draw = balance·APR/1200 (interest-only); repay = amortized over the repayment term","tags":["Lending"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["balance","apr"],"properties":{"balance":{"type":"number"},"apr":{"type":"number"},"drawPeriodMonths":{"type":"number","default":120},"repayTermMonths":{"type":"number","default":240}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/lending/compare":{"post":{"operationId":"loan_comparison","summary":"Compare 2–6 loan offers by true total cost (payments + fees) and rank them.","description":"Compare 2–6 loan offers by true total cost (payments + fees) and rank them.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: per offer: amortized payment, total interest, totalCost = totalPaid + fees; ranked ascending","tags":["Lending"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["offers"],"properties":{"offers":{"type":"array","minItems":2,"maxItems":6,"items":{"type":"object","required":["loanAmount","apr","termMonths"],"properties":{"name":{"type":"string"},"loanAmount":{"type":"number"},"apr":{"type":"number"},"termMonths":{"type":"number"},"fees":{"type":"number"}}}}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/realestate/cap-rate":{"post":{"operationId":"cap_rate","summary":"Rental property returns: cap rate (unleveraged), cash-on-cash (leveraged), gross rent multiplier, and the 1% rule.","description":"Rental property returns: cap rate (unleveraged), cash-on-cash (leveraged), gross rent multiplier, and the 1% rule.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: NOI = rent − opex; capRate = NOI/price; cashOnCash = (NOI − debtService)/cashInvested","tags":["Real estate"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["purchasePrice","annualRentIncome"],"properties":{"purchasePrice":{"type":"number"},"annualRentIncome":{"type":"number"},"annualOperatingExpenses":{"type":"number","default":0},"downPayment":{"type":"number","default":0},"annualDebtService":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/realestate/pmi":{"post":{"operationId":"pmi","summary":"Monthly PMI cost and the month it auto-cancels (at 78% of original value, per the Homeowners Protection Act).","description":"Monthly PMI cost and the month it auto-cancels (at 78% of original value, per the Homeowners Protection Act).\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: PMI required when LTV > 80%; monthly = loan·rate/1200; cancels when the amortized balance reaches 78% of original value","tags":["Real estate"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["homeValue","loanAmount","apr"],"properties":{"homeValue":{"type":"number"},"loanAmount":{"type":"number"},"pmiRatePct":{"type":"number","default":0.5},"apr":{"type":"number"},"termMonths":{"type":"number","default":360}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/realestate/arm":{"post":{"operationId":"arm","summary":"Adjustable-rate mortgage payment shock: the payment before and after the first reset, and the increase.","description":"Adjustable-rate mortgage payment shock: the payment before and after the first reset, and the increase.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: amortize at the initial rate through the fixed period, then re-amortize the remaining balance at the adjusted rate","tags":["Real estate"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["loanAmount","initialRatePct","adjustedRatePct","fixedPeriodMonths"],"properties":{"loanAmount":{"type":"number"},"initialRatePct":{"type":"number"},"adjustedRatePct":{"type":"number"},"fixedPeriodMonths":{"type":"number"},"termMonths":{"type":"number","default":360}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/realestate/affordability":{"post":{"operationId":"home_affordability","summary":"Max home price a W-2 buyer can afford from income and debts, using front/back DTI limits and a PMI-aware price solve.","description":"Max home price a W-2 buyer can afford from income and debts, using front/back DTI limits and a PMI-aware price solve.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: housing budget = min(frontDTI·income, backDTI·income − debts); solve max price where PITI meets the budget","tags":["Real estate"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["grossAnnualIncome"],"properties":{"grossAnnualIncome":{"type":"number"},"monthlyDebts":{"type":"number","default":0},"downPayment":{"type":"number","default":0},"apr":{"type":"number","default":6.5},"termMonths":{"type":"number","default":360},"propertyTaxPct":{"type":"number","default":1.1},"annualInsurance":{"type":"number","default":1500},"frontDtiPct":{"type":"number","default":28},"backDtiPct":{"type":"number","default":36},"pmiRatePct":{"type":"number","default":0.5}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/realestate/rent-vs-buy":{"post":{"operationId":"rent_vs_buy","summary":"Rent vs buy over a horizon: year-by-year renting cost vs net cost of owning (crediting equity + appreciation, net of selling costs), with the break-even year.","description":"Rent vs buy over a horizon: year-by-year renting cost vs net cost of owning (crediting equity + appreciation, net of selling costs), with the break-even year.\n\nPayment: x402 ($0.25 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: simulate each year: rent (with increases) vs owning cash out − realizable equity (appreciated value − selling costs − loan balance)","tags":["Real estate"],"x-x402":{"price":"$0.25","priceUsd":0.25,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["monthlyRent","homePrice"],"properties":{"monthlyRent":{"type":"number"},"homePrice":{"type":"number"},"downPayment":{"type":"number","default":0},"apr":{"type":"number","default":6.5},"termMonths":{"type":"number","default":360},"propertyTaxPct":{"type":"number","default":1.1},"annualInsurance":{"type":"number","default":1500},"maintenancePct":{"type":"number","default":1},"annualAppreciationPct":{"type":"number","default":3},"annualRentIncreasePct":{"type":"number","default":3},"sellingCostPct":{"type":"number","default":6},"buyingClosingCostPct":{"type":"number","default":3},"years":{"type":"number","default":7}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/tax/federal-income":{"post":{"operationId":"federal_income_tax","summary":"Federal income tax on ordinary income for 2026: AGI from gross minus above-the-line adjustments, standard or itemized deduction, the 2026 brackets, and a flat nonrefundable credit amount. Distinct from /v1/paycheck (which nets FICA + state per pay period).","description":"Federal income tax on ordinary income for 2026: AGI from gross minus above-the-line adjustments, standard or itemized deduction, the 2026 brackets, and a flat nonrefundable credit amount. Distinct from /v1/paycheck (which nets FICA + state per pay period).\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: AGI = grossIncome - adjustments; taxable = max(AGI - deduction, 0); tax = marginal 2026 brackets (MFJ doubles single thresholds); totalTax = max(tax - credits, 0)","tags":["Payroll & tax"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["grossIncome"],"properties":{"grossIncome":{"type":"number","minimum":0,"maximum":1000000000},"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"},"adjustments":{"type":"number","default":0},"deductionType":{"type":"string","enum":["standard","itemized"],"default":"standard"},"itemizedDeductions":{"type":"number","default":0},"credits":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/tax/state-income":{"post":{"operationId":"state_income_tax","summary":"Standalone 2026 state income tax for any of 51 US jurisdictions — progressive/flat/no-tax schedules, MFJ doubling — applied to the income you provide.","description":"Standalone 2026 state income tax for any of 51 US jurisdictions — progressive/flat/no-tax schedules, MFJ doubling — applied to the income you provide.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: tax = marginal state 2026 brackets (MFJ doubles single thresholds); no-tax states return $0","tags":["Payroll & tax"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["state","income"],"properties":{"state":{"type":"string","description":"2-letter US state/DC code"},"income":{"type":"number","minimum":0,"maximum":1000000000},"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/tax/bonus":{"post":{"operationId":"bonus_tax","summary":"Withholding and net take-home on a bonus/commission using the 2026 federal supplemental-wage rate (22% flat; 37% on cumulative supplemental wages over $1M), plus FICA and an optional state supplemental rate.","description":"Withholding and net take-home on a bonus/commission using the 2026 federal supplemental-wage rate (22% flat; 37% on cumulative supplemental wages over $1M), plus FICA and an optional state supplemental rate.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: federal = 22% up to $1M cumulative supplemental, 37% above; SS 6.2% (if subject) + Medicare 1.45% + optional state supplemental; net = bonus - all withholding","tags":["Payroll & tax"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["bonusAmount"],"properties":{"bonusAmount":{"type":"number","minimum":0,"maximum":1000000000},"ytdSupplementalWages":{"type":"number","default":0},"stateSupplementalRatePct":{"type":"number","default":0},"subjectToSocialSecurity":{"type":"boolean","default":true}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/tax/overtime":{"post":{"operationId":"overtime_pay","summary":"FLSA overtime pay: regular and overtime hours, the overtime rate, and gross pay for a week — federal 1.5× over 40 hours by default, any threshold/multiplier configurable.","description":"FLSA overtime pay: regular and overtime hours, the overtime rate, and gross pay for a week — federal 1.5× over 40 hours by default, any threshold/multiplier configurable.\n\nPayment: x402 ($0.02 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: regularHours = min(hours, threshold); otHours = max(hours - threshold, 0); gross = regularHours*rate + otHours*rate*multiplier","tags":["Payroll & tax"],"x-x402":{"price":"$0.02","priceUsd":0.02,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["hourlyRate","hoursWorked"],"properties":{"hourlyRate":{"type":"number","minimum":0,"maximum":100000},"hoursWorked":{"type":"number","minimum":0,"maximum":168},"overtimeThresholdHours":{"type":"number","default":40},"overtimeMultiplier":{"type":"number","default":1.5}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/tax/1099-vs-w2":{"post":{"operationId":"1099_vs_w2","summary":"Take-home comparison of the same pay as a W-2 employee vs a 1099 contractor — employee FICA vs self-employment tax (with the half-SE deduction) — and the higher contractor rate needed to match.","description":"Take-home comparison of the same pay as a W-2 employee vs a 1099 contractor — employee FICA vs self-employment tax (with the half-SE deduction) — and the higher contractor rate needed to match.\n\nPayment: x402 ($0.10 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: W-2: pay - employeeFICA - fed tax on (pay - std); 1099: netProfit - SE tax - fed tax on (netProfit - halfSE - std); advantage + break-even rate uplift","tags":["Payroll & tax"],"x-x402":{"price":"$0.10","priceUsd":0.1,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["annualPay"],"properties":{"annualPay":{"type":"number","minimum":0,"maximum":1000000000},"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"},"businessExpenses":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/retirement/rmd":{"post":{"operationId":"rmd","summary":"Required Minimum Distribution from a traditional IRA/401(k) using the IRS Uniform Lifetime Table — the amount you must withdraw at your age, given the prior year-end balance. RMDs begin at 73 (SECURE 2.0).","description":"Required Minimum Distribution from a traditional IRA/401(k) using the IRS Uniform Lifetime Table — the amount you must withdraw at your age, given the prior year-end balance. RMDs begin at 73 (SECURE 2.0).\n\nPayment: x402 ($0.10 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: RMD = priorYearEndBalance ÷ Uniform Lifetime Table factor for your age (IRS Pub 590-B Table III); required when age ≥ 73","tags":["Retirement"],"x-x402":{"price":"$0.10","priceUsd":0.1,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["accountBalance","age"],"properties":{"accountBalance":{"type":"number","minimum":0,"maximum":100000000000},"age":{"type":"number","minimum":72,"maximum":100}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/retirement/roth-conversion":{"post":{"operationId":"roth_conversion","summary":"Federal tax cost of a Roth conversion in one year: the extra income tax from stacking the converted amount on top of your other taxable income, with the marginal rate before and after.","description":"Federal tax cost of a Roth conversion in one year: the extra income tax from stacking the converted amount on top of your other taxable income, with the marginal rate before and after.\n\nPayment: x402 ($0.10 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: tax = federalTax(otherTaxable + conversion) - federalTax(otherTaxable); effective conversion rate = tax / conversion","tags":["Retirement"],"x-x402":{"price":"$0.10","priceUsd":0.1,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["conversionAmount"],"properties":{"conversionAmount":{"type":"number","minimum":0,"maximum":1000000000},"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"},"otherTaxableIncome":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/retirement/social-security":{"post":{"operationId":"social_security","summary":"Social Security monthly benefit estimate from your AIME: the 2026 PIA bend-point formula plus the claim-age adjustment (62 pays 70%, FRA 67 pays 100%, 70 pays 124%).","description":"Social Security monthly benefit estimate from your AIME: the 2026 PIA bend-point formula plus the claim-age adjustment (62 pays 70%, FRA 67 pays 100%, 70 pays 124%).\n\nPayment: x402 ($0.25 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: PIA = 90% of AIME to bend1 ($1,286) + 32% to bend2 ($7,749) + 15% above, floored to a dime; benefit = PIA × claim-age factor (early: 5/9%/mo then 5/12%/mo; delayed: 2/3%/mo), floored to a dollar","tags":["Retirement"],"x-x402":{"price":"$0.25","priceUsd":0.25,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["aime"],"properties":{"aime":{"type":"number","minimum":0,"maximum":1000000,"description":"Average Indexed Monthly Earnings"},"claimAge":{"type":"number","minimum":62,"maximum":70,"default":67}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/retirement/hsa-fsa":{"post":{"operationId":"hsa_fsa","summary":"2026 HSA or health-FSA contribution limit and income-tax savings — HSA self/family limits + age-55 catch-up + HDHP deductible/OOP bounds, or the FSA salary-reduction limit + carryover.","description":"2026 HSA or health-FSA contribution limit and income-tax savings — HSA self/family limits + age-55 catch-up + HDHP deductible/OOP bounds, or the FSA salary-reduction limit + carryover.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: HSA limit = (self $4,400 / family $8,750) + (age≥55 ? $1,000 : 0); FSA limit = $3,400; tax savings = min(contribution, limit) × marginal rate","tags":["Retirement"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"accountType":{"type":"string","enum":["hsa","fsa"],"default":"hsa"},"coverage":{"type":"string","enum":["self","family"],"default":"self"},"age":{"type":"number","default":40},"contributionAmount":{"type":"number"},"marginalRatePct":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/investing/npv-irr":{"post":{"operationId":"npv_irr","summary":"Net present value and internal rate of return for a cash-flow series (index 0 = today, usually a negative outlay), plus the profitability index and an accept/reject call.","description":"Net present value and internal rate of return for a cash-flow series (index 0 = today, usually a negative outlay), plus the profitability index and an accept/reject call.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: NPV = Σ CFₜ/(1+r)ᵗ at your discount rate; IRR = the rate where NPV = 0 (bisection); profitability index = (NPV - CF₀)/-CF₀","tags":["Investing"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["cashFlows"],"properties":{"cashFlows":{"type":"array","minItems":2,"maxItems":600,"items":{"type":"number"}},"discountRatePct":{"type":"number","default":10}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/investing/bond-yield":{"post":{"operationId":"bond_yield","summary":"Bond current yield and yield-to-maturity from face value, coupon, market price, and maturity — with the premium/discount/par classification.","description":"Bond current yield and yield-to-maturity from face value, coupon, market price, and maturity — with the premium/discount/par classification.\n\nPayment: x402 ($0.05 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: current yield = annual coupon ÷ price; YTM = periodic rate solving price = Σ coupon/(1+y)ᵏ + face/(1+y)ⁿ (bisection), annualized × payments/yr","tags":["Investing"],"x-x402":{"price":"$0.05","priceUsd":0.05,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["couponRatePct","price","yearsToMaturity"],"properties":{"faceValue":{"type":"number","default":1000},"couponRatePct":{"type":"number","minimum":0,"maximum":100},"price":{"type":"number"},"yearsToMaturity":{"type":"number","minimum":0.5,"maximum":100},"paymentsPerYear":{"type":"number","default":2}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/business/s-corp-salary":{"post":{"operationId":"s_corp_salary","summary":"S-corp reasonable-salary employment-tax saving: SE tax a sole proprietor pays on all profit vs FICA an S-corp pays on just the salary, with the distribution that escapes self-employment tax.","description":"S-corp reasonable-salary employment-tax saving: SE tax a sole proprietor pays on all profit vs FICA an S-corp pays on just the salary, with the distribution that escapes self-employment tax.\n\nPayment: x402 ($0.10 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: soleProp SE tax on full profit (15.3% on 92.35%) minus S-corp FICA (15.3% on salary only); distribution = profit - salary","tags":["Business"],"x-x402":{"price":"$0.10","priceUsd":0.1,"network":"eip155:8453","tier":"call","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["businessProfit","reasonableSalary"],"properties":{"businessProfit":{"type":"number","minimum":0,"maximum":1000000000},"reasonableSalary":{"type":"number","minimum":0,"maximum":1000000000},"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/business/entity-compare":{"post":{"operationId":"entity_tax_compare","summary":"Total 2026 federal tax as a sole proprietor / LLC vs S-corp vs C-corp for the same profit — SE tax vs FICA vs 21% corporate tax with qualified-dividend double taxation — ranked to the lowest.","description":"Total 2026 federal tax as a sole proprietor / LLC vs S-corp vs C-corp for the same profit — SE tax vs FICA vs 21% corporate tax with qualified-dividend double taxation — ranked to the lowest.\n\nPayment: x402 ($0.10 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: sole prop: SE + income tax; S-corp: FICA on salary + income tax on passthrough; C-corp: 21% corporate + FICA on salary + income tax on salary + qualified-dividend tax on distribution","tags":["Business"],"x-x402":{"price":"$0.10","priceUsd":0.1,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["businessProfit"],"properties":{"businessProfit":{"type":"number","minimum":0,"maximum":1000000000},"ownerSalary":{"type":"number","default":0},"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/reports/tax-estimate":{"post":{"operationId":"tax_estimate_report","summary":"Full 2026 tax estimate in one call: federal income tax + self-employment tax + employee FICA + state income tax, from wages, self-employment income, and other income — with the component breakdown, effective and marginal rates, and after-tax income.","description":"Full 2026 tax estimate in one call: federal income tax + self-employment tax + employee FICA + state income tax, from wages, self-employment income, and other income — with the component breakdown, effective and marginal rates, and after-tax income.\n\nPayment: x402 ($1.00 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: AGI = gross - adjustments - ½SE; federal on (AGI - deduction) minus credits; + SE tax; + employee FICA on wages; + state tax on gross ordinary income","tags":["Payroll & tax"],"x-x402":{"price":"$1.00","priceUsd":1,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"},"wages":{"type":"number","default":0},"selfEmploymentIncome":{"type":"number","default":0},"otherOrdinaryIncome":{"type":"number","default":0},"adjustments":{"type":"number","default":0},"deductionType":{"type":"string","enum":["standard","itemized"],"default":"standard"},"itemizedDeductions":{"type":"number","default":0},"credits":{"type":"number","default":0},"state":{"type":"string","default":"TX"}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/reports/retirement-readiness":{"post":{"operationId":"retirement_readiness","summary":"Retirement-readiness projection: your savings grown to retirement age, the nest egg the 4%-rule requires for your target income, the surplus or gap, and the extra monthly contribution to close it.","description":"Retirement-readiness projection: your savings grown to retirement age, the nest egg the 4%-rule requires for your target income, the surplus or gap, and the extra monthly contribution to close it.\n\nPayment: x402 ($1.00 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: projected = currentSavings·(1+r)ⁿ + contribution·[((1+r)ⁿ-1)/r]; requiredNestEgg = (income·replacement%) / withdrawal%; gap solved back to an annual/monthly contribution","tags":["Retirement"],"x-x402":{"price":"$1.00","priceUsd":1,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["currentAge","currentIncome"],"properties":{"currentAge":{"type":"number","minimum":16,"maximum":90},"retirementAge":{"type":"number","default":65},"currentSavings":{"type":"number","default":0},"annualContribution":{"type":"number","default":0},"expectedReturnPct":{"type":"number","default":7},"currentIncome":{"type":"number","minimum":0,"maximum":1000000000},"incomeReplacementPct":{"type":"number","default":80},"withdrawalRatePct":{"type":"number","default":4}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/reports/mortgage-qualification":{"post":{"operationId":"mortgage_qualification","summary":"Self-employed mortgage qualification worksheet: 2-year-average (or declining-income) qualifying income with add-backs, front/back DTI limits, the max home price you qualify for, and the full monthly PITI (principal, interest, tax, insurance, PMI, HOA) at that price. The flagship engine, as an agent-callable signed report.","description":"Self-employed mortgage qualification worksheet: 2-year-average (or declining-income) qualifying income with add-backs, front/back DTI limits, the max home price you qualify for, and the full monthly PITI (principal, interest, tax, insurance, PMI, HOA) at that price. The flagship engine, as an agent-callable signed report.\n\nPayment: x402 ($1.00 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: qualifying income = 2-yr avg net SE income (+add-backs), year-1 only if declining; max price fits min(front-DTI, back-DTI) housing budget and full PITI; PMI applied above 80% LTV","tags":["Lending"],"x-x402":{"price":"$1.00","priceUsd":1,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["year1NetIncome","year2NetIncome"],"properties":{"year1NetIncome":{"type":"number","default":80000,"minimum":0,"maximum":5000000},"year2NetIncome":{"type":"number","default":90000,"minimum":0,"maximum":5000000},"addBacks":{"type":"number","default":0},"monthlyDebts":{"type":"number","default":300},"downPayment":{"type":"number","default":40000},"interestRatePct":{"type":"number","default":6.5},"termYears":{"type":"number","enum":[15,20,30],"default":30},"propertyTaxPct":{"type":"number","default":1.1},"annualInsurance":{"type":"number","default":1500},"monthlyHOA":{"type":"number","default":0},"frontDTIPct":{"type":"number","default":28},"backDTIPct":{"type":"number","default":36},"pmiRatePct":{"type":"number","default":0.6}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/reports/quarterly-package":{"post":{"operationId":"quarterly_estimate_package","summary":"Quarterly estimated-tax package (Form 1040-ES): derives your current-year total tax (federal income + self-employment + FICA + state) from income, applies the safe harbor (lesser of 90% current or 100%/110% prior-year tax), and returns the four equal 2026 installments net of withholding with their due dates.","description":"Quarterly estimated-tax package (Form 1040-ES): derives your current-year total tax (federal income + self-employment + FICA + state) from income, applies the safe harbor (lesser of 90% current or 100%/110% prior-year tax), and returns the four equal 2026 installments net of withholding with their due dates.\n\nPayment: x402 ($1.00 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: current-year tax composed from the verified tax-estimate engine, fed into the 1040-ES safe-harbor engine; four equal installments = (required - withholding) / 4","tags":["Payroll & tax"],"x-x402":{"price":"$1.00","priceUsd":1,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"filingStatus":{"type":"string","enum":["single","mfj"],"default":"single"},"wages":{"type":"number","default":0},"selfEmploymentIncome":{"type":"number","default":120000},"otherOrdinaryIncome":{"type":"number","default":0},"adjustments":{"type":"number","default":0},"deductionType":{"type":"string","enum":["standard","itemized"],"default":"standard"},"itemizedDeductions":{"type":"number","default":0},"credits":{"type":"number","default":0},"state":{"type":"string","default":"TX"},"priorYearTax":{"type":"number","default":18000},"priorYearAGI":{"type":"number","default":110000},"withholdingThisYear":{"type":"number","default":0}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}},"/v1/reports/capital-gains-scenario":{"post":{"operationId":"capital_gains_scenario","summary":"Multi-year capital-gains plan: realize a long-term gain all at once vs spread it evenly across N years, with the federal tax for each path (2026 0/15/20% long-term bands + the 3.8% NIIT) and the tax saved by spreading — the signed record an investor or agent uses to pick when to realize gains.","description":"Multi-year capital-gains plan: realize a long-term gain all at once vs spread it evenly across N years, with the federal tax for each path (2026 0/15/20% long-term bands + the 3.8% NIIT) and the tax saved by spreading — the signed record an investor or agent uses to pick when to realize gains.\n\nPayment: x402 ($1.00 USDC on eip155:8453). Call unpaid to receive an HTTP 402 with requirements, then retry with the PAYMENT-SIGNATURE header. Method: compares computeCapitalGainsTax(full gain in year 1) vs the sum of computeCapitalGainsTax(gain/N) across N years at the same ordinary income; savings = allAtOnce.totalTax - Σ spread","tags":["Investing"],"x-x402":{"price":"$1.00","priceUsd":1,"network":"eip155:8453","tier":"report","payment":"x402"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["totalLongTermGain"],"properties":{"filingStatus":{"type":"string","enum":["single","mfj","hoh","mfs"],"default":"single"},"ordinaryTaxableIncome":{"type":"number","default":100000},"totalLongTermGain":{"type":"number","default":300000,"minimum":0},"spreadYears":{"type":"number","default":3,"minimum":2,"maximum":10}}}}}},"responses":{"200":{"description":"Verified result + provenance (formula, sources, reproducible SHA-256 hash)."},"400":{"description":"Invalid input (no charge) — body echoes the JSON Schema."},"402":{"description":"Payment required — PAYMENT-REQUIRED header carries the x402 accepts[] quote."}}}}}}