← Registry

Productivity

expensebot.ai

Manages user expenses by providing search, summary, analytics, and report generation.

1 endpoint59 known toolsFirst detected May 29, 2026Last detected September 6, 2026

ENDPOINT 1

https://mcp.expensebot.ai/mcp

No auth detected

MCP server metadata

Name
expensebot-remote
Version
0.3.1-m3.6
Capabilities
tools
Server instructions

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

search_expenses

Search and filter the user's expenses.

Inferred read-only
get_spending_summary

Summarize the user's recorded expenses with totals and breakdowns by category, merchant, month, tag, source, or payment method.

Potential side effects
get_deep_analytics

Run deeper, multi-step analytics on the user's expenses.

Inferred read-only
create_report

Create an expense report from a clear date, client, project, trip, category, or merchant request.

Potential side effects
list_reports

List the user's expense reports with pagination.

Inferred read-only
request_accounting_integration

Request support for an accounting package only after checking ExpenseBot's reviewed direct and import-file destinations and finding no matching package.

Inferred read-only
get_report_details

Get full details of a specific expense report including all expenses, totals, and compliance status.

Inferred read-only
share_report

Share one existing expense report after confirmation.

Inferred read-only
check_compliance

Use only when the user explicitly asks to check an existing report for compliance issues such as missing business purpose or policy violations.

Inferred read-only
fix_compliance

Bulk-fix compliance issues in a report (e.g., apply the same business purpose to all flagged expenses).

Inferred read-only
check_tax_deductibility

Look up whether a specific expense type or purchase is tax-DEDUCTIBLE (business write-off rules) based on the user's country/jurisdiction.

Potential side effects
search_knowledge

Search ExpenseBot's complete product and help knowledge base.

Inferred read-only
submit_receipt

Submit a photo or PDF of a receipt for processing.

Inferred read-only
get_last_receipt_result

Check the authoritative final outcome of a receipt image/PDF batch submitted with submit_receipt.

Inferred read-only
add_cash_expense

Add an expense without a receipt, or record money a client provided in advance for expenses.

Inferred read-only
parse_expense

Parse a natural language expense description into structured fields.

Inferred read-only
process_gmail_receipts

Process specific Gmail emails as receipts.

Inferred read-only
scan_gmail

Trigger a background Gmail scan to discover and process receipt emails from the last ~60 days (default).

Inferred read-only
add_mileage_entry

Log a business mileage trip in ExpenseBot.

Inferred read-only
add_income

Log an income entry manually (cash, check, Stripe payout, etc.).

Inferred read-only
add_income_from_file

Import 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 effects
add_income_from_csv

Import 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-only
get_accounting_integration_status

Check whether an accounting destination is connected and read-only setup state for the owner.

Inferred read-only
send_report_to_accounting

Review and then post an ExpenseBot report to the owner's accounting destination.

Potential side effects
get_accounting_push_status

Read the authoritative posting and reconciliation status for one ExpenseBot report at an accounting destination.

Inferred read-only
list_categories

List the user's configured expense categories and billing accounts.

Inferred read-only
list_tags

List the user's configured groups.

Inferred read-only
get_income_summary

Get income totals, breakdowns, and analytics from the Income tab.

Inferred read-only
get_pnl

Compute Profit & Loss (P&L / net income / margin) by combining the Income tab with expense tabs.

Inferred read-only
get_per_tag_pnl

Per-tag P&L — revenue, cost, profit, and margin grouped by tag (per-client, per-property, per-event, per-realtor-deal).

Inferred read-only
list_income_categories

List ExpenseBot's fixed income tax categories.

Inferred read-only
get_recent_activity

Show 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-only
trace_document

Trace what happened to a specific receipt, invoice, forwarded email, Gmail receipt, or PDF in ExpenseBot processing.

Potential side effects
get_mileage_summary

Mileage 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-only
get_subscription_audit

Subscription audit — wraps the Subscription Auditor engine to find recurring charges, duplicates, price increases, and trial-conversion suspects in the user's expenses.

Inferred read-only
get_expense_by_id

Fetch a single expense row by its sheet row number or by its ExpenseBot expenseId (the exact Receipt ID in Column Q).

Inferred read-only
export_report

Get a short-lived direct PDF download for one exact authorized expense report, plus the exact highlighted in-app report link.

Inferred read-only
get_spreadsheet_url

Return 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-only
check_feature

Check whether ExpenseBot supports a specific feature ('does ExpenseBot support X', 'can it integrate with Y').

Inferred read-only
whatif_afford

Can I afford $X/month?

Inferred read-only
whatif_client

What if a client pays late or leaves?

Inferred read-only
whatif_tax_setaside

What should I set aside for taxes?

Inferred read-only
scan_gmail_years

Scan one or more COMPLETED PRIOR years of the user's Gmail for receipts (e.g.

Inferred read-only
get_scan_status

Check the authoritative status of the user's Gmail receipt scans.

Inferred read-only
list_client_invoices

List the user's issued client invoices (accounts receivable) — who owes them money, how much, and when it is due.

Inferred read-only
get_client_invoice

Get 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 effects
prepare_client_invoice

Prepare a client invoice from a saved ExpenseBot report without creating it.

Potential side effects
create_client_invoice

Create the exact invoice previously returned by prepare_client_invoice.

Potential side effects
mark_client_invoice_paid

Mark an issued client invoice as paid after explicit confirmation.

Potential side effects
get_expense_splits

Show how an expense was split across categories, clients, properties, or business vs personal portions.

Inferred read-only
get_monthly_books_review

Month-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-only
get_credits_refunds

List card refunds, cashback/rewards, and statement credits that ExpenseBot has already recorded — either as negative expenses or matched against the original charge.

Potential side effects
get_client_advance_balances

Read the same per-client advance balances shown in ExpenseBot's Client advances section.

Inferred read-only
get_trip_suggestions

Show ExpenseBot's current high-confidence Trip Intelligence proposals from Review Expenses.

Inferred read-only
group_expenses

Group an exact set of recorded expenses for a client, project, trip, job, or other user-named purpose.

Inferred read-only
update_expense

Update a single existing expense row's category, tag, merchant, or business purpose (e.g.

Potential side effects
correct_expenses

Safely correct the category, business purpose, or explicit attendees on an exact bounded set of recorded expenses.

Inferred read-only
search

Search the user's ExpenseBot data — expenses, reports, and knowledge base.

Inferred read-only
fetch

Fetch full details for a specific item returned by `search`.

Inferred read-only

CONNECT 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.

Trust status Trusted

expensebot.ai is assessed as Trusted: Domain has an established technology history spanning over a year.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.