Documentation
Build with Pascaline
REST + MCP over one deterministic calculation core. Every response is statute-cited and carries its parameter vintage. This page is the quickstart; each API has its own reference.
Quickstart
Base URL https://pascaline.io. All calculation calls are POST with a JSON body. During beta every API is free with a key.
curl -X POST https://pascaline.io/estate/calculate-state-tax \
-H 'content-type: application/json' \
-H 'x-api-key: <keyId>.<secret>' \
-d '{"state":"MA","tax_year":2026,"gross_estate":4000000}'
const res = await fetch("https://pascaline.io/estate/calculate-state-tax", {
method: "POST",
headers: { "content-type": "application/json", "x-api-key": KEY },
body: JSON.stringify({ state: "MA", tax_year: 2026, gross_estate: 4_000_000 }),
});
const { result, data_as_of, formula_version, citations, tier } = await res.json();
Authentication
Pass your key in the x-api-key header as keyId.secret. Create a key in the portal. GET requests (docs, demos) need no key; only POST calculation calls are authenticated and metered.
x-api-key: k_live_a1b2c3.s3cr3t_v4lue
Response envelope
Every successful response wraps the calculation in a standard envelope. tier tells you whether the numbers are beta (our golden tests pass) or verified (independently confirmed against primary sources) — see how we verify.
{
"result": { "state_estate_tax": 180800, "cliff_warning": { "triggered": true } },
"data_as_of": "2026-01-01",
"formula_version": "2026.1",
"citations": ["M.G.L. c.65C \u00a72A ..."],
"tier": "beta"
}
Errors
Errors return a non-2xx status and a typed body: { "error": { "code", "message", "details" } }.
VALIDATION_ERROR(400) — request failed schema validation;detailslists the field paths.UNAUTHORIZED(401) — missing or invalidx-api-key.UNSUPPORTED_TAX_YEAR(400) — parameters for that year are not loaded.STATE_NOT_SUPPORTED/STATE_NOT_LOADED— no citable table for that jurisdiction (we return this rather than a wrong number).UNKNOWN_7520_RATE(422) — the §7520 month isn't loaded; pass an override.- Data APIs additionally return a
data_coverageblock and a seed-dataset warning during beta.
MCP servers
The same calculation core is exposed to AI agents over the Model Context Protocol — one server per suite, streamable HTTP. Point any MCP client at the suite endpoint:
https://pascaline.io/mcp/estate— Estate Planning Suite (6 APIs)https://pascaline.io/mcp/premium— Premium Tax Suite (8 APIs)https://pascaline.io/mcp/retirement— Retirement & International Suite (5 APIs)https://pascaline.io/mcp/compliance— Compliance & Data Suite (13 APIs)
Example client config:
{
"mcpServers": {
"pascaline-estate": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://pascaline.io/mcp/estate"]
}
}
}
OpenAPI
A machine-readable spec of the calculation endpoints (request bodies generated from our Zod schemas): openapi.json.
API reference
Every endpoint, grouped by suite. Each links to its full page with example requests and citations.
Estate Planning Suite
- State Estate & Inheritance Tax —
POST /estate/calculate-state-taxbeta - Federal Estate Tax & Portability —
POST /estate/calculate-federal-taxbeta - Inherited IRA RMD Schedule —
POST /inherited-ira/schedulebeta - Gift Tax Annual Exclusion Optimizer —
POST /gift-tax/optimize-annual-giftsbeta - GRAT / CLAT / SLAT Trust Calculator —
POST /estate/calculate-gratbeta - QTIP / QDOT Marital Trust Optimizer —
POST /estate/optimize-qtip-electionbeta
Premium Tax Suite
- Social Security Filing Strategy —
POST /ss/optimize-filing-strategybeta - Social Security PIA Estimator —
POST /social-security/estimatebeta - ISO Exercise AMT Calculator —
POST /equity/calculate-taxbeta - QSBS §1202 Exclusion —
POST /qsbs/checkbeta - PTET / SALT Cap Optimizer —
POST /ptet/calculate-benefitbeta - §199A QBI Deduction —
POST /qbi/calculate-deductionbeta - Foreign Tax Credit Limitation —
POST /international/calculate-ftcbeta - R&D Tax Credit (§41) —
POST /tax-credit/calculate-rd-creditbeta
Retirement & International Suite
- Form 8606 / Backdoor Roth —
POST /ira/form-8606beta - Pension Lump Sum vs Annuity —
POST /pension/lump-sum-comparisonbeta - SSDI Benefit Estimator —
POST /ssdi/estimate-benefitbeta - CPP + OAS (Canada) —
POST /canada/retirement-benefitbeta - Australian Superannuation —
POST /australia/superannuation/contributionsbeta
Compliance & Data Suite
- ADA Compliance Requirements —
POST /ada/requirementsbeta - Child Support Calculation —
POST /child-support/calculatebeta - Multi-State Employment Law —
POST /employment-law/lookupbeta - FAFSA Student Aid Index —
POST /fafsa/saibeta - Immigration Points & Eligibility —
POST /immigration/calculatebeta - Professional Credential Verification —
POST /credentials/verifybeta - FDA Enforcement & Warning Letters —
POST /fda/enforcement/searchbeta - SaaS Terms of Service Compliance —
POST /tos/check-compliancebeta - Supplier Diversity Certification —
POST /supplier-diversity/certificationsbeta - Platform Content Policy Compliance —
POST /content-policy/checkbeta - Flight Delay Compensation —
POST /flight/check-compensationbeta - Patent Expiration & Maintenance —
POST /patent/statusbeta - Generic Drug Entry Date —
POST /pharma/generic-entrybeta