De-risk Claude and AI without getting left behind. You stay in full control: Claude is your assistant, not the source of truth for the organization you're trying to keep safe.
Connect Claude to Sofritech and ask about P&L, cashflow, runway, and Exact Online, Moneybird, or Odoo data right inside a conversation. Numbers come from Sofritech's verified reports, not from the model guessing. See why teams don't DIY this →
Claude is capable enough to try all of this on its own. But Claude is probabilistic by design, and financial reporting can't be. That's exactly why it needs a deterministic layer underneath it, not because Claude is wrong, but because confident isn't the same as consistent.
Add the MCP server URL below as a custom connector in Claude, then click Connect and sign in with your Sofritech account. Access is personal and covers every organization on your account.
Sofritech MCP serverhttps://mcp.sofritech.com/mcpSofritech MCP serverhttps://mcp.sofritech.com/mcpRun once per machine to register the connector:
claude mcp add --transport http sofritech https://mcp.sofritech.com/mcp
When prompted, sign in with your Sofritech account to complete OAuth.
Natural-language prompts Claude understands once connected:
Claude picks tools from your question. Start with list_organizations, then
organization_id. Each org lists sources.exact /
sources.moneybird / sources.odoo. For consolidated P&L or balans
(no division named) → get_financial_statements. For cashflow/runway →
get_cashflow_forecast. For one Exact division, Moneybird administration, or Odoo
company → compare_periods or get_reporting_balance with
account_id from list_source_accounts and
entity_id from list_entities (Exact: division Code, not HID).
Pass source=exact|moneybird|odoo when the org has more than one source connected.
| Tool | When to use |
|---|---|
| Navigation | |
list_organizations |
Organizations on your account — start here for organization_id.
Supports limit, offset, and search.
Each org includes sources.exact / sources.moneybird /
sources.odoo. |
list_source_accounts |
Linked Exact, Moneybird, and Odoo accounts (id, source, capabilities). Optional
organization_id and source filter. |
list_entities |
Entities for an account_id: Exact divisions, Moneybird administrations,
or Odoo companies. Use field entity_id as a string. |
| Cashflow reports (Box Excel model) | |
get_cashflow_forecast |
Primary cashflow report: history + forecast, O/I/F, scenarios
(fall_back, management, growth), runway.
Optional source when the org has more than one. |
get_portfolio_cashflow_summary |
Cash runway overview for all organizations — shortest runway first. |
get_financial_statements |
P&L and balans (org-level, Box Excel). Use for omzet,
nettoresultaat, equity, schulden, etc. statement: pnl,
balance_sheet, or all. Not for cashflow/runway —
use get_cashflow_forecast. |
| Live reports (one entity) | |
compare_periods |
Live P&L for one entity (Exact division, Moneybird
administration, or Odoo company). For org-level P&L, use
get_financial_statements. |
get_reporting_balance |
Live balans/GL for one entity. For org-level balans, use
get_financial_statements. |
| Data refresh | |
refresh_export |
Trigger Exact, Moneybird, or Odoo → Box Excel export (async, same as portal refresh).
Pass source when the org has multiple sources. |
get_export_refresh_status |
Poll until can_start is true, then call
get_cashflow_forecast or get_financial_statements again. |
| Live detail (reconciliation) | |
get_bank_entries |
Bank entry headers; Exact uses JournalCode for the bank account. |
get_bank_entry_lines |
Individual bank lines; join to entries via EntryID. |
get_gl_transactions |
GL transaction lines for month-end review. |
get_purchase_invoices |
Purchase entries / AP invoices. |
get_receivables |
Open receivables / debtor follow-up (current balances). |
get_payables |
Open payables / creditor balances. |
get_aging_receivables |
Receivables aging buckets by due date. |
get_profit_loss_overview |
Live P&L for one entity (Exact, Moneybird, or Odoo). |
get_outstanding_invoices |
Outstanding invoices overview (Exact). |
| Org reports | |
get_expected_cashflows |
Near-term planned inflows/outflows (Exact cashflow module, or Moneybird/Odoo
open invoices by due date) — not the same as get_receivables or
get_cashflow_forecast. |
get_sales_summary |
Monthly revenue totals from sales invoices. |
get_customer_concentration |
Top-N customers as % of revenue (DD / investor reporting). |
get_forecast_variance |
Box forecast vs actual + Exact budget by period when Exact is connected. |
get_headcount_trend |
Active employment count + personnel cost aggregates (Exact only; no salary detail). |
get_subscription_summary |
MRR/ARR when Exact subscriptions are in use (Exact only). |
request_mcp_feature |
Log a missing capability for the Sofritech team — only after the user explicitly agrees to flag it (not automatic). |
submit_prompt_idea |
Share a prompt that worked well for the Sofritech prompt library — only after the user explicitly asks to submit it (not automatic). |
query_accounting |
Low-level read against Exact OData, Moneybird REST, or Odoo JSON-2. Prefer curated tools when possible. |
| CFO prompts (Claude Desktop / MCP Inspector) | |
Slash-style prompts: monthly_board_pack,
cash_runway_check, collections_priority,
vendor_payment_planning, customer_concentration_risk,
period_variance, multi_entity_consolidation,
quarterly_investor_update. They already name the tools to call.
|
|
Curated tools support odata_filter, odata_top, and odata_skip
— use next_skip from the response when truncated is true.
Moneybird entity ids must be passed as strings (too large for JSON numbers).
The connector does not store data of its own. Every tool call is proxied in real time to Sofritech using your authenticated session, and the response is returned to Claude for that conversation only. See our Privacy Policy for how Sofritech handles your data, and Anthropic's own policies for how Claude handles data you share with it in a conversation.
Revoke access at any time from Claude's connector settings, or from your Sofritech account settings — this immediately invalidates the connector's access token.