MCP App Store
Productivity
wlthy icon

wlthy

by Westend Consulting LTD

Overview

wlthy is a net worth tracker for cross-border wealth. See your full portfolio, debts, and multi-currency cash flows across countries in one place, in any of 13 currencies. Import broker and bank statements, then break down allocation by asset class, loan-to-value, and FX exposure. Informational tracking only, not investment, tax or legal advice. wlthy never moves money or trades on your behalf.

Tools

get_allocation

ChatGPT
Allocation breakdown. by ∈ {class, sector, geography, currency}. Returns rows with category, value_usd, pct.

get_allocation

ChatGPT
Allocation breakdown. by ∈ {class, sector, geography, currency}. Returns rows with category, value_usd, pct.

get_asset

ChatGPT
Single asset detail + 30-day snapshot history.

get_asset

ChatGPT
Single asset detail + 30-day snapshot history.

get_net_worth

ChatGPT
Total net worth (USD) + 1-day & 30-day delta + asset/debt totals. Pass portfolio_id to scope to a single portfolio.

get_net_worth

ChatGPT
Total net worth (USD) + 1-day & 30-day delta + asset/debt totals. Pass portfolio_id to scope to a single portfolio.

get_recap

ChatGPT
OLAP-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

ChatGPT
OLAP-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

ChatGPT
Paginated 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

ChatGPT
Paginated 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

ChatGPT
Per-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

ChatGPT
Per-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

ChatGPT
Recurring 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

ChatGPT
Recurring 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

ChatGPT
All portfolios in the account. Returns id, name, slug, base_currency.

list_portfolios

ChatGPT
All portfolios in the account. Returns id, name, slug, base_currency.

net_worth_by_country

ChatGPT
Assets, 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

ChatGPT
Assets, 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

ChatGPT
Extract 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

ChatGPT
Extract 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'.

Capabilities

Writes

App Stats

20

Tools

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily