ExpenseBot

Can I connect ChatGPT, Claude, Gemini, or other AI assistants to ExpenseBot?

See also: MCP Conversational Functionality Catalog — the complete tool-by-tool inventory.

See also: MCP Conversational Functionality Catalog — the complete tool-by-tool inventory.

Yes! ExpenseBot publishes two Model Context Protocol (MCP) servers that let Claude, Gemini Spark, Cursor, ChatGPT, and any MCP-compatible AI assistant work directly with your ExpenseBot account.

What is an MCP connector? It is a standard way to give an AI assistant or agent access to a real system you already use, with permissions you control. MCP is an open standard, so one connector works across every assistant that supports it instead of needing a separate integration built for each. You approve the connection yourself, and the connector can only perform the specific actions it publishes. In practice it is the difference between an assistant that can describe how to file a receipt and one that files it in your own account. "MCP server" and "connector" describe the same component from different sides — the server is the software exposing the tools; "connector" is what the assistant's interface usually calls it once added. A plain-language overview of the category, what connectors exist, and the security boundary is at /mcp-connectors.

Trying to give Viktor, a desktop app, or another custom agent access? Use the dedicated desktop and custom-agent setup guide. It distinguishes one-click ChatGPT/Claude setup, remote OAuth MCP, and local token-based MCP so you do not send a token to the wrong place.

For copyable, practical examples, open the ExpenseBot prompt guide. It is public and works as the discovery page for ChatGPT and Claude users; the signed-in action gallery remains the interactive in-app version.

🤖 What you can do from your AI assistant:

  • "Show me my Amazon receipts over $50 from last month" → searches your spreadsheet
  • "Submit this photo as a receipt" → uploads and AI-processes the image
  • "Scan my Gmail for receipts from the last 90 days" → triggers a background scan
  • "Create an August report but leave out personal expenses" → applies the same Personal tag + category exclusions as the Report Wizard, then returns the exact report and applied filters
  • "Create a Q1 travel report and share it with my accountant" → builds and shares
  • "Group my recent client meals, create a report without personal expenses, and help me bill the client" → previews the exact expenses, reuses or proposes the group, excludes both Personal-tagged and Personal-category rows, confirms once, then returns the exact report and Bill Client links
  • "Add Client kickoff dinner as the business purpose for last Friday's meals" → previews the exact expenses, asks once, preserves the structured Notes field, verifies the result, and offers Undo
  • "Connect my bank" → opens ExpenseBot's authenticated bank/card connection and reconciliation workspace
  • "Why did my spending increase this quarter?" → runs deep analytics with comparisons
  • "Add a $15 cash lunch at Chipotle today" → writes to your spreadsheet
  • "Find every Uber receipt I expensed last quarter" → searches your spreadsheet
  • "Find any compliance issues in my March report" → flags expenses needing attention

The available tool set covers search expenses, group exact expenses for a client/project/trip/job, safely correct the category, business purpose, or user-supplied attendees on exact expenses, open the user's master spreadsheet or an authenticated ExpenseBot workspace, trace missing receipts and invoices, run analytics, create/list/share reports, submit receipts (photo, PDF, cash), verify the final outcome of an uploaded receipt, add mileage, add manual income, list categories/tags, scan/process Gmail, check compliance, check tax deductibility, and search the knowledge base. The exact surface can differ by client and version, so use the connected assistant's tool list as the source of truth.

Spreadsheet and workspace links: after a successful receipt submission, the assistant can show your master Google Sheet and Review expenses; after an income write it can show Review income. Ask to "open Gmail scanning", "show my spreadsheet", "connect my bank or credit card", "open Automation Hub", "change my general settings", "invite my team", or "take me to my reports" and the read-only link tool returns the same authenticated destinations the web app uses. Team requests are role-aware: eligible business owners open Add teammates, existing team owners/co-admins open License Manager, and users without owner access get an explanation instead of a broken link. Exact reports use the existing scroll-and-highlight link; billable reports also return the existing Bill Client pre-screen. When a result refers to exactly one expense, its Review expense link searches by the full receipt identity, expands that row, scrolls it into view, and highlights it after login. Lists and batches use the ordinary Review Expenses page so one arbitrary row is never presented as the whole result. The assistant should show only the one or two links relevant to your request.

Client/project grouping: users speak naturally about a client, project, trip, or job; they do not need to know about tags. ExpenseBot searches for the exact expenses first, reuses an existing group when possible, and shows count, totals, and representative rows before any write. One explicit confirmation applies the group through the same Review Expenses bulk controller. If asked, it creates a report from the exact successfully grouped Receipt IDs and returns the report Sheet, highlighted in-app report, Review Expenses, and Bill Client links. Sharing is a separate confirmed step so grouping never emails anyone.

Groups, projects, clients, and trips: ask "what groups do I have?" or "list my clients/projects." ExpenseBot returns the existing configured tags because tags are the app's storage layer for those business concepts; users do not need to know that implementation detail. If an intended name is ambiguous, the assistant lists the matching existing groups before proposing a new one.

Safe expense corrections: ask naturally, for example "categorize these airport rides as Travel," "add Client kickoff dinner as the business purpose for last Friday's meals," or "add Fred and Rob to last night's business meal." ExpenseBot first searches for exact recorded expenses and shows a bounded preview. One confirmation applies only those frozen Receipt IDs, verifies the result, and offers Undo. Attendees must be names you supplied; ExpenseBot does not infer them from merchants, amounts, or locations. Broad, mixed, ambiguous, or more than 100-row cleanup opens Review Expenses instead.

Report creation: clear date/group requests execute in chat. "Exclude personal" excludes both Personal as a tag and Personal as an Expense Category, matching the web Report Wizard. Results disclose the applied filters and return the report Sheet, exact highlighted report, and Bill Client links. For more complex or visually reviewed criteria, the assistant returns the authenticated Create report link with safe date or group context prefilled.

Uploaded-receipt completion: receipt uploads run asynchronously. After a photo/PDF batch is accepted, the assistant receives an exact submission ID and checks that submission's result until it completes. It can then say whether each batch added rows, found duplicates, skipped a statement, or errored, with exact counts, before showing the Google Sheet and Review expenses. This is separate from Gmail scan progress.

Gmail scan progress: ask “is my scan still running?”, “what is it doing?”, or “did it finish?” The assistant reads the same authoritative scan lock and live phase shown by ExpenseBot's in-app status pill. It can report fetching, analyzing, or extracting progress, queued years, and items needing attention. When the latest scan completes, it should show your Google Sheet and Review expenses; when reconnection or another action is needed, it should show Scan Gmail.

Product help: the connector can search ExpenseBot's complete help and product knowledge base for setup, billing, Gmail, report, workflow, and troubleshooting answers. It retrieves the full matching article when detailed instructions are needed instead of guessing from a short excerpt.

📦 Two servers, one for each use case:

ServerWhat it doesAuth
@expensebot/mcp-serverAnswers questions about ExpenseBot (features, pricing, integrations)None — public read-only
Hosted ChatGPT / Claude connectorOperates on your real account dataBrowser OAuth
Gemini Spark custom Connected AppOperates on your real account dataRemote MCP + browser OAuth
Remote custom MCPOperates on your real account dataBrowser OAuth
@expensebot/mcp-server-authOperates on your real account data from a local stdio clientPersonal Access Token (PAT) in the client environment

🔧 How to connect: Start with the connection chooser. ChatGPT and Claude use their connector directories. Eligible Gemini Spark users add ExpenseBot as a custom Connected App using the remote MCP URL. Remote custom agents such as Viktor use that same OAuth server URL. Only local stdio clients need the token steps below.

Gemini Spark — custom Connected App:

Where to find the ExpenseBot MCP server

The canonical server is published in the official MCP Registry as io.github.TotesMagotes/mcp-server-auth, and also listed on Smithery and in Cursor's plugin directory. The open-source client package lives on GitHub and npm. Whichever directory your MCP client uses for discovery, they all point at the same server: https://mcp.expensebot.ai/mcp for remote OAuth, or the npm stdio package with a revocable token. Full listing details: Where can I find the ExpenseBot MCP server?

On a computer, open Gemini → Settings & help → Connected Apps → Custom apps for Spark, add https://mcp.expensebot.ai/mcp, and complete ExpenseBot browser sign-in. Type @ and select ExpenseBot in a Spark task when you want explicit routing. Google currently documents personal-account, age, Keep Activity, region, and language eligibility requirements; work and school accounts are not supported for this custom-app flow. See the complete Gemini setup. This is a custom MCP connection, not a curated Gemini directory listing.

Local stdio setup (about 3 minutes):

  1. Get your token. Sign in and open AI Assistant Tokens → click Generate. Copy the token (shown once). Never paste it into an AI conversation.

  2. Add to Claude Desktop config. Edit ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "expensebot": {
      "command": "npx",
      "args": ["-y", "@expensebot/mcp-server-auth"],
      "env": {
        "EXPENSEBOT_TOKEN": "YOUR_TOKEN_HERE"
      }
    }
  }
}
  1. Restart Claude Desktop. Try asking: "What expenses do I have from Amazon this year?"

📦 Other MCP clients — same package, different config location:

Claude Code (CLI):

claude mcp add expensebot -- npx -y @expensebot/mcp-server-auth

Add --scope user to make it available across all your projects.

Cursor — edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "expensebot": {
      "command": "npx",
      "args": ["-y", "@expensebot/mcp-server-auth"],
      "env": {
        "EXPENSEBOT_TOKEN": "YOUR_TOKEN_HERE"
      }
    }
  }
}

Then in Cursor: Settings → Tools & Integrations → click the green dot next to "expensebot" to confirm tools loaded.

Viktor and remote/custom agents — when the client supports remote HTTP MCP with OAuth, add https://mcp.expensebot.ai/mcp and complete ExpenseBot's browser sign-in. No token or client secret is needed. If the client supports only local/stdio MCP, use the npm package above and store the token as EXPENSEBOT_TOKEN in its environment or secret settings.

Continue, Cline, Windsurf, and other local stdio clients — use the same secret-free npx command in the client's config file and provide EXPENSEBOT_TOKEN through its environment or secret settings.

ChatGPT — now 1 click (listed in the ChatGPT app directory):

ExpenseBot is listed in the ChatGPT app directory. Open Settings → Apps, search "ExpenseBot" (or open the ExpenseBot listing), select it, and click Connect. Sign in with the Google account you use for ExpenseBot and click Allow on the consent screen. No token, config file, or URL pasting is needed. Availability can depend on your ChatGPT plan, region, and workspace administrator settings; the listing's Connect button is the current source of truth. Your ExpenseBot account is free to create at expensebot.ai. Full walkthrough: /chatgpt-expense-tracker.

Claude — now 1 click (listed in the Claude connectors directory):

ExpenseBot is a listed connector in Claude. Open Customize → Connectors, browse or search for "ExpenseBot", and click Connect — or open the ExpenseBot listing directly. Sign in with the Google account you use for ExpenseBot and approve the consent screen. No token, config file, or URL pasting is needed. Claude currently makes remote connectors available across its plans, though workspace administrators can control availability.

ExpenseBot is listed as a Community connector, and Claude shows a note before you connect saying it hasn't been reviewed in depth by Anthropic. That describes how much reviewing Anthropic did — not whether the connector works. Once connected it behaves like any other.

🎬 What it looks like once connected: watch two receipts filed from inside Claude — they're shared straight into the conversation, submitted to ExpenseBot, and come back with their processing status plus links to the Google Sheet and the ExpenseBot web app. This is the fastest way to see what the connector actually does after you install it.

Prefer the manual route, or using Claude Desktop? Add a custom connector pointing at https://mcp.expensebot.ai/mcp, which is the same remote server the directory listing connects to.

🔒 Security model:

  • Personal Access Tokens are scoped to your account only — they cannot access other users' data
  • Configurable expiry, revokable instantly from Settings → AI Assistant Tokens
  • Max 5 active tokens per user — generate one per device/AI assistant
  • All actions audit-logged in our internal Firestore for security review
  • Tokens stored as one-way SHA-256 hashes server-side, never in plaintext; these are high-entropy random credentials, not low-entropy customer identifiers
  • Primary expense records stay in YOUR Google Drive. ExpenseBot also stores the limited account, authorization, audit, processing, and duplicate-prevention metadata needed to operate and secure the service
  • CASA Tier 2 certification applies to the entire data path

🌐 Where to find it:

ExpenseBot is listed on the official MCP Registry, making us natively discoverable by every MCP-compatible AI assistant. See the full landing page at /mcp.

💡 Common use cases:

  • Power users who live in Claude Desktop or Cursor and want to log expenses without app-switching
  • Submitting receipts conversationally — drop a photo into your AI chat and say "log this expense"
  • Complex analytics in natural language ("compare Q1 vs Q2 by category", "what's my P&L this year", "profit by client")
  • Workflow automation — trigger Gmail scans on demand instead of waiting for the nightly run

Free for all ExpenseBot users — no add-on charge.

Share:

Try ExpenseBot Free

AI extracts every receipt into a Google Sheet you own. Gmail scan, mileage, tax reports, profit-by-client. No credit card needed.

No credit card required · Setup in 30 seconds