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_iddirectly 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 thenext_cursorvalue from a response ascursorto 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_types → generate_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_reportto 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
- A DayZero account with API access enabled
- 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
{
"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-resourceThis 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_hereTokens 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:
- Acme LLC — admin
- 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?
- Authentication — managing API tokens
- First Request — getting started with the REST API
- Reports — available report types and formats