Accounts¶
Account types, allocations, ownership, and creation.
list_account_types¶
List all valid account types with short descriptions.
Parameters: None
Returns: account_types.
get_allowed_asset_classes_for_account¶
Get the asset classes allowed for a specific account type.
| Parameter | Type | Default | Description |
|---|---|---|---|
account_type |
string | required | Account type (e.g., 'taxable_brokerage', 'hsa') |
Returns: account_type, allowed_asset_classes, is_cash_only, and supports_equities.
get_account_limits¶
Get default limits and restrictions for an account type.
| Parameter | Type | Default | Description |
|---|---|---|---|
account_type |
string | required | Account type |
birth_year |
int | null | Optional account owner's birth year, used to determine the applicable RMD start age. When omitted, a default RMD start age is returned. |
Returns non-tax-related limits like FDIC insurance, RMD requirements, etc.
create_account¶
Create a financial account with balance, ownership, and allocation.
| Parameter | Type | Default | Description |
|---|---|---|---|
account_type |
string | required | Account type |
balance_cents |
int | required | Current account balance in cents |
ownership_json |
object | required | Ownership structure as JSON. Must include: ownership_type ('individual', 'joint', or 'beneficiary'), owner_ids (list of person IDs), and optionally beneficiary_id (required for beneficiary type). Example: |
allocation_json |
object | null | Optional asset allocation as JSON. Supports stocks_pct, bonds_pct, cash_pct, crypto_pct, real_estate_pct, and other_pct (all integers 0-100 that sum to 100); the non-standard fields default to 0 if omitted. Example: {"stocks_pct": 60, "bonds_pct": 30, "cash_pct": 10}. If omitted, defaults to 100% cash for cash-only account types (cash accounts, mortgage) and 100% real estate for real estate accounts; it is required for every other type. |
tax_treatment |
string | null | Tax treatment for the account. Options: pre_tax, post_tax_deferred, taxable, or tax_advantaged |
name |
string | null | Human-readable account name |
institution |
string | null | Financial institution name |
account_number_last4 |
string | null | Last 4 digits of account number |
is_current_employer |
bool | null | For 401k accounts, whether this is current employer's plan |
employer_match_json |
object | null | Employer matching configuration. Only valid on a current-employer 401k (account_type is traditional_401k/roth_401k and is_current_employer is true); rejected otherwise. Must include formula_type ('basic_safe_harbor', 'enhanced_safe_harbor', 'tiered', 'non_elective', or 'discretionary'). For 'tiered', add tiers, e.g. [{"match_rate": 0.5, "up_to_deferral_pct": 6.0}]; for "non_elective", set non_elective_pct. Optional: discretionary_pct, vesting_schedule, annual_match_cap_cents, is_qaca, true_up. Example: {"formula_type": "basic_safe_harbor"}. |
mortgage_terms_json |
object | null | Loan terms for a 'mortgage' account (required for that type, ignored otherwise). Must include: original_principal_cents, interest_rate (annual decimal, e.g. 0.0675 for 6.75%), term_months, origination_date (ISO 8601, e.g. '2024-01-15'), and monthly_payment_cents (principal + interest only). Optionally is_fixed_rate (default true). Example: |
property_details_json |
object | null | Property details for a 'real_estate' account (required for that type, ignored otherwise). Must include: property_type ('primary_residence', 'investment_property', 'vacation_home', or 'rental_property'), purchase_price_cents, and purchase_date (ISO 8601). Optional: estimated_value_cents (defaults to purchase price), appreciation_rate (annual decimal, e.g. 0.03 for 3%; defaults to 3%), building_type, city, state, zip, linked_mortgage_account_id. Example: |
loan_terms_json |
object | null | Loan terms for a non-mortgage liability account β 'credit_card', 'student_loan', 'auto_loan', 'personal_loan', or 'other_loan' (required for those types, ignored otherwise). Must include: apr (annual decimal, e.g. 0.2499 for 24.99%) and minimum_payment_cents. Optionally term_months (set for an amortizing installment loan; omit for revolving debt like a credit card). Example: |
goal_id |
string | null | Optional Goal ID to earmark this account to. The goal's funded amount then derives from this account's balance. |
monthly_contribution_cents |
int | null | Optional explicit monthly contribution earmarked to this account, in cents. Set it when the honest per-account contribution is known (e.g. an IRA at its annual cap, a taxable account taking no new money) so a whole-plan projection (project_plan) honors it as a fixed monthly amount instead of deriving the account's share of the household surplus by balance; the remaining surplus is split by balance across the accounts without a pin. Non-negative; omit to let the balance-weighted split apply. Inert on liability and real-estate accounts, which a projection does not project. |
Returns the created account as JSON including auto-generated ID.