Every finance tool the Control.dev MCP server exposes
The Control.dev MCP server gives Claude, ChatGPT, Codex and other MCP clients 95 finance tools over the consolidated group: statements, cash flow, transactions, budgets and forecasts. MCP (Model Context Protocol) is the open standard AI clients use to connect to tools and data. A tool is a function your AI client calls, and it returns JSON the client reads. Every call runs with the signed-in user’s role, and a read-only session receives no write tools. Control.dev is a group consolidation and FP&A platform for multi-entity groups. EPM for the AI era. Built in the Nordics.
- Tools
- 95
- Read
- 68
- Write
- 27
- Copied from the server
One call, the group P&L back as JSON
Your client asks for September and Control returns the consolidated statement with every subtotal, eliminations and currency translation already done. The client reads totals, it does not add up account codes.
Client calls
get_group_statement_actuals
{
"statementType": "ProfitAndLoss",
"periodStart": "2026-09-01",
"asOf": "2026-09-30",
"mode": "monthly"
}One call, the signed-in user’s role, the group as consolidated in Control: eliminations and currency translation already done.
Control returns rowTotals, trimmed
"months": ["2026-09"],
"rowTotals": [
{ "name": "Revenue", "rowType": "Group",
"values": [1400000] },
{ "name": "Cost of sales", "rowType": "Group",
"values": [-560000] },
{ "name": "Gross profit", "rowType": "Formula",
"values": [840000] },
{ "name": "Operating costs", "rowType": "Group",
"values": [-525000] },
{ "name": "EBITDA", "rowType": "Formula",
"values": [315000] }
]95 tools in 19 groups
The server’s own tool list, which your client receives after sign-in, and control_api_endpoint_catalog are the source of truth. This page is a copy of that list taken on 30 Oct 2026.
Workspace and discovery 5
What the workspace holds, whether a month is ready, and where the docs answer a question.
| Tool | What it does | Access |
|---|---|---|
list_entities | Lists the entities in the workspace, for narrowing a statement or transaction search to named companies. | Read |
list_currencies | Lists the currencies the workspace knows, by ISO code or name. | Read |
list_supported_integration_providers | Lists the accounting and billing systems a connection can be set up for from the client. | Read |
get_monthly_close_readiness | Checks whether a month is closed in every source and fully processed, and names each blocker. | Read |
search_product_docs | Searches the Control product docs and returns excerpts with their source links. | Read |
Group structure: accounts, dimensions, layouts 8
The group chart of accounts, its dimensions and the statement layouts every figure is read through.
| Tool | What it does | Access |
|---|---|---|
list_group_accounts | Lists the group chart of accounts used in statements, mappings and transaction filters. | Read |
list_group_dimensions | Lists the group dimensions, such as cost centre or project, used for filtering and reporting. | Read |
list_group_dimension_items | Lists the items of a group dimension, for example each cost centre. | Read |
list_statement_layouts | Lists statement layouts, defaults and custom variants, by statement type or name. | Read |
resolve_default_statement_layout | Returns the workspace’s default layout for each statement type. | Read |
search_statement_layout_tree | Finds a layout row by name or code, with its composition and a link to it. | Read |
build_statement_actuals_link | Builds a link that opens the same statement, period and filters in Control. | Read |
get_group_accounting_settings | Reads the group’s accounting currency and its currency translation settings. | Read |
Statements and cash flow 6
The consolidated statements first, then any named entity, every subtotal as the statement page shows it.
| Tool | What it does | Access |
|---|---|---|
get_group_statement_actuals | Reads the consolidated P&L, balance sheet, functional P&L or custom report for a period, with every subtotal. | Read |
get_entity_statement_actuals | Reads the same statements for one or more named entities. | Read |
compare_entities_statement_actuals | Puts two or more named entities side by side on the same statement and period. | Read |
get_group_cash_flow_monthly | Reads the consolidated cash flow by month across all active entities. | Read |
get_entity_cash_flow_monthly | Reads monthly cash flow for one or more named entities. | Read |
compare_entities_cash_flow_monthly | Compares monthly cash flow across two or more named entities. | Read |
Close and eliminations 2
The intercompany side of the close, read as the review page in Control shows it.
| Tool | What it does | Access |
|---|---|---|
get_elimination_review | Reads the elimination review by entity and account, with the residuals left before translation differences. | Read |
get_saved_elimination_groups | Reads linked elimination groups for a period: each member’s status and its balance sheet effect. | Read |
Transactions and counterparties 3
The entries behind every figure, grouped or row by row.
| Tool | What it does | Access |
|---|---|---|
get_group_transactions_browse | Searches transactions across the group with filters, grouping and pivots, up to 5,000 rows a page. | Read |
get_entity_transactions_browse | Searches the transactions of named entities with the same filters and paging. | Read |
get_top_counterparties | Ranks the largest customers or suppliers for a period in group currency, with growth. | Read |
Invoices across ledgers 6
Sales and purchase invoices from every connected system, in one common format, and the documents stored for them.
| Tool | What it does | Access |
|---|---|---|
get_uniform_invoice_monthly_summary | Totals sales or purchase invoices by month across connected systems. | Read |
get_uniform_invoice_aggregation | Rolls invoice lines up by period, customer, supplier, product, status or source system. | Read |
get_uniform_invoice_documents | Lists invoices one row per document, with status, due date and open amount. | Read |
get_uniform_invoice_lines | Reads the lines of specific invoices for drill-down, page by page. | Read |
list_invoice_documents | Lists the invoice image and attachments stored for one sales or purchase invoice, or one ledger receipt. | Read |
read_invoice_document | Reads the text of an invoice document page by page, or a page without text as an image. | Read |
Stripe entries 3
Journal entries derived from Stripe, beside the ledgers.
| Tool | What it does | Access |
|---|---|---|
get_stripe_journal_entry_monthly_summary | Summarises Stripe-derived journal entries by month: revenue, fees, disputes, VAT and cash. | Read |
get_stripe_journal_entry_aggregation | Rolls Stripe journal entries up by period, event type, account role, customer or tax country. | Read |
get_stripe_journal_entry_lines | Reads Stripe journal entry lines for one invoice, customer, event or month. | Read |
Payroll 3
Payslip lines from synced Procountor payroll, for gross-to-net reports.
| Tool | What it does | Access |
|---|---|---|
list_payroll_pay_dates | Lists one entity’s pay dates, with the number of payslips and employees on each. | Read |
get_payroll_lines | Reads one pay run’s payslip lines by employee and salary type. | Read |
list_payroll_salary_types | Lists the Procountor salary type catalogue with categories and income register codes. | Read |
Connected HR and CRM data 9
HubSpot deals and HiBob people and salaries for revenue and headcount plans, once their connection under Budgets in Control has synced.
| Tool | What it does | Access |
|---|---|---|
list_hubspot_pipeline_stages | Lists the HubSpot deal pipelines and their stages, with each stage’s win probability and whether it is closed. | Read |
get_hubspot_deal_lines | Reads HubSpot deals, one row per deal, with amount, currency, close date, stage, weighted amount and owner. | Read |
get_hubspot_deal_aggregation | Rolls HubSpot deals up by close date: count, amount and weighted amount per month, quarter or year. | Read |
get_hubspot_line_item_lines | Reads the line items on HubSpot deals: product, quantity, price, billing terms, MRR, ARR and TCV. | Read |
list_hibob_departments | Lists the HiBob departments, with each one’s active headcount and total full-time equivalents. | Read |
get_hibob_employee_lines | Reads HiBob employees, one row per person: department, title, start date, status, FTE and contract. | Read |
get_hibob_salary_lines | Reads base salaries from HiBob: each employee’s current salary, or the history with each raise’s effective date. | Read |
list_connection_custom_fields | Lists the custom fields of a connected CRM or HR system, with any description your team saved. | Read |
describe_connection_custom_field | Saves what a custom field of a connected CRM or HR system holds, in your team’s own words. | Write |
AI spend 1
What the group spends on AI software and services.
| Tool | What it does | Access |
|---|---|---|
get_ai_spend_monthly | Reads the group’s spend on AI software and services by month. | Read |
Statement comments 3
Questions and explanations left on statement cells, as the review panel in Control shows them.
| Tool | What it does | Access |
|---|---|---|
list_statement_comments | Lists the comment threads on statement cells: the question, the value then, and the replies. | Read |
add_statement_comment | Leaves a comment or a question on a statement cell, or replies in its thread. | Write |
resolve_statement_comment | Resolves or reopens a comment thread on a statement cell. | Write |
Budgets and forecasts 10
Plan values with the reason behind each one, their history and the documents attached to them.
| Tool | What it does | Access |
|---|---|---|
list_budgets | Lists budgets and forecasts with their periods, layouts, currency and revision. | Read |
get_budget_plan_values | Reads monthly plan values with the explanation, author and channel behind each described cell. | Read |
set_budget_group_account_monthly_values | Sets monthly budget values, each with its reason. On unified budgets a value without one is rejected. | Write |
describe_budget_cells | Writes or corrects the explanation on existing budget values without changing any amount. | Write |
get_budget_change_history | Reads every committed budget change, newest first, with before and after values and the reason given. | Read |
export_budget_as_import_file | Exports a budget as an import file, the starting point for a new version. | Write |
upload_budget_attachment | Attaches a supporting document, such as a hiring plan, to a budget. | Write |
list_budget_attachments | Lists the documents attached to a budget. | Read |
read_budget_attachment | Reads the text of a budget attachment, page by page. | Read |
send_budget_agent_prompt | Sends a request to the Budget Assistant inside Control. | Write |
File imports 7
Files go from the client’s own code environment straight to api.control.dev, then are checked before anything is saved.
| Tool | What it does | Access |
|---|---|---|
describe_bulk_file_import_format | Returns the columns and rules for importing a chart of accounts, a layout, transactions or a budget. | Read |
prepare_file_upload | Prepares an upload the client sends straight to api.control.dev, outside the MCP connection. | Write |
preview_file_upload | Parses an uploaded file without importing it, up to 100 rows at a time. | Read |
validate_bulk_file_import | Checks every row and reference in an import file without saving anything. | Read |
submit_bulk_file_import | Imports a validated file. A budget import adds and replaces values, never deletes them. | Write |
submit_transaction_file_upload | Imports a previewed file as manual transactions for one entity. | Write |
get_file_upload_status | Reports the status and row counts of an upload or import. | Read |
Manual transactions 6
Entries the team adds in Control, such as accruals. Only manual transactions can be changed or deleted here.
| Tool | What it does | Access |
|---|---|---|
create_manual_transaction | Adds one manual transaction to an entity in Control. | Write |
create_manual_transactions | Adds up to 100 manual transactions in one call, with a result for each row. | Write |
update_manual_transaction | Changes the fields of one manual transaction. | Write |
update_manual_transactions | Changes several manual transactions in one call. | Write |
delete_manual_transaction | Deletes one manual transaction. | Write |
delete_manual_transactions | Deletes several manual transactions in one call. | Write |
Dashboards 4
A change to a dashboard is a private draft you apply or discard in Control.
| Tool | What it does | Access |
|---|---|---|
list_dashboards | Lists the workspace’s dashboards and their widgets. | Read |
get_dashboard_widget_capabilities | Returns the widget types, data sources and layout rules a dashboard draft can use. | Read |
draft_dashboard_changes | Creates a private dashboard draft you apply or discard in Control. | Write |
get_dashboard_draft | Reads a dashboard draft. | Read |
Excel and Google Sheets 13
Connectors and sync jobs that keep a workbook or a sheet filled from Control.
| Tool | What it does | Access |
|---|---|---|
create_excel_connector | Creates an Excel connector from a workbook link. | Write |
create_google_sheets_connector | Creates a Google Sheets connector from a sheet link. | Write |
get_excel_oauth_status | Checks the user’s Microsoft connection used by Excel connectors. | Read |
initiate_excel_oauth | Starts the Microsoft sign-in for Excel connector access. | Write |
grant_excel_workbook_access | Grants Control’s app access to an Excel workbook so syncs can write to it. | Write |
validate_excel_access | Checks access to an Excel workbook link. | Read |
validate_google_sheet_access | Checks access to a Google Sheet before a connector is created. | Read |
get_google_sheets_access_instructions | Returns the service account and the steps for sharing a Google Sheet. | Read |
describe_spreadsheet_connector_data | Describes what a spreadsheet connector syncs: tabs, columns, row counts and samples. | Read |
create_spreadsheet_job | Starts a one-time sync from a Control API source to a sheet or workbook. | Write |
get_spreadsheet_job | Reads a sync job’s status and progress. | Read |
stream_spreadsheet_job | Follows a sync job until it finishes. | Read |
control_api_to_spreadsheet | Fetches Control API data and writes it to Google Sheets or Excel. | Write |
Integration setup 2
A new ledger connection started from the client. Credentials go into Control, never into the chat.
| Tool | What it does | Access |
|---|---|---|
create_integration_setup | Starts a setup session for a ledger connection and returns nothing secret. | Write |
get_integration_setup_status | Reports the status of a setup session. | Read |
Control API 3
The same operations the Control app uses, for what the named tools do not cover.
| Tool | What it does | Access |
|---|---|---|
control_api_endpoint_catalog | Searches the catalog of Control API endpoints the client may call, read and write. | Read |
control_api_get | Calls an allowed read-only Control API endpoint. | Read |
control_api_request | Calls the operations the Control app uses, except billing, invitations, admin, credentials and file uploads. | Write |
Approved draft journal 1
Netvisor and Procountor only.
| Tool | What it does | Access |
|---|---|---|
propose_native_journal_write | Proposes a draft journal in Netvisor or Procountor for an Owner or Admin to approve. | Write |
In a write session the server lists 102 tools: the 95 above and seven operational ones, left out of the tables on purpose. Four record the delivery of a monthly report: claim_monthly_report_run, begin_monthly_report_delivery, complete_monthly_report_run and fail_monthly_report_run. Of the other three, list_available_tenants lists the workspaces you belong to, get_agent_workspace_guide reads a workspace guide your administrators keep, and skip_integration_setup marks an integration setup as skipped.
How the server works
The access model in seven lines, from the product docs. Your role in Control is the limit; the session decides whether write tools exist at all.
Access and permissions- Endpoint
- One remote MCP server per workspace:
https://api.control.dev/api/mcp?tenant=<workspace id>. Copy it from Data outputs, then MCP Server, in Control. Thetenantparameter pins the workspace, and Control rejects it if you are not a member. - Sign-in
- OAuth through Control’s identity provider, with refresh tokens. The scopes
profile,emailandoffline_accessidentify the user and keep the connection alive. They grant no tools and no data. - Client registration
- A pre-registered OAuth client. Copy the client ID from the MCP Server page; if it shows none yet, ask us, since registering your client is part of setup. Dynamic client registration is off by default.
- Read or write
- Chosen per session. Send
Mcp-Requested-Access: readon every request for a read-only session; without it, an eligible user gets write access. Reconnect after changing it. - Roles
- Workspace membership, the user’s role and the workspace’s features apply to every call, and the server checks the access level again when a tool runs. Your AI asks before it writes.
- What comes back
- JSON. Statements by layout with every subtotal the statement page shows; transactions with filters, grouping and pivots, up to 5,000 rows a page with an offset; links that open the same view in Control.
- Files
- Imports go from the client’s own code environment straight to
api.control.dev, not through MCP. In Claude, an Owner adds api.control.dev to the allowed domains under Code execution.
Set up a client: Claude, ChatGPT, Codex, or any MCP client that supports remote servers and OAuth sign-in. Reusable instructions for the recurring jobs are on Finance skills, the hub is Control over MCP, and roles, hosting and certification are on Security.
Which tools does a read-only session get?
The tools marked Read. A read-only session does not receive write tools, and the server checks the access level again when a tool runs. Refresh the tool list after you connect to see exactly what your session has.
Can a client delete data?
The delete tools remove manual transactions only, the entries your team adds in Control. In a write session, control_api_request reaches the operations the Control app offers your role, deletes included. Nothing in your accounting systems is deleted, and a budget import adds and replaces values without deleting any.
What does control_api_request reach?
The operations the Control app itself uses, except billing, invitations, admin, credential and OAuth endpoints and file uploads. control_api_endpoint_catalog lists them, control_api_get calls the read-only ones, and the same role checks apply.
How often does the list change?
Tools are added as Control grows, and the product docs say to refresh the tool list after Control adds or changes tools. This page is a copy dated 30 Oct 2026; the list your client receives is the current one. A published ChatGPT Business app is recreated and republished to show changed tools.
Can I see each tool’s input schema?
Yes. Your client receives every tool’s description and input schema with the tool list after sign-in, and most clients show them. The product docs describe the server and the access model.
Can we get the data as files?
Yes. A client can write a workbook or a chart in its own environment from these tools. The spreadsheet tools set up and run managed Excel and Google Sheets outputs, which, like Parquet exports, are Enterprise features.
Why does my client not show a tool?
The session may be read-only, your role may not allow it, or the workspace feature may be off. Refresh the tool list or reconnect, then check your role in Control.
What does it cost?
There is no separate MCP fee or per-tool price: every tool your role allows comes with every plan. The pricing page lists the self-serve plans, a group with more than the five ledgers the Enterprise plan includes gets a quote, and the 30-day trial needs no card.
From trial to connected
Start the trial, connect your first ledger and add Control to the client you already use. Or book a demo and we connect a client to a sample group in the call.
- 1. Start the 30-day trial. No card needed.
- 2. Connect your first ledger. Yourself, or with us on a call.
- 3. Add Control to your client. The server URL and the client ID are on the MCP Server page.
- 4. Ask one question. One you already know the answer to.
MCP access is in every plan. Self-serve plans are on the pricing page; groups with more than the five ledgers the Enterprise plan includes get a quote.
