SaaSFlow
DevelopersMCP

MCP tools reference

Every tool the SaaSFlow MCP server exposes, what it returns, and when an LLM should use it.

The MCP server registers two kinds of tools: a small set of hand-written tools for the most common operations, and one auto-generated tool per OpenAPI operation and per data slice.

Read tools are always registered; write tools only when writes are enabled. Every tool accepts an optional companyId; on the stdio server it falls back to SAASFLOW_COMPANY_ID. On the hosted server it must be specified per call.

Hand-written tools

ToolPurpose
list_companiesList companies the caller has access to.
get_companyGet one company's details.
list_company_usersList team members and their roles.
list_transactionsBrowse / filter / paginate transactions (limit 1–500, offset, accountId). For aggregations use a data_* tool.
get_transactionGet a single transaction by id.
list_customersList customers. For revenue analytics use data_customerMrr / data_cohorts.
searchFree-text search across customers, vendors, accounts, transactions.
run_data_batchRun multiple data slices in one round trip.

Auto-generated read tools

One tool per OpenAPI GET operation. Names follow <resource>_<verb>:

companies_list         companies_get
accounts_list          accounts_get           accounts_balances
accounts_daily_balance
customers_list         customers_get          customers_external_ids
vendors_list           vendors_get            vendors_external_ids
vendors_apply_default_categorization_preview
transactions_list      transactions_get       transactions_transfer_chain
subscriptions_list     subscriptions_get      subscription_events_list
products_list          products_get           products_external_ids
plan_items_list        plan_items_get
categories_list        categories_get
files_list             files_get              files_download
planned_transactions_list   planned_transactions_get
planned_transaction_occurrences_list
integrations_list      integrations_get
account_groups_list    account_groups_get
notifications_list
background_tasks_list  background_tasks_get
comments_list          comments_get
users_list
counterparties_search
agent_definitions_list agent_runs_list        agent_runs_get

(The data and search resources are skipped here because the hand-written tools above cover them. companies_list / companies_get overlap with the hand-written list_companies / get_company — both work.)

Write tools

Registered only when writes are enabled:

ModeWrites are enabled when
StdioSAASFLOW_MCP_WRITES=1 is set in the server's environment.
RemoteThe caller authenticated with an API key, or with an OAuth token carrying the saasflow:write scope.

Every write runs through the same permission checks as the REST API — the API key's permission set or the granting user's permissions bound what a tool can touch.

One tool per mutating OpenAPI operation, same naming scheme:

companies_update
account_groups_create      account_groups_update      account_groups_reorder
accounts_create            accounts_update            accounts_set_archive
accounts_set_unarchive     accounts_set_change_group  accounts_set_switch_to_manual
accounts_remove_history
agent_runs_create
categories_create          categories_update          categories_merge
categories_reorder         categories_batch_delete
categorization_suggestions_apply
comments_create            comments_update            comments_set_like
comments_set_unlike
customers_create           customers_update           customers_merge
customers_set_external_ids customers_batch_delete
files_upload               files_update               files_batch_delete
notifications_create       notifications_set_read     notifications_set_unread
notifications_read_all     notifications_batch_delete
plan_items_create          plan_items_update
planned_transactions_create     planned_transactions_update
products_create            products_update            products_set_external_ids
subscription_events_create subscription_events_update
subscriptions_create       subscriptions_update
transactions_create        transactions_update        transactions_batch_edit
transactions_import        transactions_search        transactions_categorization_status
transactions_link_transfer transactions_unlink_transfer
transactions_create_counter_transaction
transactions_uncategorize  transactions_batch_delete
users_set_role
vendors_create             vendors_update             vendors_merge
vendors_set_external_ids   vendors_apply_default_categorization
vendors_batch_delete

Plus one destructive tool per resource delete endpoint:

accounts_delete            account_groups_delete      categories_delete
comments_delete            customers_delete           files_delete
integrations_delete        plan_items_delete          planned_transactions_delete
products_delete            subscription_events_delete subscriptions_delete
transactions_delete        users_delete               vendors_delete

Data-slice tools

One data_* tool per slice. The tool's input schema mirrors the slice's params, so an LLM can fill them correctly without guessing.

data_mrrData                    data_mrrAtDate
data_mrrByProduct               data_mrrChangeEvents
data_customerMrr                data_customerChanges
data_customerMonthlyData        data_monthlyData
data_cohorts                    data_retentionCohortDetail
data_cashFlowTimeSeries         data_cashFlowByCategory
data_forecastCashFlowTimeSeries
data_balanceTimeSeries          data_accountBalanceByAccount
data_accountBalanceKpis         data_balanceByCashType
data_profitLossData             data_revenueExpenses
data_revenueExpensesBar         data_revenueExpensesByCategory
data_topExpenseVendors          data_periodDetails
data_analytics

For details on what each slice returns, see Data slices.

Behavioural hints

Every tool sets the three MCP annotations hosted clients use for confirmation prompts:

ToolsAnnotations
Read toolsreadOnlyHint: true, destructiveHint: false
Write tools (create / update / batch)readOnlyHint: false, destructiveHint: false
Delete toolsreadOnlyHint: false, destructiveHint: true

openWorldHint is false everywhere. Classification follows the HTTP method, so the *_batch_delete tools (POST endpoints) count as non-destructive — clients that only confirm destructive calls won't prompt before them.

On this page