For developers & AI agents

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: /v1 is stable. Changes are additive only; anything breaking would ship as /v2 with /v1 kept 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.