Skip to main content
This page is generated from the server’s tool registry, so it matches what tools/list returns. The same catalogue is served as JSON at https://api.ai2fin.com/.well-known/mcp-server/tools.json (no authentication, cached 5 minutes). For a guided start see the Quickstart; for sign-in details see Authentication.

Setup

Authentication and permissions

  • OAuth 2.1 authorization code + PKCE (S256), exact redirect-URI match. Endpoints are published in the authorization server metadata at https://api.ai2fin.com/mcp/.well-known/oauth-authorization-server; the protected resource metadata is at https://api.ai2fin.com/.well-known/oauth-protected-resource/mcp.
  • Dynamic Client Registration and Client ID Metadata Documents are both accepted.
  • Scopes and what each unlocks:
    • read:transactions — every Read tool over transactions, spending, tax summaries, categories, lenses, budgets, income, insights, assets, places, expected income, upcoming money, account and plan.
    • read:bills — Read tools over bills and bill occurrences.
    • write:transactions — Write and Sensitive write tools (creating, updating, categorising, receipts, trips, budgets, assets, tax statements).
    • write:bills — the same write gate; either write scope unlocks the write tools.
    • write:expenses, webhooks:manage — Integration API scopes; they do NOT unlock MCP write tools.
  • Read-only option: request only read:* scopes. A token without a write scope gets insufficient_scope on every Write tool and can never change data. A client that requests no scope receives the default scope set, shown on the consent screen.
  • Every call is scoped to the signed-in user. Tokens carry the user, the client and the granted scopes; there is no cross-user or account-wide access.
  • Per-client profile: a Meta Muse client (identified by its OAuth client id) is offered every Read tool plus the everyday writes listed below, never a delete action and never tax lodgement. See “Available to Muse”.

Tool classes

  • Read — readOnlyHint: true; changes nothing; responses may be cached for 60 s.
  • Write — creates or updates the user’s own records; reversible in the app.
  • Sensitive write — writes that change what the user claims or declares. Muse asks the user before every call to these. Currently: manage_asset (Changes the depreciating-asset register, which changes the depreciation the user claims); manage_tax_filing (Creates, changes and marks the status of tax statements (BAS/VAT/GST) the user lodges).
Published annotations per tool (tools/list): title, readOnlyHint, destructiveHint (true when any action can delete), openWorldHint (true only for lookup_tax_reference, which reads official tax-authority pages).

Status and outcome handling

All responses are JSON-RPC 2.0. For tools/call:

Errors

Rate limits

A global per-user request limit applies to /mcp. On top of that, the tools below have a per-user sliding-window limit, enforced on every call and listed per tool: heavy or bulk writes, AI analysis, receipt processing and the one open-web lookup. Tools without a listed limit have only the global limit.

Data handling

2Fin returns only the signed-in user’s own records, including transactions from bank accounts the user has connected, and never exposes other users’ data. Before anything leaves the server it strips emails, card numbers, bank account and BSB numbers, phone numbers, tax file numbers and the names of people in person-to-person transfers; merchants, amounts, dates and record ids are kept. Privacy policy: https://app.ai2fin.com/privacy. Support: https://ai2fin.com/contact. Security contact: [email protected].

Tool index

Read (23)

Write (19)

Sensitive write (2)

Tools

Read tools

query_transactions — Find transactions

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Query transactions. Use view=“filter” for standard filters (date, merchant, amount, category, tax, property). Use view=“intelligence” for AI keyword search (e.g. “travel-related”, “marketing”). Filter-view rows carry place: the property each is at ({ id, name, part, inherited — true when it is there through its bill }) or null.
  • Views: filter, intelligence
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

analyze_spending — Analyse spending

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Analyze spending patterns. Views: “analytics” (enterprise analytics with flexible filters), “by_category” (spending by category), “top_merchants” (top vendors), “compare_periods” (month-over-month etc.), “outlook” (blended actual + projected bills).
  • Views: analytics, by_category, top_merchants, compare_periods, outlook
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: 30 calls per minute per user
  • Available to Muse: yes

get_tax_summary — Tax deduction summary

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Get complete tax summary: total spending, deductible amount, percentage, breakdown by category, confidence analysis, GST/VAT claimable. Use for “What’s my tax deductible percentage?”, “How much can I claim?”
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

query_bills — Find bills and subscriptions

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Query bills and bill data. Views: “patterns” (all recurring patterns), “upcoming” (bills due soon), “overdue” (past due unpaid), “occurrences” (flexible filter by paid/unpaid/date/merchant), “summary” (monthly totals), “financial” (FY summary per pattern), “transactions” (payment history for a bill).
  • Views: patterns, upcoming, overdue, occurrences, summary, financial, transactions
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

query_categories — List categories

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Query categories and category sets. Views: “categories” (list categories with filters), “sets” (list category sets), “active_set” (get currently active set), “all” (categories + sets together).
  • Views: categories, sets, active_set, all
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

query_travel — Find vehicle trips

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Query travel data. Views: “profile” (preferences/currency), “vehicles” (list vehicles), “trips” (trip log with filters), “deduction_summary” (FY mileage summary), “trip_transactions” (expenses for a trip).
  • Views: profile, vehicles, trips, deduction_summary, trip_transactions
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

query_rules — List categorisation rules

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Query custom rules. Returns list of rules with optional filters. Set testConditions to dry-run a rule against recent transactions.
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Pro or higher
  • Rate limit: global request limit only
  • Available to Muse: yes

get_user_info — Account and plan

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Get user information. Views: “profile” (preferences, country, business type), “subscription” (plan, status, features), “feature_access” (check specific feature), “quota” (usage limits), “all” (everything together).
  • Views: profile, subscription, feature_access, quota, all
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

get_entity_details — Explain a transaction or merchant

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Get detailed entity information. Views: “relationships” (linked bills, trips, receipts, rules for a transaction), “receipts” (receipt files for a transaction), “history” (full change audit trail, Elite+), “field_history” (changes to a specific field, Elite+), “all” (relationships + receipts together).
  • Views: relationships, receipts, history, field_history, all
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

get_suggestions — Suggestions and missed deductions

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Get AI-powered suggestions. Types: “budgets” (realistic budget amounts based on spending), “rules” (automation rules based on categorization patterns), “tax_deductions” (missed deduction opportunities).
  • Required inputs: type
  • Side effects: none
  • Confirmation: none
  • Plan requirement: ai_tax_analysis feature (Pro, Elite+) — type=tax_deductions only
  • Rate limit: global request limit only
  • Available to Muse: yes

query_tax_filing — Tax statements

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Query tax filing data. Views: “jurisdictions”, “statements”, “statement”, “audit”, “auto_populate”. Use this for BAS/VAT/GST filing data retrieval.
  • Views: jurisdictions, statements, statement, audit, auto_populate
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: tax_filing feature (Elite+, Auto+)
  • Rate limit: global request limit only
  • Available to Muse: yes

get_tax_filing_guidance — Tax filing guidance

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Get country-specific tax filing guidance (BAS/VAT/GST): authority info, portal links, filing frequencies, exact period dates, export formats, and schema hints for user questions.
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: tax_filing feature (Elite+, Auto+)
  • Rate limit: global request limit only
  • Available to Muse: yes

query_tax_estimators — Tax estimators

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Statutory estimators computed from official published rates. Views: “overview” (which estimators exist for a country), “student_loan” (compulsory study/training-loan repayment, e.g. AU HELP/HECS, from repaymentIncome), “superannuation” (mandatory retirement contributions, e.g. AU Superannuation Guarantee, from ordinaryEarnings). Indicative estimates — general information, not personal tax or financial advice.
  • Views: overview, student_loan, superannuation
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

lookup_tax_reference — Official tax sources

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint true
  • Description: Find the OFFICIAL tax-authority page(s) for a general tax question (deductibility rules, eligibility, thresholds, residency, deadlines, GST/VAT registration, super, study loans, CGT, crypto) so you can cite the source. Returns the authority, matching official pages with a verification status and the date each was last verified, a fallback search URL on the authority site, and the disclaimer to show. Use it when the user asks about a tax rule and a source is wanted; the returned URL is the citable address as published. Read-only. General information only — not personal advice.
  • Required inputs: question
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: 20 calls per minute per user
  • Available to Muse: yes

get_tax_estimate — Estimate tax

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: The person’s income tax estimate for the current tax year, as the app shows it: income by type, deductions, tax, tax already withheld, refund or amount owing, and notes on what is not counted. Also returns invoicesOwed: invoices still owed to them (never counted in the estimate; income counts when paid) with an optional what-if if they were paid by the end of the tax year. The what-if and owed invoices are not income received. Read-only.
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: tax_filing feature (Elite+, Auto+) — write-offs inside the estimate; the estimate itself is on every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

query_lens — List views

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: List the user’s lenses (saved views / category sets they switch between: Tax, Project, Department, Client, Custom). Returns each lens’s name, type, category count, which is primary, and whether the user’s plan has access to the lens system (Elite+ / Auto+). Use this when the user asks about lenses, switching views, or ‘what lenses do I have’.
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Elite+ or higher
  • Rate limit: global request limit only
  • Available to Muse: yes

query_budget — Budget status and savings goals

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Check the user’s budget and spending status (‘am I on budget?’, ‘how much of my budget is left?’). Returns overall utilisation and over-budget categories. Set detail:true for a full per-category breakdown (budgeted vs actual, % used, RAG status), income/savings context, and what is still to come this cycle: committed (bills still due before the cycle ends — not spent yet, never part of actual) and expectedIncome (received = money that actually came in this cycle; expected and estimated = money still expected, not yet received). Figures are per currency and are not added across currencies. Set goals:true for savings goals (‘how much a week to save $5,000 by June?’): each goal’s target, saved, remaining, deadline, percent and perWeekNeeded / perMonthNeeded (null when there is no deadline; overdue:true when the deadline has passed). If the user has no budget, returns guidance to set one up on the Allocations page.
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

query_income — Income

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Show the user’s income — recurring monthly income from detected income streams (salary, regular deposits), with a fallback to transaction-derived income when no streams are detected. Use for ‘what’s my income?’, ‘how much do I earn a month?’, ‘when’s my next payday?’.
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

query_insights — Cash flow and budget insights

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Financial insights snapshot. view ‘cashflow’ (default): income vs expenses, net, savings rate, and top expense categories over a period. view ‘budget’: overall budget utilisation and over-budget categories. Use for ‘how am I doing?’, ‘where’s my money going?’, ‘what’s my savings rate?’.
  • Views: cashflow, budget
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

query_assets — Asset register

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Read the depreciating asset register and the reports built on it. Views: “register” (assets on the register), “asset” (one asset by assetId), “unregistered” (capital purchases in the bank feed that are not on the register yet), “depreciation_schedule” (decline in value per asset for one income year), “tpar” (taxable payments annual report — Australia only), “profit_loss” (profit & loss for one income year), “explainer” (what depreciation is in the user’s country, which methods apply, the write-off threshold, and which asset fields to collect). Reports are prepared under the user’s stored tax country.
  • Views: register, asset, unregistered, depreciation_schedule, tpar, profit_loss, explainer
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Elite+ or higher; tax_filing feature (Elite+, Auto+)
  • Rate limit: global request limit only
  • Available to Muse: yes

query_places — Places and properties

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Read the user’s properties (home, rental, vehicle, business premises) and what their money did at each. A property is a second axis beside the category — a repair at a rental is still “Repairs”. Views: “list” (every property with kind, ownership/rented/business shares, the person’s answers about a home — businessUse home_office|place_of_business, rentalArrangement domestic|commercial|below_market, null = not answered — active, and cash spent/received), “summary” (one property’s cash picture: totals, the split between its rented, business and private parts, net rental cash, spend by category, its bills and assets; for a home that earns income also homeTreatment — what the answers counted private — and, in Australia, homePosition: the share the main residence exemption does not cover by period (each with how the business part was used then), weighted by days (overTime), the six-year rule and the market value rule, each notice with its source URL), “write_offs” (ELITE+ only: depreciation of assets there and capital works on the building, with the split and net rental result including them, and where it is reported). Pick a property by placeId or name. Period: from/to (YYYY-MM-DD) or financialYear (the year the income year starts in); none means everything on record.
  • Views: list, summary, write_offs
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: tax_filing feature (Elite+, Auto+) — view=write_offs only
  • Rate limit: global request limit only
  • Available to Muse: yes

query_expected_income — Money you are owed

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: What the user’s clients owe and have paid, and the work behind it — for drafting an invoice in the user’s own invoicing tool (2Fin does not make invoices). view ‘open’ (default): money still owed — expected, partly paid and overdue items, each with client, invoice number, amount, due date, what was received and what is outstanding. view ‘by_payer’: income received per client/payer over a period (startDate/endDate, default the last 90 days). view ‘work_done’: work activities and hours recorded for the user’s home/business places, and business trips from the logbook, in a period. Use for ‘who owes me?’, ‘what did Acme pay this year?’, ‘what should I invoice for last month?’.
  • Views: open, by_payer, work_done
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

get_upcoming_money — Upcoming money in and out

  • Class: Read
  • Annotations: readOnlyHint true, destructiveHint false, openWorldHint false
  • Description: Money coming in and going out over the next days: bills due, expected income (invoices, rent, repayments), later dates of recurring income, and estimated pay days from the user’s employers. Each row has direction (in/out), certainty (scheduled/estimated), status (upcoming, due_today, overdue, partly_received…) and the amount still to come; totals are per currency (different currencies are not added together). Expected money is not received money and is not income already earned. Read-only. Use for ‘what’s coming up this fortnight?’, ‘what do I owe before payday?’, ‘when is rent due?’.
  • Required inputs: none
  • Side effects: none
  • Confirmation: none
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

Write tools

create_transaction — Add a transaction

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint false, openWorldHint false
  • Description: Record a transaction the user tells you about (a manual entry written to their 2Fin ledger; bank-feed rows arrive on their own and are not created here). Custom rules run on it afterwards. Required: description and amount (negative for money out). Retry-safe: calling again with the same amount, date, description and merchant within 10 minutes returns the existing record with alreadyExisted:true instead of creating a second one.
  • Required inputs: description, amount
  • Side effects: Creates one transaction in the user’s manual (non-bank-feed) records.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: 30 calls per minute per user
  • Available to Muse: yes

modify_transactions — Update transactions

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Modify transactions. Actions: “update” (bulk update fields like category, tax, notes, property — placeId/placeUse, and why it was business — expenseType/businessPurpose/attendees), “categorize” (bulk set category by merchant or IDs), “apply_analysis” (apply AI categorization/tax analysis to a single transaction), “set_splits” (replace a single transaction’s split lines — each line its own category, property and tax flags; amounts must add up to the transaction’s amount; [] clears the split), “tag” / “untag” (add or remove an EXTRA category — a business trip, client or project from a project/client lens — on transactionIds or every expense between startDate and endDate, keeping each transaction’s main category: “everything on my card in Sydney Mon–Fri is the Acme trip”).
  • Actions: update, categorize, apply_analysis, set_splits, tag, untag
  • Required inputs: action
  • Side effects: Updates category, tax flags, notes, place and split lines on the chosen transactions; tag/untag add or remove a secondary category. Deletes nothing.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: 20 calls per minute per user
  • Available to Muse: yes

analyze_transactions — Categorise and check transactions

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Analyze transactions with AI. Actions: “categorize” (suggest category for one), “tax” (analyze tax deductibility for one), “bulk_tax” (analyze many for deductibility), “smart_categorize” (AI categorization — not yet available via MCP), “find_duplicates” (detect potential duplicates).
  • Actions: categorize (blocked for Muse), tax (blocked for Muse), bulk_tax (blocked for Muse), smart_categorize (blocked for Muse), find_duplicates (blocked for Muse)
  • Required inputs: action
  • Side effects: Stores AI category and deductibility suggestions on the analysed transactions; the user’s own classification is unchanged until modify_transactions applies them.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Pro or higher; ai_categorization feature (Pro, Elite+) — categorize, smart_categorize; ai_tax_analysis feature (Pro, Elite+) — tax, bulk_tax
  • Rate limit: 20 calls per minute per user
  • Available to Muse: no

manage_bill_pattern — Manage a recurring bill

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Manage recurring patterns — bills you pay (money out) and income you receive (money in; patternType recurring_income). Actions: “create” (new recurring bill or income), “update” (change amount/frequency/active status — use isActive to toggle), “delete” (permanently delete the pattern and its scheduled payments; its bank transactions are kept, unlinked; to pause instead, update isActive=false), “set_splits” (replace the bill’s percent-line template, applied to every future payment that has no lines of its own; percents must sum to 100; [] clears it).
  • Actions: create, update, delete (deletes, blocked for Muse), set_splits
  • Required inputs: action
  • Side effects: Creates, updates or deletes a recurring bill/income pattern and its generated occurrences; set_splits replaces the pattern’s split lines.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: partial (blocked: delete)

manage_bill_payment — Record a bill payment

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Manage bill payments and occurrences. Actions: “pay” (mark as paid; links the given transactionId or optionally creates a transaction — money out only: refused for an income pattern unless a real deposit transactionId is given), “create” (manual one-time occurrence), “update” (change occurrence details), “delete” (remove occurrence), “batch_update” (update multiple), “bulk_pay” (mark multiple paid), “attach_receipt” (link receipt to payment).
  • Actions: pay, create (blocked for Muse), update (blocked for Muse), delete (deletes, blocked for Muse), batch_update (blocked for Muse), bulk_pay, attach_receipt
  • Required inputs: action
  • Side effects: Marks bill occurrences paid, creates/updates/deletes occurrences, optionally creates the payment transaction, attaches a receipt to an occurrence.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: partial (blocked: create, update, delete, batch_update)
  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Link/unlink bills to transactions. Actions: “link” (connect occurrence to transaction), “unlink” (disconnect), “auto_link” (match unlinked transactions to bills and WRITE the links; set dryRun:true to preview without writing), “suggest_patterns” (analyze transactions and suggest recurring bill patterns; read-only).
  • Actions: link, unlink, auto_link, suggest_patterns
  • Required inputs: action
  • Side effects: Links or unlinks a transaction and a bill occurrence; auto_link creates links in bulk. suggest_patterns changes nothing.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

manage_category — Manage a category

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Manage individual categories. Actions: “create” (new category), “update” (change name/color/emoji/active status — use isActive to toggle), “delete” (remove category), “move_to_set” (move to different set, Elite+).
  • Actions: create, update, delete (deletes, blocked for Muse), move_to_set
  • Required inputs: action
  • Side effects: Creates, updates or deletes a category; move_to_set moves it between category sets. Deleting reassigns its transactions to the default category.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: partial (blocked: delete)

manage_category_set — Manage a category set

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Manage category sets (Elite+). Actions: “create” (new set), “update” (change name/color/active status), “delete” (remove set, categories move to migrateToSetId or the default set), “set_active” (make a set the active one), “duplicate” (copy set with categories).
  • Actions: create, update, delete (deletes, blocked for Muse), set_active, duplicate
  • Required inputs: action
  • Side effects: Creates, updates, duplicates or deletes a category set; set_active switches the active set. Deleting moves its categories to another set.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Elite+ or higher
  • Rate limit: global request limit only
  • Available to Muse: partial (blocked: delete)

process_receipt — Save a receipt

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint false, openWorldHint false
  • Description: Process receipts and files. Modes: “smart” (extract fields, match bills AND write a transaction — this mode creates a record), “analyze_only” (extract fields only; nothing is written), “commit” (write: link to an existing transaction or create one from analyzed data), “upload_file” (import CSV/Excel expense file), “suggest_splits” (propose a split from a transaction’s matched receipt line items — read-only, never writes; use modify_transactions set_splits to apply it).
  • Required inputs: none
  • Side effects: Stores the receipt file in the user’s receipt space; smart/commit modes create or link a transaction and may create or match a bill.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: receipt_capture feature (Pro, Elite+)
  • Rate limit: 10 calls per minute per user
  • Available to Muse: yes
  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint false, openWorldHint false
  • Description: Get a short-lived upload URL for a receipt photo or PDF that is too large to send inline. Steps: 1) call this with the file’s mimeType and size in bytes, 2) HTTP PUT the raw file bytes to uploadUrl with the returned headers (Content-Type and Content-Length must match exactly), 3) call process_receipt with assetUrl (plus the same mimeType and size). The URL expires after 10 minutes. Accepts image/jpeg, image/png, image/heic, image/webp, application/pdf up to 10 MB.
  • Required inputs: mimeType, size
  • Side effects: Mints a short-lived presigned upload URL into the user’s own receipt storage. No records change until process_receipt commits the upload.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: receipt_capture feature (Pro, Elite+)
  • Rate limit: 10 calls per minute per user
  • Available to Muse: yes

manage_trip — Log a vehicle trip

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Log and edit vehicle trips (the logbook behind car travel deductions). Actions: “create” — e.g. “drove 45 km from home to the Acme office for a client meeting”: give tripDate, purpose, distanceKm (odometer readings optional) and startLocation/endLocation; the vehicle defaults to the user’s only vehicle. “update” (fix a trip), “bulk_link_transactions” (match tolls/parking/fuel to trips by date — suggestions only, links are not persisted).
  • Actions: create, update, bulk_link_transactions
  • Required inputs: action
  • Side effects: Creates or updates a logbook trip on one of the user’s vehicles; bulk_link_transactions attaches transactions to trips.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: 30 calls per minute per user
  • Available to Muse: yes

manage_rule — Manage a categorisation rule

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Manage custom rules. Actions: “create” (new rule), “update” (modify rule — use isActive to enable/disable), “delete” (remove rule).
  • Actions: create, update (blocked for Muse), delete (deletes, blocked for Muse)
  • Required inputs: action
  • Side effects: Creates, updates or deletes a categorisation rule. Rules change how future transactions are categorised.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Pro or higher
  • Rate limit: global request limit only
  • Available to Muse: partial (blocked: update, delete)

set_user_preferences — Update preferences

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Update user preferences: countryCode, businessType, industry, profession, aiContextInput, hasStudyLoan.
  • Required inputs: none
  • Side effects: Updates profile fields: country, business type, industry, profession, AI context note, study-loan flag.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: no

create_expense — Add an expense

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint false, openWorldHint false
  • Description: Record an expense the user tells you about (written to their 2Fin expense records; custom rules run on it afterwards). Required: description, amount (positive) and date. Retry-safe: calling again with the same amount, date and description within 10 minutes returns the existing record with alreadyExisted:true instead of creating a second one.
  • Required inputs: description, amount, date
  • Side effects: Creates one expense record and runs the user’s own rules against it.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: 30 calls per minute per user
  • Available to Muse: yes

manage_lens — Manage a view

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Manage the user’s lenses. Actions: ‘set_primary’ (make a lens the default the app opens with), ‘update’ (change a lens’s type or active state). Requires the lens id from query_lens. Lens creation/deletion is done on the Categories page, not here.
  • Actions: set_primary, update
  • Required inputs: action, lensId
  • Side effects: Changes a lens’s type or active state, or makes it the primary lens.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Elite+ or higher
  • Rate limit: global request limit only
  • Available to Muse: yes

manage_budget — Manage budget and savings goals

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Create or edit the user’s budget. Actions: ‘create_budget’ (new budget), ‘set_limit’ (add a per-category OR per-category-set spending limit), ‘update_limit’ (change a limit’s amount/frequency), ‘delete_limit’ (remove a limit), ‘set_income_target’ (set the budget’s monthly income target), ‘create_goal’ (new savings goal: name, targetAmount, optional deadline), ‘update_goal’ (change a goal’s name/targetAmount/deadline/isActive), ‘contribute_goal’ (record money put toward a goal), ‘withdraw_goal’ (record money taken out of a goal; cannot exceed its balance). Goals cannot be deleted here — deactivate with update_goal isActive:false. Reading status and goal pace is via query_budget (goals:true). Retry-safe: create_goal with a name that already exists in the budget returns that goal (alreadyExisted:true) rather than a second one, and contribute_goal with the same goalId, amount and note within 10 minutes returns the goal unchanged rather than moving the money twice. Writes money and limits, so confirm the change with the user first.
  • Actions: create_budget, set_limit, update_limit, delete_limit (deletes, blocked for Muse), set_income_target, create_goal, update_goal, contribute_goal, withdraw_goal
  • Required inputs: action
  • Side effects: Creates a budget, adds/changes/deletes per-category limits, sets an income target, creates/updates savings goals and records contributions or withdrawals.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: 30 calls per minute per user
  • Available to Muse: partial (blocked: delete_limit)

manage_vehicle — Manage a vehicle

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Manage the user’s vehicles for travel/logbook (reading is via query_travel view=vehicles). Actions: ‘create’ (registration + description required), ‘update’, ‘delete’. Always confirm with the user before deleting a vehicle.
  • Actions: create, update, delete (deletes, blocked for Muse)
  • Required inputs: action
  • Side effects: Creates, updates or deletes a vehicle on the user’s logbook.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: partial (blocked: delete)

manage_place — Manage a place

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint false, openWorldHint false
  • Description: Organise the user’s properties (free on every plan). Actions: “create” (name, kind home|rental|vehicle|business|other, optional ownershipPercent 1-100, rentalPercent, businessPercent — rented + business ≤ 100, the rest is private), “update” (rename / re-share), “archive” / “restore”, “assign_transactions” (put transactionIds at a property, optional placeUse shared|rental|business|private), “assign_bill” (put a recurring bill at a property — every payment it matched, past and future, is then at the property), “clear” (take transactionIds and/or a bill off their property). Choose the property by placeId or placeName. Deleting a property is only possible in the app. Confirm with the user before writing.
  • Actions: create, update, archive, restore, assign_transactions, assign_bill, clear
  • Required inputs: action
  • Side effects: Creates, updates, archives or restores a place and assigns transactions or bills to it; clear removes assignments. No delete is exposed.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

record_expected_income — Record money you are owed

  • Class: Write
  • Annotations: readOnlyHint false, destructiveHint false, openWorldHint false
  • Description: Record money the user is now waiting for — typically right after an invoice was sent from their own invoicing tool: ‘I invoiced Acme $2,400 due 15 Oct’. 2Fin does not create or send invoices; this only tracks what is owed, and matches the payment when it arrives in the bank feed. payerName, amount (GST included) and dueDate (YYYY-MM-DD) are required; reference is the invoice number from their tool. Confirm with the user before writing.
  • Required inputs: payerName, amount, dueDate
  • Side effects: Creates one expected-income record (money the user is owed). Sends nothing to anyone.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Every plan
  • Rate limit: global request limit only
  • Available to Muse: yes

Sensitive write tools

manage_tax_filing — Manage tax statements

  • Class: Sensitive write — Creates, changes and marks the status of tax statements (BAS/VAT/GST) the user lodges.
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Manage tax statement records. 2Fin prepares statements; the person lodges them with the tax authority themselves, and nothing is sent to any authority. Actions: create/update/delete jurisdiction, create/update/delete statement, mark a final statement as lodged (records the date the person lodged it; needs the accepted declaration), start an amendment of a lodged statement, mark exported.
  • Actions: create_jurisdiction (blocked for Muse), update_jurisdiction (blocked for Muse), delete_jurisdiction (deletes, blocked for Muse), create_statement (blocked for Muse), update_statement (blocked for Muse), delete_statement (deletes, blocked for Muse), submit_statement (blocked for Muse), mark_lodged (blocked for Muse), start_amendment (blocked for Muse), mark_exported (blocked for Muse)
  • Required inputs: action
  • Side effects: Creates, updates or deletes tax jurisdictions and statements and changes a statement’s status (submitted, lodged, amended, exported). Nothing is sent to any tax authority.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Elite+ or higher; tax_filing feature (Elite+, Auto+)
  • Rate limit: global request limit only
  • Available to Muse: no

manage_asset — Manage an asset

  • Class: Sensitive write — Changes the depreciating-asset register, which changes the depreciation the user claims.
  • Annotations: readOnlyHint false, destructiveHint true, openWorldHint false
  • Description: Change the depreciating asset register. Actions: “create” (add an asset), “update” (change fields on an asset), “dispose” (record a disposal: disposalDate + terminationValue), “delete” (remove an asset), “register_from_transaction” (add an asset seeded from a bank transaction — name, date, cost and property come from the purchase; supply method and effectiveLifeYears), “dismiss_unregistered” (mark a capital purchase as not an asset), “undismiss” (bring it back). Confirm specifics with the user before writing.
  • Actions: create, update, dispose (blocked for Muse), delete (deletes, blocked for Muse), register_from_transaction, dismiss_unregistered (blocked for Muse), undismiss (blocked for Muse)
  • Required inputs: action
  • Side effects: Registers, updates, disposes of or deletes a depreciating asset; register_from_transaction links a purchase. Changes the depreciation schedule and the tax estimate.
  • Confirmation: Muse: the client asks the user before each write; other MCP clients: two-step confirmToken (first call returns needsConfirmation + confirmToken, the repeat call with confirmToken executes).
  • Plan requirement: Elite+ or higher; tax_filing feature (Elite+, Auto+)
  • Rate limit: global request limit only
  • Available to Muse: partial (blocked: dispose, delete, dismiss_unregistered, undismiss)