get_allocation
ChatGPTAllocation breakdown. by ∈ {class, sector, geography, currency}. Returns rows with category, value_usd, pct.
get_allocation
ChatGPTAllocation breakdown. by ∈ {class, sector, geography, currency}. Returns rows with category, value_usd, pct.
get_asset
ChatGPTSingle asset detail + 30-day snapshot history.
get_asset
ChatGPTSingle asset detail + 30-day snapshot history.
get_net_worth
ChatGPTTotal net worth (USD) + 1-day & 30-day delta + asset/debt totals. Pass portfolio_id to scope to a single portfolio.
get_net_worth
ChatGPTTotal net worth (USD) + 1-day & 30-day delta + asset/debt totals. Pass portfolio_id to scope to a single portfolio.
get_recap
ChatGPTOLAP-style aggregation. Returns end-of-period values (balance semantics — not summed across days within the period). Dimensions: net_worth (account-wide NW per period), sheets_sections (groups by the USER'S own sheet names — so Gold under a 'Cash' sheet stays in 'Cash' because that's where the holder put it; use assets_class for canonical asset-type grouping instead), assets_class (groups by Asset.type: stock / crypto / real_estate / vehicle / precious_metal / private_equity / manual_other / cash / crypto_wallet), stocks_sector (sector dimension on stock-class assets only), stocks_geography (country dimension on stock-class assets only — use get_allocation(by=geography) for ALL asset classes), crypto. grain ∈ {daily, monthly, quarterly}. display ∈ {totals, allocation}.
get_recap
ChatGPTOLAP-style aggregation. Returns end-of-period values (balance semantics — not summed across days within the period). Dimensions: net_worth (account-wide NW per period), sheets_sections (groups by the USER'S own sheet names — so Gold under a 'Cash' sheet stays in 'Cash' because that's where the holder put it; use assets_class for canonical asset-type grouping instead), assets_class (groups by Asset.type: stock / crypto / real_estate / vehicle / precious_metal / private_equity / manual_other / cash / crypto_wallet), stocks_sector (sector dimension on stock-class assets only), stocks_geography (country dimension on stock-class assets only — use get_allocation(by=geography) for ALL asset classes), crypto. grain ∈ {daily, monthly, quarterly}. display ∈ {totals, allocation}.
list_assets
ChatGPTPaginated asset list. Use limit (default 100, max 200) and offset for pagination. Filter by type or portfolio_id. Use status to lens the sale state: 'active' (default; live holdings only), 'sold' (history of disposed assets), or 'all' (both — each row exposes sold_at so you can badge sold ones).
list_assets
ChatGPTPaginated asset list. Use limit (default 100, max 200) and offset for pagination. Filter by type or portfolio_id. Use status to lens the sale state: 'active' (default; live holdings only), 'sold' (history of disposed assets), or 'all' (both — each row exposes sold_at so you can badge sold ones).
list_debts
ChatGPTPer-debt list (the debt side of net worth, item by item): balance, currency, balance_usd, the DERIVED country (inherited from the linked asset / explicit override / Unknown) + country_source, the linked asset id+name, and interest_rate_apr / monthly_payment_native / maturity (null when the user hasn't entered them — never guessed). Filter by type, country (ISO alpha-2 or 'Unknown'), or linked_asset_id. Use this for debt-by-country or per-debt detail; get_net_worth only gives the aggregate total.
list_debts
ChatGPTPer-debt list (the debt side of net worth, item by item): balance, currency, balance_usd, the DERIVED country (inherited from the linked asset / explicit override / Unknown) + country_source, the linked asset id+name, and interest_rate_apr / monthly_payment_native / maturity (null when the user hasn't entered them — never guessed). Filter by type, country (ISO alpha-2 or 'Unknown'), or linked_asset_id. Use this for debt-by-country or per-debt detail; get_net_worth only gives the aggregate total.
list_flows
ChatGPTRecurring cash flows (income / expense), item by item: label, kind, category, amount_native, currency, recurrence, start/end date, linked asset/debt id, the DERIVED country (+ country_source), and monthly_equivalent_usd (from the canonical cashflow engine). Filter by kind (income/expense), country, or recurrence. Use this for income/expense analysis, savings rate, debt-service capacity, or cash flow by country.
list_flows
ChatGPTRecurring cash flows (income / expense), item by item: label, kind, category, amount_native, currency, recurrence, start/end date, linked asset/debt id, the DERIVED country (+ country_source), and monthly_equivalent_usd (from the canonical cashflow engine). Filter by kind (income/expense), country, or recurrence. Use this for income/expense analysis, savings rate, debt-service capacity, or cash flow by country.
list_portfolios
ChatGPTAll portfolios in the account. Returns id, name, slug, base_currency.
list_portfolios
ChatGPTAll portfolios in the account. Returns id, name, slug, base_currency.
net_worth_by_country
ChatGPTAssets, debts AND net worth bucketed by country, with percentages (each group sums to exactly 100.00) + debt-country provenance (explicit / inherited-from-asset / unknown). Debt country is DERIVED from the linked asset (single source of truth); the 'Unknown' bucket stays in the denominator. Prefer this over get_allocation(by=geography) when the user asks for assets AND debts (or net worth) by country.
net_worth_by_country
ChatGPTAssets, debts AND net worth bucketed by country, with percentages (each group sums to exactly 100.00) + debt-country provenance (explicit / inherited-from-asset / unknown). Debt country is DERIVED from the linked asset (single source of truth); the 'Unknown' bucket stays in the denominator. Prefer this over get_allocation(by=geography) when the user asks for assets AND debts (or net worth) by country.
parse_document
ChatGPTExtract asset positions from a document (PDF / CSV / image). Async fire-and-return: the tool persists the file, kicks off the parse in the background, and returns {job_id, state, confirm_url} immediately. The user opens confirm_url in their browser to review the extracted assets and confirm which to import — this tool NEVER creates assets directly. Base64-only (no URL fetch — closes SSRF surface). Counts against the account's monthly AI-call cap; capped responses come back as isError with error='cap_exceeded'.
parse_document
ChatGPTExtract asset positions from a document (PDF / CSV / image). Async fire-and-return: the tool persists the file, kicks off the parse in the background, and returns {job_id, state, confirm_url} immediately. The user opens confirm_url in their browser to review the extracted assets and confirm which to import — this tool NEVER creates assets directly. Base64-only (no URL fetch — closes SSRF surface). Counts against the account's monthly AI-call cap; capped responses come back as isError with error='cap_exceeded'.