Productivity
expensebot.ai
Manages user expenses by providing search, summary, analytics, and report generation.
ENDPOINT 1
https://mcp.expensebot.ai/mcp
MCP server metadata
- Name
- expensebot-remote
- Version
- 0.3.1-m3.6
ExpenseBot tracks this user's business expenses and income in a Google Sheet they own. For a requested multi-step workflow, show the grounded preview, ask one clear yes/no confirmation when required, then complete every approved step. Prefer group_expenses for group-and-report requests even when the expenses already have that group. Keep the response concise. Do not add unsolicited tax, audit, substantiation, or client-AP advice, and do not second-guess an approved scope unless a tool reports ambiguity, conflict, or failure. A request to create, share, or bill from a report is NOT a request for compliance, tax, deductibility, report-detail, business-purpose, attendee, or reimbursement analysis: never call those tools as a preflight or follow-up unless the user explicitly asks for that analysis. 'Without personal expenses' is only a report filter. isReimbursable is ExpenseBot workflow state, not a judgment about whether an expense may be billed to a client. For exact corrections across several expenses, use correct_expenses only after search_expenses has returned the exact expenseId values. Show its automatic preview, ask one yes/no question, then return its verified terminal result without adding advice. Use only attendee names the user explicitly supplied. For broad, ambiguous, mixed, or more than 100-row cleanup, link to Review Expenses instead. Across every tool, treat returned counts, totals, currencies, statuses, and completion evidence as authoritative. Never recompute them from detail rows or reinterpret a successful result. After an approved write completes, report the outcome and relevant links without reopening the user's approved scope or adding unrequested advice. Ask another question only when the tool reports an ambiguity, conflict, failure, or required external side effect. When structuredContent is present, use it as the authoritative machine-readable result and use text only as the compatibility narrative. Respect explicit branch and pagination fields such as success, found, status, state, hasMore, nextCursor, and truncated. Never invent fields absent from the returned branch or merge stale values from an earlier call. For grouping workflows, call the destination a group in user-facing prose, even though ExpenseBot stores it in its Tag column; do not rename it a tag unless explaining the spreadsheet schema. Search and preview totals are provisional. After a confirmed group_expenses or create_report result, use only that terminal result's exact count, total, and currency, even when it differs from an earlier preview by rounding. A Bill Client URL is a reviewed handoff only: it does not mean an invoice was created, sent, or confirmed. Across every answer, answer the user's requested task first and stop when it is complete. Do not infer intent, risk, tax treatment, reimbursement eligibility, business purpose, attendees, client expectations, or currency preferences from merchants, locations, dates, or amounts. Offer analysis, warnings, or follow-up work only when the user asks for it or an authoritative tool result says action is required. A successful terminal write result supersedes intermediate search and preview observations. The final answer must follow the terminal result's responseGuidance and must not repeat exploratory candidates, excluded near-matches, or concerns that the terminal tool did not report. When a terminal result contains finalAnswer, return it verbatim and add nothing else. After a Bill Client handoff, do not offer report sharing or currency advice unless the user explicitly requested it. Report provenance is literal: say a report was created only when the terminal result explicitly says creationStatus=created_this_call. Reports returned by list_reports are pre-existing; describe them as found, existing, or opened, never created or generated. If no new report was created, say so plainly and do not imply otherwise. If the user shares a receipt image or PDF in the conversation, logging it is almost always what they want — offer that first. When several files are shared, request upload URLs for all of them at once and submit them together as one batch, rather than calling submit_receipt once per file. Beyond receipts: answer questions about their spending, income, profit and tax deductibility, scan their Gmail for receipts they never forwarded, and build reports they can hand to an accountant. After submit_receipt returns a submissionId, call get_last_receipt_result with that exact ID using the polling interval and time allowance returned by submit_receipt. A single or small batch allows at least 5 minutes; larger batches return a longer allowance based on file count. A pending result is normal, not a failure. If the allowance ends, say processing is continuing and the user can check later; never resubmit the same file because that creates a duplicate expense. Report its final counts, then show spreadsheetUrl and reviewExpensesUrl. For other expense writes show spreadsheetUrl and reviewExpensesUrl. For income writes, show spreadsheetUrl and reviewIncomeUrl. If the user asks to open their spreadsheet, review expenses or income, scan Gmail, reconcile, or visit a report workspace, call get_spreadsheet_url. It returns a described catalog of the product's canonical authenticated deep links. Give the user only the one or two links that match their request. When the user asks whether a Gmail scan is running, finished, stuck, or what it is doing, call get_scan_status. Report its authoritative status and live phase. On completion, show spreadsheetUrl and reviewExpensesUrl; if action is needed, show gmailScanUrl. For questions about ExpenseBot features, setup, billing, Gmail, reports, or troubleshooting, call search_knowledge instead of guessing. Set fullAnswer:true on the first call for complete, detailed, or step-by-step instructions; use the default excerpt mode only for discovery or quick answers. Every figure comes from the user's own sheet. Never estimate, infer, or fill in amounts, dates, or merchants the user did not provide — report what the tools return.
Known tools 59
get_spending_summarySummarize the user's recorded expenses with totals and breakdowns by category, merchant, month, tag, source, or payment method.
Potential side effectscreate_reportCreate an expense report from a clear date, client, project, trip, category, or merchant request.
Potential side effectsrequest_accounting_integrationRequest support for an accounting package only after checking ExpenseBot's reviewed direct and import-file destinations and finding no matching package.
Inferred read-onlyget_report_detailsGet full details of a specific expense report including all expenses, totals, and compliance status.
Inferred read-onlycheck_complianceUse only when the user explicitly asks to check an existing report for compliance issues such as missing business purpose or policy violations.
Inferred read-onlyfix_complianceBulk-fix compliance issues in a report (e.g., apply the same business purpose to all flagged expenses).
Inferred read-onlycheck_tax_deductibilityLook up whether a specific expense type or purchase is tax-DEDUCTIBLE (business write-off rules) based on the user's country/jurisdiction.
Potential side effectsget_last_receipt_resultCheck the authoritative final outcome of a receipt image/PDF batch submitted with submit_receipt.
Inferred read-onlyadd_cash_expenseAdd an expense without a receipt, or record money a client provided in advance for expenses.
Inferred read-onlyscan_gmailTrigger a background Gmail scan to discover and process receipt emails from the last ~60 days (default).
Inferred read-onlyadd_income_from_fileImport income from an attached screenshot, image (JPEG, PNG, WebP, HEIC/HEIF), or PDF (payment screenshots, wallet apps, payout or bank statements; max 10 MB).
Potential side effectsadd_income_from_csvImport income from a CSV/TSV/text export (Stripe, PayPal, Square, Cash App, Venmo, OnlyFans, Patreon, Clips4Sale, Ko-fi, Gumroad, Etsy, Uber/Lyft/DoorDash driver exports, bank statements, and similar; max 500 KB).
Inferred read-onlyget_accounting_integration_statusCheck whether an accounting destination is connected and read-only setup state for the owner.
Inferred read-onlysend_report_to_accountingReview and then post an ExpenseBot report to the owner's accounting destination.
Potential side effectsget_accounting_push_statusRead the authoritative posting and reconciliation status for one ExpenseBot report at an accounting destination.
Inferred read-onlylist_categoriesList the user's configured expense categories and billing accounts.
Inferred read-onlyget_income_summaryGet income totals, breakdowns, and analytics from the Income tab.
Inferred read-onlyget_pnlCompute Profit & Loss (P&L / net income / margin) by combining the Income tab with expense tabs.
Inferred read-onlyget_per_tag_pnlPer-tag P&L — revenue, cost, profit, and margin grouped by tag (per-client, per-property, per-event, per-realtor-deal).
Inferred read-onlyget_recent_activityShow what the user (or their AI assistants) has recently done in ExpenseBot via this MCP server: which tools were called, when, with what arguments, and whether they succeeded.
Inferred read-onlytrace_documentTrace what happened to a specific receipt, invoice, forwarded email, Gmail receipt, or PDF in ExpenseBot processing.
Potential side effectsget_mileage_summaryMileage analytics — totals, breakdowns by month / client / purpose / category, plus deduction framing (cents-per-mile or cents-per-km × distance, country-aware IRS / CRA rates).
Inferred read-onlyget_subscription_auditSubscription audit — wraps the Subscription Auditor engine to find recurring charges, duplicates, price increases, and trial-conversion suspects in the user's expenses.
Inferred read-onlyget_expense_by_idFetch a single expense row by its sheet row number or by its ExpenseBot expenseId (the exact Receipt ID in Column Q).
Inferred read-onlyexport_reportGet a short-lived direct PDF download for one exact authorized expense report, plus the exact highlighted in-app report link.
Inferred read-onlyget_spreadsheet_urlReturn the user's master ExpenseBot Google Sheet plus authenticated ExpenseBot workspace links, each with a label and a description of when to use it.
Inferred read-onlycheck_featureCheck whether ExpenseBot supports a specific feature ('does ExpenseBot support X', 'can it integrate with Y').
Inferred read-onlyscan_gmail_yearsScan one or more COMPLETED PRIOR years of the user's Gmail for receipts (e.g.
Inferred read-onlylist_client_invoicesList the user's issued client invoices (accounts receivable) — who owes them money, how much, and when it is due.
Inferred read-onlyget_client_invoiceGet the full financial and delivery summary for one issued client invoice, including subtotal, markup, tax, advance applied, balance due, dates, status, source report, and private Google Doc/PDF/DOCX links when available.
Potential side effectsprepare_client_invoicePrepare a client invoice from a saved ExpenseBot report without creating it.
Potential side effectscreate_client_invoiceCreate the exact invoice previously returned by prepare_client_invoice.
Potential side effectsmark_client_invoice_paidMark an issued client invoice as paid after explicit confirmation.
Potential side effectsget_expense_splitsShow how an expense was split across categories, clients, properties, or business vs personal portions.
Inferred read-onlyget_monthly_books_reviewMonth-end summary of the user's books for one calendar month: income recorded, money spent, net, top spending categories and merchants, plus alerts for anything unusual that month.
Inferred read-onlyget_credits_refundsList card refunds, cashback/rewards, and statement credits that ExpenseBot has already recorded — either as negative expenses or matched against the original charge.
Potential side effectsget_client_advance_balancesRead the same per-client advance balances shown in ExpenseBot's Client advances section.
Inferred read-onlyget_trip_suggestionsShow ExpenseBot's current high-confidence Trip Intelligence proposals from Review Expenses.
Inferred read-onlygroup_expensesGroup an exact set of recorded expenses for a client, project, trip, job, or other user-named purpose.
Inferred read-onlyupdate_expenseUpdate a single existing expense row's category, tag, merchant, or business purpose (e.g.
Potential side effectscorrect_expensesSafely correct the category, business purpose, or explicit attendees on an exact bounded set of recorded expenses.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.expensebot-remote]
url = "https://mcp.expensebot.ai/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"expensebot-remote": {
"type": "http",
"url": "https://mcp.expensebot.ai/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: expensebot-remote
Remote MCP URL: https://mcp.expensebot.ai/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"expensebot-remote": {
"url": "https://mcp.expensebot.ai/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"expensebot-remote": {
"type": "http",
"url": "https://mcp.expensebot.ai/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "expensebot-remote",
"transport": "streamable-http",
"url": "https://mcp.expensebot.ai/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Trust Data Available
BuiltWith Trust API v2 evidence for expensebot.ai was fetched 2026-08-24T05:17:19.032Z.
expensebot.ai is assessed as Trusted: Domain has an established technology history spanning over a year.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.