Assistant and MCP Integration

Manage your entire business from AI tools via MCP — transactions, invoices, time tracking, exports, and more.

The Midday MCP server gives AI tools like Claude, Cursor, ChatGPT, and Raycast full access to your business data — not just reading, but creating invoices, managing transactions, tracking time, and exporting to your accountant.

#What is MCP?

Model Context Protocol (MCP) is an open standard for connecting AI assistants to external data sources. Instead of copying and pasting data, MCP lets AI tools work with your Midday account directly and securely.

#Supported tools

Midday MCP works with:

  • Claude Desktop - Anthropic's desktop app
  • Cursor - AI-powered code editor
  • ChatGPT - Via plugins/actions
  • Raycast - Mac productivity launcher
  • Any MCP-compatible client

#Getting started

#Step 1: Get your API key

  1. Go to Settings → Developer
  2. Click Create API key
  3. Give it a descriptive name (e.g., "Claude Desktop")
  4. Select the scopes you need (read-only by default, enable write scopes for full capabilities)
  5. Copy the key immediately (you won't see it again)

#Step 2: Configure your client

Choose your tool below for specific setup instructions.


#Claude Desktop setup

Add Midday to your Claude Desktop configuration.

#Find your config file

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

#Add Midday configuration

Add or update the mcpServers section:

{
  "mcpServers": {
    "midday": {
      "command": "npx",
      "args": ["-y", "@midday-ai/mcp"],
      "env": {
        "MIDDAY_API_KEY": "your-api-key-here"
      }
    }
  }
}

#Restart Claude Desktop

After saving, restart Claude Desktop. You should see Midday in your available tools.

#Test it

Ask Claude something like:

  • "What was my revenue last month?"
  • "Create an invoice for Acme Corp"
  • "Export Q1 transactions to my accountant"

#Cursor setup

Use Midday data while coding in Cursor.

#Open Cursor settings

  1. Open Cursor
  2. Go to Settings (Cmd/Ctrl + ,)
  3. Find the MCP configuration section

#Add Midday

Add to your MCP servers:

{
  "midday": {
    "command": "npx",
    "args": ["-y", "@midday-ai/mcp"],
    "env": {
      "MIDDAY_API_KEY": "your-api-key-here"
    }
  }
}

#Use in conversations

In Cursor's AI chat, you can now ask about your financial data while working on your projects.


#ChatGPT setup

Use Midday with ChatGPT via custom GPTs or plugins.

#Custom GPT approach

  1. Create a Custom GPT in ChatGPT
  2. Add actions that call the Midday API
  3. Configure authentication with your API key

#Configuration

Use the Midday API endpoints with your API key in the Authorization header:

Authorization: Bearer your-api-key-here

See the API reference for available endpoints.


#Raycast setup

Access Midday from Raycast on Mac.

#Install the extension

  1. Open Raycast
  2. Search for "Midday" in the Store
  3. Install the extension

#Configure

  1. Open Raycast preferences
  2. Find the Midday extension
  3. Enter your API key

#Use it

Trigger Raycast and use Midday commands to query your financial data.


#Available tools

The MCP server exposes 107 tools covering your entire business workflow.

#Transactions

ToolDescription
transactions_listList transactions with filters (date, category, amount, status, tags)
transactions_getGet full details of a specific transaction
transactions_createCreate a manual transaction
transactions_create_bulkCreate up to 100 manual transactions at once
transactions_updateUpdate a transaction (category, status, note, tags, tax)
transactions_update_bulkBulk update multiple transactions
transactions_deleteDelete a manual transaction
transactions_delete_bulkDelete up to 1,000 manual transactions

Example queries:

  • "Show transactions from last month"
  • "What did I spend on software this quarter?"
  • "Categorize all my Stripe transactions as income"
  • "Tag these transactions as tax-deductible"

#Export & Accounting

ToolDescription
transactions_exportExport transactions as a ZIP (CSV/XLSX + receipts), optionally email to accountant
transactions_export_to_accountingPush transactions to Xero, QuickBooks, or Fortnox
export_job_statusPoll the progress of an export job
accounting_connectionsList connected accounting providers
accounting_sync_statusCheck sync status of transactions with accounting software

Example queries:

  • "Export my January transactions to my accountant at [email protected]"
  • "Push last month's expenses to QuickBooks"
  • "Which accounting software do I have connected?"
  • "Download all Q1 transactions as CSV"

#Invoices

ToolDescription
invoices_listList invoices with filters (status, customer, date)
invoices_getGet full invoice details with line items and payment history
invoices_summaryGet totals by status (draft, unpaid, paid, overdue)
invoices_search_numberSearch for an invoice by number
invoices_payment_statusGet overall invoice payment health score
invoices_analyticsInvoice analytics: avg days to payment, top clients, trends
invoices_createCreate a new invoice (saved as draft by default)
invoices_update_draftEdit a draft invoice's line items, customer, dates, or discount
invoices_sendSend a draft invoice to the customer via email
invoices_remindSend a payment reminder for an unpaid/overdue invoice
invoices_updateUpdate invoice status or internal note
invoices_mark_paidMark an invoice as paid
invoices_cancelCancel an invoice
invoices_duplicateDuplicate an existing invoice with a new number
invoices_deletePermanently delete an invoice
invoices_create_from_trackerCreate an invoice from tracked time entries on a project

Example queries:

  • "Create an invoice for Acme Corp for 10 hours of consulting at $150/hr"
  • "Send the draft invoice to Acme Corp"
  • "Remind Beta Inc about their overdue invoice"
  • "Mark invoice INV-0042 as paid"
  • "What invoices are overdue?"
  • "Invoice the time I tracked on Project X this month"

#Invoice Templates

ToolDescription
invoice_template_listList all invoice templates
invoice_template_getGet a template's labels and settings
invoice_template_updateUpdate template labels, tax rates, currency, or payment details

#Invoice Products

ToolDescription
invoice_products_listList saved line item products (product catalog)
invoice_products_getGet product details (name, price, currency, tax rate)
invoice_products_createCreate a reusable invoice line item product
invoice_products_updateUpdate a product
invoice_products_deleteDelete a product

#Recurring Invoices

ToolDescription
invoice_recurring_listList recurring invoice schedules
invoice_recurring_getGet recurring schedule details
invoice_recurring_upcomingPreview upcoming scheduled invoices
invoice_recurring_createSet up a recurring invoice schedule
invoice_recurring_pausePause a recurring schedule
invoice_recurring_resumeResume a paused schedule
invoice_recurring_deleteDelete a recurring schedule

#Customers

ToolDescription
customers_listList customers with search and sorting
customers_getGet full customer details (contact, address, VAT, tags)
customers_createCreate a new customer
customers_updateUpdate customer information
customers_deleteDelete a customer

Example queries:

  • "List all my customers"
  • "Add a new customer: Acme Corp, [email protected]"
  • "Update Acme Corp's billing address"

#Time tracking

ToolDescription
tracker_projects_listList time tracking projects with filters
tracker_projects_getGet project details with total tracked time
tracker_projects_createCreate a new project
tracker_projects_updateUpdate project settings (rate, status, estimate)
tracker_projects_deleteDelete a project and its entries
tracker_entries_listList time entries for a date range
tracker_entries_createLog a time entry
tracker_entries_updateUpdate a time entry
tracker_entries_deleteDelete a time entry
tracker_timer_startStart a live timer
tracker_timer_stopStop the running timer
tracker_timer_statusCheck if a timer is running

Example queries:

  • "How many hours did I track this week?"
  • "Start a timer on Project X"
  • "Log 2 hours for the client meeting yesterday"
  • "What's unbilled for Project X?"

#Reports & Analytics

ToolDescription
reports_revenueRevenue for a period with comparison
reports_profitProfit (revenue minus expenses)
reports_burn_rateMonthly burn rate
reports_runwayEstimated months of cash remaining
reports_expensesExpense totals with recurring breakdown
reports_spendingSpending by category
reports_tax_summaryTax summary for a date range
reports_growth_rateRevenue or profit growth rate
reports_profit_marginProfit margin analysis
reports_cash_flowCash flow (income vs expenses over time)
reports_recurring_expensesDetected recurring expenses
reports_revenue_forecastRevenue forecast based on historical data
reports_balance_sheetBalance sheet snapshot (assets, liabilities, equity)

Example queries:

  • "What's my revenue this quarter?"
  • "Calculate my runway"
  • "Show spending by category for last month"
  • "What's my growth rate compared to last quarter?"
  • "Give me a balance sheet as of today"

#Categories

ToolDescription
categories_listList all transaction categories as a tree
categories_getGet a category with children, color, and tax settings
categories_createCreate a custom category
categories_updateUpdate a category
categories_deleteDelete a custom category

#Tags

ToolDescription
tags_listList all tags
tags_getGet a tag by ID
tags_createCreate a new tag
tags_updateRename a tag
tags_deleteDelete a tag

#Bank Accounts

ToolDescription
bank_accounts_listList connected accounts with balance, currency, and connection info
bank_accounts_balancesGet current balances for all accounts
bank_accounts_currenciesList all unique currencies across accounts
bank_accounts_detailsGet banking details (IBAN, account number, routing number)

Example queries:

  • "What's my current cash balance?"
  • "Show all connected accounts"
  • "What currencies do my accounts use?"

#Documents

ToolDescription
documents_listList documents in the vault with search and tag filters
documents_getGet document details with signed download URL
documents_deleteDelete a document from the vault
document_tags_listList all document tags
document_tags_createCreate a document tag
document_tags_deleteDelete a document tag
document_tags_assignAdd a tag to a document
document_tags_unassignRemove a tag from a document

#Inbox

ToolDescription
inbox_listList inbox items (receipts, invoices pending processing)
inbox_getGet inbox item details with matched transaction
inbox_updateUpdate an inbox item's status, name, or amount
inbox_deleteDelete an inbox item
inbox_match_transactionLink an inbox item to a transaction
inbox_unmatch_transactionRemove the link between an inbox item and a transaction
inbox_confirm_matchConfirm an AI-suggested match
inbox_decline_matchDecline an AI-suggested match

Example queries:

  • "Show my unprocessed receipts"
  • "Match this receipt to the Stripe transaction"

#Search & Team

ToolDescription
search_globalFull-text search across all data types
team_getGet team info (name, currency, plan, fiscal year)
team_membersList team members with roles and user IDs

#Example conversations

#Financial overview

You: What's my financial health looking like?

Assistant: Based on your Midday data:

  • Cash balance: $45,230
  • Monthly burn rate: $8,500
  • Runway: 5.3 months
  • Revenue this month: $12,400
  • Profit margin: 31%

#Create and send an invoice

You: Create an invoice for Acme Corp for website redesign - 40 hours at $125/hr

Assistant: I've created draft invoice INV-0051 for Acme Corp:

  • Website Redesign: 40 × $125.00 = $5,000.00
  • Total: $5,000.00

Would you like me to send it?

You: Yes, send it

Assistant: Invoice INV-0051 has been sent to [email protected].

#Export to accountant

You: Export my January transactions to my accountant at [email protected]

Assistant: I've started the export of 142 transactions from January. Your accountant at [email protected] will receive a download link with the CSV, XLSX, and receipt attachments once it's ready.

#Push to accounting software

You: Push last month's expenses to QuickBooks

Assistant: You have QuickBooks connected (Acme Corp LLC). I'll export 87 expense transactions from last month. The sync is in progress — transactions and their receipts are being pushed to QuickBooks now.

#Time tracking

You: How many hours did I work on the mobile app this week?

Assistant: You tracked 18.5 hours on "Mobile App Redesign" this week:

  • Monday: 4h (UI design)
  • Tuesday: 3.5h (API integration)
  • Wednesday: 5h (Testing)
  • Thursday: 3h (Bug fixes)
  • Friday: 3h (Documentation)

#Scopes & Permissions

Every tool is gated by scopes. When you create an API key or authorize via OAuth, you choose exactly which data and actions are accessible. For example, transactions.read enables listing and searching transactions, while transactions.write additionally allows creating, updating, and deleting them.

See the full OAuth Scopes Reference for the complete list of available scopes.


#Security

#API key permissions

  • API keys have configurable scopes — choose exactly what each key can access
  • Read scopes allow querying data; write scopes allow creating, modifying, and exporting
  • Keys never expose sensitive credentials, passwords, or payment card details

#Managing keys

  1. Go to Settings → Developer
  2. View all active API keys
  3. See last used date for each key
  4. Revoke keys you no longer need

#Best practices

  • Create separate keys for different tools
  • Use descriptive names for keys
  • Only grant the scopes each tool actually needs
  • Revoke unused keys
  • Don't share keys publicly

#Troubleshooting

#"Tool not found" errors

  • Ensure you've restarted your client after configuration
  • Check that the API key is valid and has the required scopes
  • Verify the configuration syntax

#No data returned

  • Check your API key has access to the team
  • Verify transactions/invoices exist for the queried period
  • Try a broader query

#Write operations failing

  • Ensure your API key has the appropriate write scopes enabled
  • Check that required fields are provided (e.g., customer ID for invoices)

#Connection issues

  • Ensure you have internet access
  • Check that npx is available in your PATH
  • Try running npx @midday-ai/mcp manually to test

#Tips for best results

  1. Be specific: "Revenue last month" works better than "How am I doing?"
  2. Include dates: "Expenses in Q1 2025" helps narrow results
  3. Use follow-ups: The assistant remembers context in a conversation
  4. Combine actions: "Create an invoice for Acme Corp and send it" works in one go
  5. Ask about connections first: "What accounting software do I have connected?" before exporting

Learn about the in-app assistant → API reference →