{"server":"https://api.ai2fin.com/mcp","documentation":"https://docs.ai2fin.com/mcp/introduction","privacyPolicy":"https://app.ai2fin.com/privacy","support":"https://ai2fin.com/contact","classes":{"Read":"readOnlyHint true; changes nothing","Write":"creates or updates the user's own records","Sensitive write":"changes what the user claims or declares; Muse asks before every call"},"sensitiveWriteTools":{"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."},"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).","toolCount":44,"tools":[{"name":"query_transactions","title":"Find transactions","class":"Read","sensitiveReason":null,"annotations":{"title":"Find transactions","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"filter","blockedForMuse":false,"deletes":false},{"name":"intelligence","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"analyze_spending","title":"Analyse spending","class":"Read","sensitiveReason":null,"annotations":{"title":"Analyse spending","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"analytics","blockedForMuse":false,"deletes":false},{"name":"by_category","blockedForMuse":false,"deletes":false},{"name":"top_merchants","blockedForMuse":false,"deletes":false},{"name":"compare_periods","blockedForMuse":false,"deletes":false},{"name":"outlook","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":"30 calls per minute per user","museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"get_tax_summary","title":"Tax deduction summary","class":"Read","sensitiveReason":null,"annotations":{"title":"Tax deduction summary","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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?\""},{"name":"create_transaction","title":"Add a transaction","class":"Write","sensitiveReason":null,"annotations":{"title":"Add a transaction","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":["description","amount"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":"30 calls per minute per user","museAvailability":"yes","museBlockedActions":[],"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."},{"name":"modify_transactions","title":"Update transactions","class":"Write","sensitiveReason":null,"annotations":{"title":"Update transactions","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"update","blockedForMuse":false,"deletes":false},{"name":"categorize","blockedForMuse":false,"deletes":false},{"name":"apply_analysis","blockedForMuse":false,"deletes":false},{"name":"set_splits","blockedForMuse":false,"deletes":false},{"name":"tag","blockedForMuse":false,"deletes":false},{"name":"untag","blockedForMuse":false,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":"20 calls per minute per user","museAvailability":"yes","museBlockedActions":[],"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\")."},{"name":"analyze_transactions","title":"Categorise and check transactions","class":"Write","sensitiveReason":null,"annotations":{"title":"Categorise and check transactions","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"categorize","blockedForMuse":true,"deletes":false},{"name":"tax","blockedForMuse":true,"deletes":false},{"name":"bulk_tax","blockedForMuse":true,"deletes":false},{"name":"smart_categorize","blockedForMuse":true,"deletes":false},{"name":"find_duplicates","blockedForMuse":true,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":"pro","features":[{"feature":"ai_categorization","plans":["pro","elite+"],"scope":"categorize, smart_categorize"},{"feature":"ai_tax_analysis","plans":["pro","elite+"],"scope":"tax, bulk_tax"}],"summary":"Pro or higher; ai_categorization feature (Pro, Elite+) — categorize, smart_categorize; ai_tax_analysis feature (Pro, Elite+) — tax, bulk_tax"},"rateLimit":"20 calls per minute per user","museAvailability":"no","museBlockedActions":["categorize","tax","bulk_tax","smart_categorize","find_duplicates"],"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)."},{"name":"query_bills","title":"Find bills and subscriptions","class":"Read","sensitiveReason":null,"annotations":{"title":"Find bills and subscriptions","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"patterns","blockedForMuse":false,"deletes":false},{"name":"upcoming","blockedForMuse":false,"deletes":false},{"name":"overdue","blockedForMuse":false,"deletes":false},{"name":"occurrences","blockedForMuse":false,"deletes":false},{"name":"summary","blockedForMuse":false,"deletes":false},{"name":"financial","blockedForMuse":false,"deletes":false},{"name":"transactions","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"manage_bill_pattern","title":"Manage a recurring bill","class":"Write","sensitiveReason":null,"annotations":{"title":"Manage a recurring bill","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create","blockedForMuse":false,"deletes":false},{"name":"update","blockedForMuse":false,"deletes":false},{"name":"delete","blockedForMuse":true,"deletes":true},{"name":"set_splits","blockedForMuse":false,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"partial","museBlockedActions":["delete"],"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)."},{"name":"manage_bill_payment","title":"Record a bill payment","class":"Write","sensitiveReason":null,"annotations":{"title":"Record a bill payment","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"pay","blockedForMuse":false,"deletes":false},{"name":"create","blockedForMuse":true,"deletes":false},{"name":"update","blockedForMuse":true,"deletes":false},{"name":"delete","blockedForMuse":true,"deletes":true},{"name":"batch_update","blockedForMuse":true,"deletes":false},{"name":"bulk_pay","blockedForMuse":false,"deletes":false},{"name":"attach_receipt","blockedForMuse":false,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"partial","museBlockedActions":["create","update","delete","batch_update"],"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)."},{"name":"link_bills","title":"Link transactions to bills","class":"Write","sensitiveReason":null,"annotations":{"title":"Link transactions to bills","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"link","blockedForMuse":false,"deletes":false},{"name":"unlink","blockedForMuse":false,"deletes":false},{"name":"auto_link","blockedForMuse":false,"deletes":false},{"name":"suggest_patterns","blockedForMuse":false,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"query_categories","title":"List categories","class":"Read","sensitiveReason":null,"annotations":{"title":"List categories","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"categories","blockedForMuse":false,"deletes":false},{"name":"sets","blockedForMuse":false,"deletes":false},{"name":"active_set","blockedForMuse":false,"deletes":false},{"name":"all","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"manage_category","title":"Manage a category","class":"Write","sensitiveReason":null,"annotations":{"title":"Manage a category","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create","blockedForMuse":false,"deletes":false},{"name":"update","blockedForMuse":false,"deletes":false},{"name":"delete","blockedForMuse":true,"deletes":true},{"name":"move_to_set","blockedForMuse":false,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"partial","museBlockedActions":["delete"],"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+)."},{"name":"manage_category_set","title":"Manage a category set","class":"Write","sensitiveReason":null,"annotations":{"title":"Manage a category set","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create","blockedForMuse":false,"deletes":false},{"name":"update","blockedForMuse":false,"deletes":false},{"name":"delete","blockedForMuse":true,"deletes":true},{"name":"set_active","blockedForMuse":false,"deletes":false},{"name":"duplicate","blockedForMuse":false,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":"elite+","features":[],"summary":"Elite+ or higher"},"rateLimit":null,"museAvailability":"partial","museBlockedActions":["delete"],"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)."},{"name":"process_receipt","title":"Save a receipt","class":"Write","sensitiveReason":null,"annotations":{"title":"Save a receipt","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[{"feature":"receipt_capture","plans":["pro","elite+"]}],"summary":"receipt_capture feature (Pro, Elite+)"},"rateLimit":"10 calls per minute per user","museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"get_receipt_upload_url","title":"Get a receipt upload link","class":"Write","sensitiveReason":null,"annotations":{"title":"Get a receipt upload link","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":["mimeType","size"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[{"feature":"receipt_capture","plans":["pro","elite+"]}],"summary":"receipt_capture feature (Pro, Elite+)"},"rateLimit":"10 calls per minute per user","museAvailability":"yes","museBlockedActions":[],"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."},{"name":"query_travel","title":"Find vehicle trips","class":"Read","sensitiveReason":null,"annotations":{"title":"Find vehicle trips","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"profile","blockedForMuse":false,"deletes":false},{"name":"vehicles","blockedForMuse":false,"deletes":false},{"name":"trips","blockedForMuse":false,"deletes":false},{"name":"deduction_summary","blockedForMuse":false,"deletes":false},{"name":"trip_transactions","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"manage_trip","title":"Log a vehicle trip","class":"Write","sensitiveReason":null,"annotations":{"title":"Log a vehicle trip","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create","blockedForMuse":false,"deletes":false},{"name":"update","blockedForMuse":false,"deletes":false},{"name":"bulk_link_transactions","blockedForMuse":false,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":"30 calls per minute per user","museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"query_rules","title":"List categorisation rules","class":"Read","sensitiveReason":null,"annotations":{"title":"List categorisation rules","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":"pro","features":[],"summary":"Pro or higher"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"description":"Query custom rules. Returns list of rules with optional filters. Set testConditions to dry-run a rule against recent transactions."},{"name":"manage_rule","title":"Manage a categorisation rule","class":"Write","sensitiveReason":null,"annotations":{"title":"Manage a categorisation rule","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create","blockedForMuse":false,"deletes":false},{"name":"update","blockedForMuse":true,"deletes":false},{"name":"delete","blockedForMuse":true,"deletes":true}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":"pro","features":[],"summary":"Pro or higher"},"rateLimit":null,"museAvailability":"partial","museBlockedActions":["update","delete"],"description":"Manage custom rules. Actions: \"create\" (new rule), \"update\" (modify rule — use isActive to enable/disable), \"delete\" (remove rule)."},{"name":"get_user_info","title":"Account and plan","class":"Read","sensitiveReason":null,"annotations":{"title":"Account and plan","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"profile","blockedForMuse":false,"deletes":false},{"name":"subscription","blockedForMuse":false,"deletes":false},{"name":"feature_access","blockedForMuse":false,"deletes":false},{"name":"quota","blockedForMuse":false,"deletes":false},{"name":"all","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"set_user_preferences","title":"Update preferences","class":"Write","sensitiveReason":null,"annotations":{"title":"Update preferences","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"no","museBlockedActions":[],"description":"Update user preferences: countryCode, businessType, industry, profession, aiContextInput, hasStudyLoan."},{"name":"get_entity_details","title":"Explain a transaction or merchant","class":"Read","sensitiveReason":null,"annotations":{"title":"Explain a transaction or merchant","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"relationships","blockedForMuse":false,"deletes":false},{"name":"receipts","blockedForMuse":false,"deletes":false},{"name":"history","blockedForMuse":false,"deletes":false},{"name":"field_history","blockedForMuse":false,"deletes":false},{"name":"all","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"get_suggestions","title":"Suggestions and missed deductions","class":"Read","sensitiveReason":null,"annotations":{"title":"Suggestions and missed deductions","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":["type"],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[{"feature":"ai_tax_analysis","plans":["pro","elite+"],"scope":"type=tax_deductions only"}],"summary":"ai_tax_analysis feature (Pro, Elite+) — type=tax_deductions only"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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)."},{"name":"create_expense","title":"Add an expense","class":"Write","sensitiveReason":null,"annotations":{"title":"Add an expense","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":["description","amount","date"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":"30 calls per minute per user","museAvailability":"yes","museBlockedActions":[],"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."},{"name":"query_tax_filing","title":"Tax statements","class":"Read","sensitiveReason":null,"annotations":{"title":"Tax statements","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"jurisdictions","blockedForMuse":false,"deletes":false},{"name":"statements","blockedForMuse":false,"deletes":false},{"name":"statement","blockedForMuse":false,"deletes":false},{"name":"audit","blockedForMuse":false,"deletes":false},{"name":"auto_populate","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[{"feature":"tax_filing","plans":["elite+","auto+"]}],"summary":"tax_filing feature (Elite+, Auto+)"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"description":"Query tax filing data. Views: \"jurisdictions\", \"statements\", \"statement\", \"audit\", \"auto_populate\". Use this for BAS/VAT/GST filing data retrieval."},{"name":"manage_tax_filing","title":"Manage tax statements","class":"Sensitive write","sensitiveReason":"Creates, changes and marks the status of tax statements (BAS/VAT/GST) the user lodges.","annotations":{"title":"Manage tax statements","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create_jurisdiction","blockedForMuse":true,"deletes":false},{"name":"update_jurisdiction","blockedForMuse":true,"deletes":false},{"name":"delete_jurisdiction","blockedForMuse":true,"deletes":true},{"name":"create_statement","blockedForMuse":true,"deletes":false},{"name":"update_statement","blockedForMuse":true,"deletes":false},{"name":"delete_statement","blockedForMuse":true,"deletes":true},{"name":"submit_statement","blockedForMuse":true,"deletes":false},{"name":"mark_lodged","blockedForMuse":true,"deletes":false},{"name":"start_amendment","blockedForMuse":true,"deletes":false},{"name":"mark_exported","blockedForMuse":true,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":"elite+","features":[{"feature":"tax_filing","plans":["elite+","auto+"]}],"summary":"Elite+ or higher; tax_filing feature (Elite+, Auto+)"},"rateLimit":null,"museAvailability":"no","museBlockedActions":["create_jurisdiction","update_jurisdiction","delete_jurisdiction","create_statement","update_statement","delete_statement","submit_statement","mark_lodged","start_amendment","mark_exported"],"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."},{"name":"get_tax_filing_guidance","title":"Tax filing guidance","class":"Read","sensitiveReason":null,"annotations":{"title":"Tax filing guidance","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[{"feature":"tax_filing","plans":["elite+","auto+"]}],"summary":"tax_filing feature (Elite+, Auto+)"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"query_tax_estimators","title":"Tax estimators","class":"Read","sensitiveReason":null,"annotations":{"title":"Tax estimators","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"overview","blockedForMuse":false,"deletes":false},{"name":"student_loan","blockedForMuse":false,"deletes":false},{"name":"superannuation","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"lookup_tax_reference","title":"Official tax sources","class":"Read","sensitiveReason":null,"annotations":{"title":"Official tax sources","readOnlyHint":true,"destructiveHint":false,"openWorldHint":true},"actionParameter":null,"actions":null,"requiredInputs":["question"],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":"20 calls per minute per user","museAvailability":"yes","museBlockedActions":[],"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."},{"name":"get_tax_estimate","title":"Estimate tax","class":"Read","sensitiveReason":null,"annotations":{"title":"Estimate tax","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[{"feature":"tax_filing","plans":["elite+","auto+"],"scope":"write-offs inside the estimate; the estimate itself is on every plan"}],"summary":"tax_filing feature (Elite+, Auto+) — write-offs inside the estimate; the estimate itself is on every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"query_lens","title":"List views","class":"Read","sensitiveReason":null,"annotations":{"title":"List views","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":"elite+","features":[],"summary":"Elite+ or higher"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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'."},{"name":"manage_lens","title":"Manage a view","class":"Write","sensitiveReason":null,"annotations":{"title":"Manage a view","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"set_primary","blockedForMuse":false,"deletes":false},{"name":"update","blockedForMuse":false,"deletes":false}],"requiredInputs":["action","lensId"],"sideEffects":"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).","planRequirement":{"minimumTier":"elite+","features":[],"summary":"Elite+ or higher"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"query_budget","title":"Budget status and savings goals","class":"Read","sensitiveReason":null,"annotations":{"title":"Budget status and savings goals","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"manage_budget","title":"Manage budget and savings goals","class":"Write","sensitiveReason":null,"annotations":{"title":"Manage budget and savings goals","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create_budget","blockedForMuse":false,"deletes":false},{"name":"set_limit","blockedForMuse":false,"deletes":false},{"name":"update_limit","blockedForMuse":false,"deletes":false},{"name":"delete_limit","blockedForMuse":true,"deletes":true},{"name":"set_income_target","blockedForMuse":false,"deletes":false},{"name":"create_goal","blockedForMuse":false,"deletes":false},{"name":"update_goal","blockedForMuse":false,"deletes":false},{"name":"contribute_goal","blockedForMuse":false,"deletes":false},{"name":"withdraw_goal","blockedForMuse":false,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":"30 calls per minute per user","museAvailability":"partial","museBlockedActions":["delete_limit"],"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."},{"name":"query_income","title":"Income","class":"Read","sensitiveReason":null,"annotations":{"title":"Income","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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?'."},{"name":"query_insights","title":"Cash flow and budget insights","class":"Read","sensitiveReason":null,"annotations":{"title":"Cash flow and budget insights","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"cashflow","blockedForMuse":false,"deletes":false},{"name":"budget","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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?'."},{"name":"manage_vehicle","title":"Manage a vehicle","class":"Write","sensitiveReason":null,"annotations":{"title":"Manage a vehicle","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create","blockedForMuse":false,"deletes":false},{"name":"update","blockedForMuse":false,"deletes":false},{"name":"delete","blockedForMuse":true,"deletes":true}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"partial","museBlockedActions":["delete"],"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."},{"name":"query_assets","title":"Asset register","class":"Read","sensitiveReason":null,"annotations":{"title":"Asset register","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"register","blockedForMuse":false,"deletes":false},{"name":"asset","blockedForMuse":false,"deletes":false},{"name":"unregistered","blockedForMuse":false,"deletes":false},{"name":"depreciation_schedule","blockedForMuse":false,"deletes":false},{"name":"tpar","blockedForMuse":false,"deletes":false},{"name":"profit_loss","blockedForMuse":false,"deletes":false},{"name":"explainer","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":"elite+","features":[{"feature":"tax_filing","plans":["elite+","auto+"]}],"summary":"Elite+ or higher; tax_filing feature (Elite+, Auto+)"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"manage_asset","title":"Manage an asset","class":"Sensitive write","sensitiveReason":"Changes the depreciating-asset register, which changes the depreciation the user claims.","annotations":{"title":"Manage an asset","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create","blockedForMuse":false,"deletes":false},{"name":"update","blockedForMuse":false,"deletes":false},{"name":"dispose","blockedForMuse":true,"deletes":false},{"name":"delete","blockedForMuse":true,"deletes":true},{"name":"register_from_transaction","blockedForMuse":false,"deletes":false},{"name":"dismiss_unregistered","blockedForMuse":true,"deletes":false},{"name":"undismiss","blockedForMuse":true,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":"elite+","features":[{"feature":"tax_filing","plans":["elite+","auto+"]}],"summary":"Elite+ or higher; tax_filing feature (Elite+, Auto+)"},"rateLimit":null,"museAvailability":"partial","museBlockedActions":["dispose","delete","dismiss_unregistered","undismiss"],"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."},{"name":"query_places","title":"Places and properties","class":"Read","sensitiveReason":null,"annotations":{"title":"Places and properties","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"list","blockedForMuse":false,"deletes":false},{"name":"summary","blockedForMuse":false,"deletes":false},{"name":"write_offs","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[{"feature":"tax_filing","plans":["elite+","auto+"],"scope":"view=write_offs only"}],"summary":"tax_filing feature (Elite+, Auto+) — view=write_offs only"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"manage_place","title":"Manage a place","class":"Write","sensitiveReason":null,"annotations":{"title":"Manage a place","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"actionParameter":"action","actions":[{"name":"create","blockedForMuse":false,"deletes":false},{"name":"update","blockedForMuse":false,"deletes":false},{"name":"archive","blockedForMuse":false,"deletes":false},{"name":"restore","blockedForMuse":false,"deletes":false},{"name":"assign_transactions","blockedForMuse":false,"deletes":false},{"name":"assign_bill","blockedForMuse":false,"deletes":false},{"name":"clear","blockedForMuse":false,"deletes":false}],"requiredInputs":["action"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"query_expected_income","title":"Money you are owed","class":"Read","sensitiveReason":null,"annotations":{"title":"Money you are owed","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":"view","actions":[{"name":"open","blockedForMuse":false,"deletes":false},{"name":"by_payer","blockedForMuse":false,"deletes":false},{"name":"work_done","blockedForMuse":false,"deletes":false}],"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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?'."},{"name":"record_expected_income","title":"Record money you are owed","class":"Write","sensitiveReason":null,"annotations":{"title":"Record money you are owed","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":["payerName","amount","dueDate"],"sideEffects":"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).","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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."},{"name":"get_upcoming_money","title":"Upcoming money in and out","class":"Read","sensitiveReason":null,"annotations":{"title":"Upcoming money in and out","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"actionParameter":null,"actions":null,"requiredInputs":[],"sideEffects":"none","confirmation":"none","planRequirement":{"minimumTier":null,"features":[],"summary":"Every plan"},"rateLimit":null,"museAvailability":"yes","museBlockedActions":[],"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?'."}]}