MCP Server

DayZero exposes a Model Context Protocol (MCP) server that lets AI assistants — Claude, Cursor, and other MCP-compatible clients — interact with your accounting data through natural language.

The server is mounted at /mcp and uses the Streamable HTTP transport with standard Bearer token authentication.

What You Can Do

The MCP server exposes 45 tools across core accounting domains:

Category Tools Description
Business Discovery list_my_businesses List businesses you have access to (no business_id needed)
Chart of Accounts list_ledgers, get_ledger Browse and inspect ledger accounts
Transactions list_transactions Search bank transactions with date/text filters
Invoices list_invoices, get_invoice View accounts receivable
Bills list_bills, get_bill View accounts payable
Journal Entries list_journal_entries, create_journal_entry Read and create journal entries
Customers list_customers, get_customer Look up customer records
Vendors list_vendors, get_vendor Look up vendor records
Credit Memos list_credit_memos, get_credit_memo View credit memos and application history
Tags list_tag_groups, list_tags Browse tag groups and tags
Budgets list_budgets, get_budget, get_budget_vs_actual View budgets and compare against actuals
Accounting Periods list_accounting_periods View open/closed/locked periods
Bank Rules list_bank_rules View transaction categorization rules
Fixed Assets list_fixed_assets, get_fixed_asset View fixed assets and depreciation
Recurring list_recurring_templates, get_recurring_template View recurring invoice/bill schedules
Tax list_tax_rates, list_tax_codes View tax rates and codes
Subscriptions list_subscriptions View detected recurring spend patterns
Payment Terms list_payment_terms View payment term configurations
Products list_products Browse product catalog
Anomalies list_anomalies View detected financial anomalies
Audit Trail get_entity_audit_trail View change history for any entity
Search search_entities Full-text search across all entity types
Reports list_report_types, generate_report, get_report Generate financial reports (P&L, balance sheet, etc.)
Reconciliation list_reconciliations, get_reconciliation View bank reconciliation status
Analytics get_financial_overview, get_top_expenses, get_cash_flow_totals, get_profit_trends, get_transaction_summary Server-side aggregations for analytical questions

You don't need to know your business ID upfront. The business_id parameter is optional on every tool — the server automatically resolves it:

  • One business — selected automatically, zero friction.
  • Multiple businesses — the server responds with your business list so the assistant can ask which one to use.
  • Explicit ID — you can always pass a business_id directly if you prefer.

The assistant remembers your selection for the rest of the conversation. Say "switch to [business name]" at any time to change.

Note: All monetary amounts are in cents (e.g. $150.00 = 15000). IDs are UUID v7 strings. Pagination is cursor-based — pass the next_cursor value from a response as cursor to get the next page. All date parameters use YYYY-MM-DD format.

Only create_journal_entry writes data — all other tools are read-only queries, safe to call without side effects.

Reports follow a three-step workflow: list_report_typesgenerate_report → poll get_report until its status is completed.

Working with Large Datasets

List tools return a total field showing total matching records. Use this to decide how to proceed:

  • Analytical questions ("what did we spend the most on?", "are we profitable?", "how much revenue last quarter?") — use the analytics tools (get_financial_overview, get_top_expenses, get_cash_flow_totals, get_profit_trends, get_transaction_summary). These compute summaries server-side and return small payloads regardless of data volume.
  • Under ~100 matching records — paginate through them if you need individual details.
  • Over ~100 matching records — narrow with filters (date range, search text, ledger_id, status) or use analytics tools. Don't page through thousands of records.
  • Full exports — use generate_report to create a downloadable file.

Strategy: summarize first, drill down second. Start with aggregate tools to understand the big picture, then use list tools with filters to examine specific subsets.

Prerequisites

  1. A DayZero account with API access enabled
  2. An API token (see Authentication)

Connecting Claude Desktop

Add the following to your Claude Desktop configuration file:

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

json
{
  "mcpServers": {
    "dayzero": {
      "url": "https://api.ondayzero.com/mcp",
      "headers": {
        "Authorization": "Bearer dz_your_token_here"
      }
    }
  }
}

Restart Claude Desktop after saving. You should see DayZero tools appear in the tools menu.

Connecting Cursor

In Cursor, go to Settings > MCP Servers and add a new server:

  • Name: DayZero
  • URL: https://api.ondayzero.com/mcp
  • Headers: Authorization: Bearer dz_your_token_here

Connecting Other MCP Clients

Any MCP client that supports Streamable HTTP transport can connect. The server supports automatic discovery via RFC 9728 Protected Resource Metadata at:

https://api.ondayzero.com/.well-known/oauth-protected-resource

This endpoint advertises the authorization server URL and required scopes, so compatible clients can discover the auth configuration automatically.

Authentication

The MCP server uses the same Bearer token authentication as the REST API. The token is sent in the HTTP Authorization header on every request — you do not pass a token to individual tools.

Authorization: Bearer dz_your_token_here

Tokens are DayZero API keys (JWTs) generated from Settings > API Tokens. Both access tokens and API tokens are accepted.

If the token is missing or invalid, the server returns a 401 response with a WWW-Authenticate header pointing to the resource metadata endpoint.

Example Conversation

Once connected, just start asking questions — no setup required:

Single business (most common):

You: What invoices are overdue?

Assistant: You have 3 overdue invoices totaling $4,250.00…

The server auto-detected your business behind the scenes. No IDs needed.

Multiple businesses:

You: Show me last month's transactions

Assistant: You have access to 2 businesses:

  1. Acme LLC — admin
  2. Beta Corp — viewer

Which one would you like to use?

You: Acme

Assistant: Here are Acme LLC's transactions for last month…

After you pick, the assistant remembers your choice for the rest of the conversation. Say "switch to Beta Corp" at any time to change.

More things you can ask:

  • "List all bank accounts"
  • "Show me the last 10 transactions from checking"
  • "Generate a profit and loss report for Q1 2026"
  • "Create a journal entry for $500 rent expense on March 1"
  • "Search for anything related to Acme Corp"
  • "Compare the operating budget to actuals this quarter"
  • "What are our top expenses this year?"
  • "Are we cash-flow positive this quarter?"
  • "How have profit margins changed over the past 6 months?"
  • "How many transactions came in last month?"

Troubleshooting

Problem Solution
Tools don't appear Verify the URL is https://api.ondayzero.com/mcp and restart the client
401 Unauthorized Check that your API token is valid and not expired
403 Forbidden Your token doesn't have access to the specified business_id
404 Not Found Ensure the URL is exactly /mcp — not /mcp/mcp or /api/mcp
Connection timeout Ensure the DayZero API is reachable from your network

What's Next?