Digits MCP
Vendor MCP12 toolsOAuth 2.1/DCRAccounting & FinanceAIDigits is an AI-powered business finance platform. This MCP connector gives AI agents read-only access to your Digits data — transactions, financial...
Digits MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'digitsmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Digits MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'digitsmcp_list_businesses',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "digitsmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Digits MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="digitsmcp_list_businesses",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Delete transactions — Delete one or more transactions for a business by their transaction fact IDs
- Create transactions — Create one or more manual journal-entry transactions (double-entry bookkeeping records) for a business in a single atomic batch
- Business select — Select a business to work with
- Search term — Resolve a customer, vendor, category, department, location name or transaction description to its canonical form using fuzzy text matching
- Query transactions — Query and filter individual transactions
- List locations, departments, categories — This tool is used to list locations
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
digitsmcp_create_transactions#Create one or more manual journal-entry transactions (double-entry bookkeeping records) for a business in a single atomic batch.
Each transaction has two or more lines whose debits and credits balance. Each line debits or credits a category (account); resolve category_id via list_categories, and optionally party_id, department_id, and location_id via the corresponding list tools, before calling this tool. Amounts are positive decimal strings and the entry_type (DEBIT or CREDIT) determines the side.
All transactions are created together: if any transaction is invalid, unbalanced, or falls in a closed accounting period, the entire batch fails and nothing is created.2 params
Create one or more manual journal-entry transactions (double-entry bookkeeping records) for a business in a single atomic batch. Each transaction has two or more lines whose debits and credits balance. Each line debits or credits a category (account); resolve category_id via list_categories, and optionally party_id, department_id, and location_id via the corresponding list tools, before calling this tool. Amounts are positive decimal strings and the entry_type (DEBIT or CREDIT) determines the side. All transactions are created together: if any transaction is invalid, unbalanced, or falls in a closed accounting period, the entire batch fails and nothing is created.
business_idstringrequiredThe ID of the business. Use list_businesses to see available IDs.transactionsarrayrequiredThe journal-entry transactions to create. All are created together in one atomic batch.digitsmcp_delete_transactions#Delete one or more transactions for a business by their transaction fact IDs.
Resolve transaction_fact_ids via query_transactions before calling this tool. Deleting a fact also removes its sibling facts in the same ledger transaction, so a two-sided journal entry is deleted as a unit.
The delete is soft: transactions are marked deleted rather than erased. Scheduled and QuickBooks-sourced transactions cannot be deleted this way, and a transaction that falls in a closed accounting period must be removed via a closed-period request instead — in either case nothing is deleted.2 params
Delete one or more transactions for a business by their transaction fact IDs. Resolve transaction_fact_ids via query_transactions before calling this tool. Deleting a fact also removes its sibling facts in the same ledger transaction, so a two-sided journal entry is deleted as a unit. The delete is soft: transactions are marked deleted rather than erased. Scheduled and QuickBooks-sourced transactions cannot be deleted this way, and a transaction that falls in a closed accounting period must be removed via a closed-period request instead — in either case nothing is deleted.
business_idstringrequiredThe ID of the business. Use list_businesses to see available IDs.transaction_fact_idsarrayrequiredThe transaction fact IDs to delete. Use query_transactions to resolve. Sibling facts in the same ledger transaction are deleted together.digitsmcp_dimensional_summarize_transactions#Summarizes transactions and aggregates them into multi-dimensional summaries.
You can use it to receive timeseries data for that is aggregated and bucketed into dimensions (e.g. Category, Party, Time).
# Important Notes
- If you are only requesting a Time summary, you must provide a filter (such as category ID/type, party ID/role, etc)
- Origin is required. Origin's "index" is 1 based for interval Day, Week, Month, and Quarter; it's the year for interval Year. "IntervalCount" is the number of lookback intervals. All fields in "origin" must be set.
- You must include "Time" in the Along dimensions when using intervalCount > 1.
- When filtering by balance sheet categories (Assets, Liabilities, Equity), you must set asPermanentAccount to true.
- Always resolve the party / category / department / location using search_term first, then use the IDs returned in the filter.
- The response may include a "summary" field where the current period amount is zero while prior period is non-zero; do not treat prior amounts as current-period values.
- For bill or invoice questions, answer only from explicit fields returned by tools. Do not use expense or income transaction data to approximate bill or invoice amounts.12 params
Summarizes transactions and aggregates them into multi-dimensional summaries. You can use it to receive timeseries data for that is aggregated and bucketed into dimensions (e.g. Category, Party, Time). # Important Notes - If you are only requesting a Time summary, you must provide a filter (such as category ID/type, party ID/role, etc) - Origin is required. Origin's "index" is 1 based for interval Day, Week, Month, and Quarter; it's the year for interval Year. "IntervalCount" is the number of lookback intervals. All fields in "origin" must be set. - You must include "Time" in the Along dimensions when using intervalCount > 1. - When filtering by balance sheet categories (Assets, Liabilities, Equity), you must set asPermanentAccount to true. - Always resolve the party / category / department / location using search_term first, then use the IDs returned in the filter. - The response may include a "summary" field where the current period amount is zero while prior period is non-zero; do not treat prior amounts as current-period values. - For bill or invoice questions, answer only from explicit fields returned by tools. Do not use expense or income transaction data to approximate bill or invoice amounts.
business_idstringrequiredThe ID of the business. Use list_businesses to see available IDs.originobjectrequiredRequired reporting period. interval, year, index, and interval_count must all be supplied; max_time is optional.aggregate_facet_kindstringoptionalNo description.alongobjectoptionalOptional dimensions used to group the transaction totals. When supplied, dimensions is required.as_permanent_accountbooleanoptionalNo description.default_category_typestringoptionalNo description.directionstringoptionalNo description.filterobjectoptionalNo description.interval_partitionobjectoptionalNo description.match_bystringoptionalNo description.natural_flowstringoptionalNo description.paginationobjectoptionalNo description.digitsmcp_financial_statement#Generate complete financial statements: Profit & Loss, Balance Sheet, Cash Flow, AR/AP Aging.
## Statement Types (kind)
1. **ProfitAndLoss** - Income Statement showing revenue, expenses, and net income
2. **BalanceSheet** - Financial position with assets, liabilities, and equity
3. **CashFlow** - Cash movements categorized by operating, investing, and financing activities
4. **APAging** - Accounts Payable aging report. ONLY use for questions about total amount currently outstanding or due to vendors. Do NOT use for general bill questions (counts, averages, individual bill details, historical bill amounts).
5. **ARAging** - Accounts Receivable aging report. ONLY use for questions about total amount currently outstanding or due from customers. Do NOT use for general invoice questions (counts, averages, individual invoice details, historical invoice amounts).
## Parameters
**Required:**
- kind: Statement type ("ProfitAndLoss", "BalanceSheet", "CashFlow", "APAging", "ARAging")
- origin: Time period for the statement. Origin's "index" is 1 based for interval Day, Week, Month, and Quarter; it's the year for interval Year. All fields in "origin" must be set.
- interval: Time unit (Day, Week, Month, Quarter, Year)
- year: Calendar year
- index: Position within year (1-12 for Month, 1-4 for Quarter, etc.)
- interval_count: Number of periods to include
**Optional:**
- look_back_count: Number of periods to include in lookback (overrides defaults)
- For Month statements: defaults to 12 periods
- For Quarter statements: defaults to 4 periods
- For Year statements: defaults to 3 periods
- show_account_numbers: Include account numbers (bool)
- fiscal_year_start_month: Fiscal year start month (1-12 for Jan-Dec)
- tax_form: Tax form for display
- category_id: Filter to specific category (optional)
- department_ids: Filter to specific departments (array of strings)
- location_ids: Filter to specific locations (array of strings)
## Example Requests
### Profit & Loss for Q3 2024
{
"kind": "ProfitAndLoss",
"origin": {
"interval": "Quarter",
"year": 2024,
"index": 3,
"interval_count": 1
}
}
### Balance Sheet for December 2024
{
"kind": "BalanceSheet",
"origin": {
"interval": "Month",
"year": 2024,
"index": 12,
"interval_count": 1
}
}
### Cash Flow Statement for Last 6 Months
{
"kind": "CashFlow",
"origin": {
"interval": "Month",
"year": 2024,
"index": 12,
"interval_count": 6
}
}
### AP Aging Report with Account Numbers
{
"kind": "APAging",
"origin": {
"interval": "Month",
"year": 2024,
"index": 12,
"interval_count": 1
},
"preferences": {
"show_account_numbers": true
}
}
### Department-Specific P&L
{
"kind": "ProfitAndLoss",
"origin": {
"interval": "Quarter",
"year": 2024,
"index": 4,
"interval_count": 1
},
"department_ids": ["dept-123", "dept-456"]
}
## Common Patterns
**"Show me the P&L for last quarter"** -> kind="ProfitAndLoss", origin with Quarter interval
**"What's my current cash position?"** -> kind="BalanceSheet", origin with current month
**"Show cash flow for the year"** -> kind="CashFlow", origin with Year interval or interval_count=12
**"What is our total outstanding A/R?"** -> kind="ARAging" for total receivable amount
**"How much do we currently owe vendors?"** -> kind="APAging" for total payable amount
**"Department P&L comparison"** -> Use department_ids to filter11 params
Generate complete financial statements: Profit & Loss, Balance Sheet, Cash Flow, AR/AP Aging. ## Statement Types (kind) 1. **ProfitAndLoss** - Income Statement showing revenue, expenses, and net income 2. **BalanceSheet** - Financial position with assets, liabilities, and equity 3. **CashFlow** - Cash movements categorized by operating, investing, and financing activities 4. **APAging** - Accounts Payable aging report. ONLY use for questions about total amount currently outstanding or due to vendors. Do NOT use for general bill questions (counts, averages, individual bill details, historical bill amounts). 5. **ARAging** - Accounts Receivable aging report. ONLY use for questions about total amount currently outstanding or due from customers. Do NOT use for general invoice questions (counts, averages, individual invoice details, historical invoice amounts). ## Parameters **Required:** - kind: Statement type ("ProfitAndLoss", "BalanceSheet", "CashFlow", "APAging", "ARAging") - origin: Time period for the statement. Origin's "index" is 1 based for interval Day, Week, Month, and Quarter; it's the year for interval Year. All fields in "origin" must be set. - interval: Time unit (Day, Week, Month, Quarter, Year) - year: Calendar year - index: Position within year (1-12 for Month, 1-4 for Quarter, etc.) - interval_count: Number of periods to include **Optional:** - look_back_count: Number of periods to include in lookback (overrides defaults) - For Month statements: defaults to 12 periods - For Quarter statements: defaults to 4 periods - For Year statements: defaults to 3 periods - show_account_numbers: Include account numbers (bool) - fiscal_year_start_month: Fiscal year start month (1-12 for Jan-Dec) - tax_form: Tax form for display - category_id: Filter to specific category (optional) - department_ids: Filter to specific departments (array of strings) - location_ids: Filter to specific locations (array of strings) ## Example Requests ### Profit & Loss for Q3 2024 { "kind": "ProfitAndLoss", "origin": { "interval": "Quarter", "year": 2024, "index": 3, "interval_count": 1 } } ### Balance Sheet for December 2024 { "kind": "BalanceSheet", "origin": { "interval": "Month", "year": 2024, "index": 12, "interval_count": 1 } } ### Cash Flow Statement for Last 6 Months { "kind": "CashFlow", "origin": { "interval": "Month", "year": 2024, "index": 12, "interval_count": 6 } } ### AP Aging Report with Account Numbers { "kind": "APAging", "origin": { "interval": "Month", "year": 2024, "index": 12, "interval_count": 1 }, "preferences": { "show_account_numbers": true } } ### Department-Specific P&L { "kind": "ProfitAndLoss", "origin": { "interval": "Quarter", "year": 2024, "index": 4, "interval_count": 1 }, "department_ids": ["dept-123", "dept-456"] } ## Common Patterns **"Show me the P&L for last quarter"** -> kind="ProfitAndLoss", origin with Quarter interval **"What's my current cash position?"** -> kind="BalanceSheet", origin with current month **"Show cash flow for the year"** -> kind="CashFlow", origin with Year interval or interval_count=12 **"What is our total outstanding A/R?"** -> kind="ARAging" for total receivable amount **"How much do we currently owe vendors?"** -> kind="APAging" for total payable amount **"Department P&L comparison"** -> Use department_ids to filter
business_idstringrequiredThe ID of the business. Use list_businesses to see available IDs.kindstringrequiredNo description.originobjectrequiredRequired reporting period. interval, year, index, and interval_count must all be supplied; max_time is optional.budget_identifierobjectoptionalNo description.category_idstringoptionalNo description.department_idsarrayoptionalNo description.location_idsarrayoptionalNo description.look_back_countintegeroptionalNo description.preferencesobjectoptionalNo description.show_otherbooleanoptionalNo description.show_unassignedbooleanoptionalNo description.digitsmcp_list_business_users#List all users with access to a business. Requires a business_id from select_business.1 param
List all users with access to a business. Requires a business_id from select_business.
business_idstringrequiredThe ID of the business to list users for. Use list_businesses to see available IDs.digitsmcp_list_businesses#List all businesses (legal entities) the authenticated user has access to, including both direct employments and affiliations.0 params
List all businesses (legal entities) the authenticated user has access to, including both direct employments and affiliations.
digitsmcp_list_categories#This tool is used to list categories.
Use this when you need to review category names, types, or identifiers.2 params
This tool is used to list categories. Use this when you need to review category names, types, or identifiers.
business_idstringrequiredThe ID of the business. Use list_businesses to see available IDs.category_typesarrayoptionalNo description.digitsmcp_list_departments#This tool is used to list departments.
Use this when you need to review department names, status, or identifiers.2 params
This tool is used to list departments. Use this when you need to review department names, status, or identifiers.
business_idstringrequiredThe ID of the business. Use list_businesses to see available IDs.statusstringoptionalNo description.digitsmcp_list_locations#This tool is used to list locations.
Use this when you need location names, active status, or ids.2 params
This tool is used to list locations. Use this when you need location names, active status, or ids.
business_idstringrequiredThe ID of the business. Use list_businesses to see available IDs.statusstringoptionalNo description.digitsmcp_query_transactions#Query and filter individual transactions.
This tool provides access to transaction-level data with flexible filtering capabilities.
## Required Parameters
**origin**: Time period specification with:
- interval: Time unit (Day, Week, Month, Quarter, Year, etc.)
- year: Calendar year
- index: Position within year (1-based for Day/Week/Month/Quarter; the year itself for Year)
- interval_count: Number of periods to include
## Optional Parameters
- direction: Past or Future relative to the origin
- filter: Transaction filters (category, party, department, location, amount range, etc.)
- order: Sort order for the returned transactions
- pagination: limit/offset controls
- include_speed: Whether to include speed-layer (not-yet-compiled) transactions7 params
Query and filter individual transactions. This tool provides access to transaction-level data with flexible filtering capabilities. ## Required Parameters **origin**: Time period specification with: - interval: Time unit (Day, Week, Month, Quarter, Year, etc.) - year: Calendar year - index: Position within year (1-based for Day/Week/Month/Quarter; the year itself for Year) - interval_count: Number of periods to include ## Optional Parameters - direction: Past or Future relative to the origin - filter: Transaction filters (category, party, department, location, amount range, etc.) - order: Sort order for the returned transactions - pagination: limit/offset controls - include_speed: Whether to include speed-layer (not-yet-compiled) transactions
business_idstringrequiredThe ID of the business. Use list_businesses to see available IDs.originobjectrequiredRequired query period. interval, year, index, and interval_count must all be supplied; max_time is optional.directionstringoptionalNo description.filterobjectoptionalNo description.include_speedbooleanoptionalNo description.orderobjectoptionalNo description.paginationobjectoptionalNo description.digitsmcp_search_term#Resolve a customer, vendor, category, department, location name or transaction description to its canonical form using fuzzy text matching.
Before using an ID in transaction filters, run a final search on the full phrase and verify the selected canonical name matches the intended phrase. Use the kinds filter to restrict results to the entity types you need (e.g. Party, Category, Department, Location, Product, Discount).4 params
Resolve a customer, vendor, category, department, location name or transaction description to its canonical form using fuzzy text matching. Before using an ID in transaction filters, run a final search on the full phrase and verify the selected canonical name matches the intended phrase. Use the kinds filter to restrict results to the entity types you need (e.g. Party, Category, Department, Location, Product, Discount).
business_idstringrequiredThe ID of the business. Use list_businesses to see available IDs.textstringrequiredNo description.kindsarrayoptionalNo description.sortarrayoptionalNo description.digitsmcp_select_business#Select a business to work with. After calling this tool, use the returned business ID as business_id in subsequent tool calls.1 param
Select a business to work with. After calling this tool, use the returned business ID as business_id in subsequent tool calls.
business_idstringrequiredThe ID of the business to select. Use list_businesses to see available IDs.