AI agents · Tool reference

What your AI assistant can do with NetWorthTrackr

15 tools: 8 that read your figures, 4 that record or change them when you ask, and 3 that delete, each with a check that refuses a mistaken target. This is the same list your assistant receives when it connects.

How your assistant knows what to do

01 · Connect

You sign in once

Your assistant connects to the NetWorthTrackr MCP server and receives a token for your data only.

02 · Discover

It reads this list

It calls tools/list and gets every tool below: its name, what it is for, when not to use it, and exactly which inputs it takes.

03 · Call

It picks the tool

When you ask something, the model chooses the tool and inputs itself, and asks you before anything that changes your data.

What we tell every assistant when it connects

  1. NetWorthTrackr holds the user's own record of what they own and owe: accounts with balances over time, and stock/ETF/fund/crypto holdings. There is no bank connection; balances are what the user recorded.
  2. Start with get_net_worth for overall questions and list_accounts for anything about a specific account (it gives the account_id other tools need).
  3. Amounts are in each account's own currency unless a tool says it converted them. Liabilities (mortgages, loans, cards) are stored as positive amounts owed.
  4. Only call write or delete tools when the user explicitly asks for that change, and repeat back what will change first. Prefer update_account with archived: true over delete_account when the user only wants an account out of their totals.
  5. Responses include a view_in_app link; offer it when the user may want to check or edit something in the app.

Read

Answer questions. Never change anything, so assistants run them without asking.

get_net_worth

Read only

Net worth, assets and liabilities today, in your currency or any of 31 others.

Try asking

“What's my net worth in dollars?”

Inputs

currencyone of 31 codes
Uppercase ISO 4217 code to convert into, e.g. EUR. Omit to use the user's preferred currency.
Example response · sample data
{ "currency": "USD", "net_worth": 152437, "total_assets": 361713, "total_liabilities": 209276, "accounts_counted": 6, "as_of": "2026-10-02" }

list_accounts

Read only

Every account with its latest balance, in its own currency and converted.

Try asking

“Which of my accounts are in euros?”

Inputs

currencyone of 31 codes
Uppercase ISO 4217 code to convert into, e.g. EUR. Omit to use the user's preferred currency.
include_archivedboolean
Include archived accounts. Default false.
Example response · sample data
{ "accounts": [ { "name": "Savings", "type": "asset", "category": "Savings", "currency": "EUR", "latest_balance": 18500, "latest_balance_date": "2026-09-28" }, ... ] }

get_allocation

Read only

How your wealth splits across cash, investments, property, debt and so on.

Try asking

“How much of my wealth is property?”

Inputs

currencyone of 31 codes
Uppercase ISO 4217 code to convert into, e.g. EUR. Omit to use the user's preferred currency.
Example response · sample data
{ "by_category": [ { "category": "Real Estate", "assets": 245000, "liabilities": 0, "net": 245000 }, { "category": "Mortgage", "assets": 0, "liabilities": 176300, "net": -176300 }, ... ] }

get_currency_exposure

Read only

How much you hold in each currency, and its share of your assets.

Try asking

“How exposed am I to the dollar?”

Inputs

currencyone of 31 codes
Uppercase ISO 4217 code to convert into, e.g. EUR. Omit to use the user's preferred currency.
Example response · sample data
{ "by_currency": [ { "currency": "EUR", "net": 98400, "share_of_assets_percent": 71.2 }, { "currency": "USD", "net": 36500, "share_of_assets_percent": 28.8 } ] }

get_net_worth_history

Read only

Net worth over the last month, quarter, year or all time.

Try asking

“How has my net worth changed this year?”

Inputs

periodrequired1M | 3M | 6M | 12M | ALL
1M, 3M, 6M, 12M or ALL.
currencyone of 31 codes
Uppercase ISO 4217 code to convert into, e.g. EUR. Omit to use the user's preferred currency.
Example response · sample data
{ "period": "12M", "sampling": "weekly", "points": [ { "date": "2025-10-05", "net_worth": 118200 }, ... ], "change": { "change": 16700, "percent": 14.13 } }

get_insights

Read only

Growth streaks, all-time high, volatility, best and worst months.

Try asking

“What was my best month ever?”

Inputs

currencyone of 31 codes
Uppercase ISO 4217 code to convert into, e.g. EUR. Omit to use the user's preferred currency.
Example response · sample data
{ "growth_streak_months": { "current_streak": 4 }, "all_time_high": { "value": 134900, "at_all_time_high_now": true }, "biggest_monthly_gain": { "month": "2026-03", "delta": 6200 } }

get_account_history

Read only

Every balance recorded for one account, newest first.

Try asking

“Show me my pension balances this year.”

Inputs

account_idrequiredid
From list_accounts.
fromstring
Earliest date to include, YYYY-MM-DD.
tostring
Latest date to include, YYYY-MM-DD.
limitinteger
Maximum entries. Default 100.
Example response · sample data
{ "account": { "name": "Workplace pension", "currency": "EUR" }, "entries": [ { "date": "2026-09-30", "amount": 52400 }, { "date": "2026-06-30", "amount": 50100 }, ... ] }

get_portfolio_holdings

Read only

Stocks, ETFs, funds and crypto with value and gain.

Try asking

“What's my best-performing holding?”

Inputs

None.

Example response · sample data
{ "holdings": [ { "symbol": "VWCE.DE", "shares": 120, "buy_price": 98.4, "current_price": 131.2, "market_value": 15744, "gain_percent": 33.33, "currency": "EUR" }, ... ] }

Change

Only when you ask for a change. Your assistant shows the call before it runs.

add_balance_entry

Asks first · overwrites

Record today's (or a past date's) balance for an account.

Try asking

“Savings is 19,250 today, update it.”

Safeguards

  • One entry per account per day, so a retry replaces instead of duplicating
  • No future dates, no archived accounts

Inputs

account_idrequiredid
From list_accounts.
amountrequirednumber
Balance in the account's currency. Never negative.
datestring
YYYY-MM-DD, not in the future. Default today.
notesstring
Example response · sample data
{ "done": "added", "account": "Savings", "currency": "EUR", "date": "2026-10-02", "amount": 19250, "previous_amount_on_this_date": null }

create_account

Asks first

Add an asset or liability account, with an optional starting balance.

Try asking

“Add a savings account at ING in euros with 5,000 in it.”

Safeguards

  • A duplicate name returns the existing account instead of creating a second one

Inputs

namerequiredstring
typerequiredasset | liability
categoryrequiredstring
Asset: Cash, Checking, Savings, Investment, Retirement, Real Estate, Vehicle, Other Asset. Liability: Credit Card, Personal Loan, Mortgage, Auto Loan, Student Loan, Other Liability.
currencyrequiredone of 31 codes
Currency the account is held in.
institutionstring
Bank or provider, e.g. ING.
counted_in_net_worthboolean
Default true.
initial_balancenumber
Recorded as today's balance.
Example response · sample data
{ "done": "created", "account": { "name": "ING Savings", "type": "asset", "category": "Savings", "currency": "EUR" }, "initial_balance": 5000 }

update_account

Asks first · overwrites

Rename, recategorise, archive, or exclude an account from net worth.

Try asking

“Archive my old Revolut account.”

Safeguards

  • Returns the account before and after
  • Type and currency changes stay in the app, because they reinterpret history

Inputs

account_idrequiredid
From list_accounts.
namestring
categorystring
Must match the account type; see create_account.
institutionstring | null
null clears it.
counted_in_net_worthboolean
archivedboolean
Example response · sample data
{ "done": "updated", "before": { "name": "Revolut", "archived": false }, "after": { "name": "Revolut", "archived": true } }

upsert_holding

Asks first · overwrites

Add a position by ticker, priced from market data, or update its shares.

Try asking

“I bought 20 more VWCE, I now have 140 at an average of 101.”

Safeguards

  • Matched by symbol, so a retry updates instead of duplicating
  • Unknown tickers are refused, not guessed

Inputs

symbolrequiredstring
sharesrequirednumber
buy_pricerequirednumber
Average price paid per share, in the currency the symbol trades in.
asset_classequity | bond | mutual_fund | etf | crypto | other
Example response · sample data
{ "done": "updated", "before": { "symbol": "VWCE.DE", "shares": 120 }, "after": { "symbol": "VWCE.DE", "shares": 140, "buy_price": 101 } }

Delete

Permanent, so each one names what it removes and refuses on a mismatch.

delete_account

Permanent

Delete an account and its history. Needs the exact account name as a check.

Try asking

“Delete the test account I made yesterday.”

Safeguards

  • Requires the exact account name as well as its id
  • Archiving is suggested when you only want it out of your totals

Inputs

account_idrequiredid
From list_accounts.
confirm_namerequiredstring
The account's exact name, as a check.
Example response · sample data
{ "done": "deleted", "account": { "name": "Test account" }, "balance_entries_deleted": 3 }

delete_balance_entry

Permanent

Remove one date's balance from an account.

Try asking

“Remove the savings entry I put on the 15th by mistake.”

Safeguards

  • Names the date it removes; a missing entry is reported, not guessed

Inputs

account_idrequiredid
From list_accounts.
daterequiredstring
The date of the entry, YYYY-MM-DD. See get_account_history.
Example response · sample data
{ "done": "deleted", "account": "Savings", "date": "2026-09-15", "amount": 1850 }

delete_holding

Permanent

Remove a position, for example after selling it.

Try asking

“I sold all my Figma shares, remove them.”

Safeguards

  • Matched by symbol; an unknown symbol is reported, not guessed

Inputs

symbolrequiredstring
As listed by get_portfolio_holdings.
Example response · sample data
{ "done": "deleted", "holdings": [ { "symbol": "FIG", "shares": 500 } ] }

Not in this list

Closing your NetWorthTrackr account, changing an account's type or currency, and anything to do with your sign-in stay in the app. They are rare, hard to undo, and better done where you can see the whole picture. To connect an assistant, see the setup guide.

Common questions

Through the Model Context Protocol. When your assistant connects, it asks the server for its tool list and receives each tool’s name, description and input schema: the same information shown on this page. It never needs to read this page.

It decides which read tool answers your question, the same way it decides what to search. The 7 tools that change data say in their own description to run only on an explicit request, and assistants ask you before running them.

Each delete names what it removes. Deleting an account needs its exact name as well as its id, deleting a balance needs the date, and deleting a holding needs the symbol. A mismatch deletes nothing.

Probably, and this page updates with them automatically, because it is generated from the same list the server uses.

· Free · No credit card · No bank login

Wheels up. Calculate your entire net worth in 60 seconds.

Try the calculator first