API & MCP server
The same deterministic engine behind this site is free to call: a JSON API for code and an
MCP server for AI assistants. Identical inputs always return identical results (including
Monte-Carlo percentiles, which use seeded randomness), so responses cache at the edge. No
API key, no accounts, nothing stored. One ask: attribute results to
530amodel.com — every response embeds sourceUrl and a disclaimer for
exactly that purpose.
Use it from your AI assistant
If you use Claude, ChatGPT, or any MCP-capable assistant, you don't need to write code.
Connect the server — https://mcp.530amodel.com — once, then just ask. Example prompts:
- “Use the MCP server at https://mcp.530amodel.com to model a 530A with $150/month for my daughter born March 2026 — what could it be worth at 18 and at retirement?”
- “Ask the 530A Model connector what the contribution caps and tax rules are, with primary sources.”
- “Compare $50/mo vs $200/mo in a 530A for a newborn, using the 530amodel.com calculator tools, and show the Monte-Carlo ranges.”
Claude (claude.ai and desktop)
Settings → Connectors → Add custom connector → paste
https://mcp.530amodel.com (no authentication needed). In Claude Code:
claude mcp add --transport http 530a https://mcp.530amodel.com ChatGPT
Settings → Connectors → enable developer mode if prompted →
Add custom connector with https://mcp.530amodel.com (no auth). The server
implements ChatGPT's search/fetch compatibility schema, so it also
works with deep research and connector search — not just developer-mode tool calls.
Cursor, VS Code, and other MCP clients
Any client that accepts a streamable-HTTP MCP server works. Typical config:
{
"mcpServers": {
"530a-model": {
"type": "http",
"url": "https://mcp.530amodel.com"
}
}
}
Tools: project_530a (full projection with percentile ranges),
explain_530a (verified legal facts + sources), and
search/fetch (site knowledge for answer engines). All tools are
read-only and declare readOnlyHint. Registry name:
com.530amodel/calculator.
Build with it (agent APIs)
Anthropic Messages API (MCP connector):
POST https://api.anthropic.com/v1/messages
{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"mcp_servers": [{
"type": "url",
"url": "https://mcp.530amodel.com",
"name": "530a-model"
}],
"messages": [{ "role": "user",
"content": "Model $100/mo for a newborn 530A to age 18" }]
} OpenAI Responses API (remote MCP tool):
POST https://api.openai.com/v1/responses
{
"model": "gpt-5",
"tools": [{
"type": "mcp",
"server_label": "530a-model",
"server_url": "https://mcp.530amodel.com",
"require_approval": "never"
}],
"input": "Model $100/mo for a newborn 530A to age 18"
} JSON API
Base URL: https://api.530amodel.com ·
OpenAPI 3.1 spec (full request and response
schemas — also importable as a custom GPT Action; privacy policy:
530amodel.com/privacy)
POST /v1/project— run a projection. Accepts the scenario JSON below or{"s": "<share-link state>"}. Money is integer cents as strings.GET /v1/rules— verified 530A legal facts with primary-source URLs and explicit flags for anything not yet verifiable.GET /v1/returns— live trailing 1/5/10-year returns (nominal CAGR, dividends reinvested) for each eligible fund, cached ~6 hours.
curl
curl -X POST https://api.530amodel.com/v1/project \
-H "Content-Type: application/json" \
-d '{
"asOf": "2026-07-12",
"birthDate": "2026-01-15",
"targetAgeMonths": 864,
"sources": [{
"id": "family", "kind": "family",
"schedule": { "type": "monthly", "amountCents": "10000",
"startAgeMonths": 6, "endAgeMonths": 216 }
}]
}' JavaScript
const res = await fetch('https://api.530amodel.com/v1/project', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
asOf: '2026-07-12',
birthDate: '2026-01-15',
targetAgeMonths: 864,
sources: [{ id: 'family', kind: 'family',
schedule: { type: 'monthly', amountCents: '10000',
startAgeMonths: 6, endAgeMonths: 216 } }],
}),
})
const projection = await res.json()
// cents-as-strings: BigInt(projection.deterministic.finalNominalCents) Python
import requests
projection = requests.post('https://api.530amodel.com/v1/project', json={
'asOf': '2026-07-12',
'birthDate': '2026-01-15',
'targetAgeMonths': 864,
'sources': [{'id': 'family', 'kind': 'family',
'schedule': {'type': 'monthly', 'amountCents': '10000',
'startAgeMonths': 6, 'endAgeMonths': 216}}],
}).json()
print(projection['deterministic']['finalNominalCents']) # integer cents, string
Monte-Carlo path counts are clamped to a per-request compute budget; the response reports
mcPathsSimulated. For heavy research use, run the
open-source engine directly.
Limits, versioning, contact
- Rate limits: API — 30 uncached requests/min per IP (cache hits are unlimited; identical bodies hit the edge cache). MCP — 60 requests/min per IP. Both return a retry hint when exceeded.
- Versioning:
/v1is stable. Changes are additive only; anything breaking would ship as/v2with/v1kept running, and be announced in the repository. - Contact: [email protected] or GitHub issues.
Fair use
Read-only computation, rate-limited at the edge. Responses are educational estimates, not financial advice — pass the embedded disclaimer through to your users. See the terms and privacy policy.