manager-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MANAGER_API_KEY | Yes | Access token for the Manager.io API, sent as X-API-KEY | |
| MANAGER_API_URL | Yes | The base URL of the Manager.io API, e.g. http://127.0.0.1:55667/api2 | |
| MANAGER_MCP_WRITE_SCOPES | No | Comma-separated write scopes to enable create/update tools. Empty means no writes. | |
| MANAGER_MCP_DELETE_SCOPES | No | Comma-separated delete scopes to enable delete tools. Never implied by write scopes. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_resourcesB | List curated Manager.io capabilities. Default is read-only (30 tools). Task tools register when write scopes match; CRUD tools are deprecated unless raw scope is set. |
| get_server_infoA | Identify exactly which manager-mcp process you're connected to: package version, local source path, git commit (+ dirty flag), pid, process start time, registered tool count/names, transport, and effective scopes. Read-only, no Manager API call. Run this after any source edit + reload to confirm the new code is actually live -- pid and process_started_at change on a real restart even when git_sha does not (uncommitted edits), which is the reliable signal. |
| list_recordsB | Search/page a curated collection. Core: customers, suppliers, sales_invoices, purchase_invoices, chart_of_accounts, bank_accounts. Also writable domains when present in discovery (e.g. receipts, payments, sales_quotes). bank_accounts is the searchable collection; use bank_balances for snapshot balances. |
| get_recordA | Fetch one collection record by GUID via Manager form endpoint (e.g. /customer-form/{key}). chart_of_accounts has no single form. For bank/cash account detail use resource=bank_accounts (not bank_balances). |
| get_fixed_assetC | Fetch one Fixed Asset form by key (read-only). |
| aged_receivablesA | CURRENT customer balances only (read-only). Not an aged report and not as at any past date; rejects from_date/to_date. For a labelled as-at reconstruction use reconstructed_aged_receivables. |
| aged_payablesA | CURRENT supplier balances only (read-only). Not an aged report and not as at any past date; rejects from_date/to_date. For a labelled as-at reconstruction use reconstructed_aged_payables. |
| bank_balancesA | CURRENT bank/cash balances only (read-only; rejects dates). For search/drill-in of individual accounts use list_records/get_record on bank_accounts. |
| trial_balanceA | Raw /trial-balance-transactions rows (read-only). NOT Manager's Trial Balance report and no account per row; see reconstructed_trial_balance. |
| profit_and_lossA | Raw /profit-and-loss-statement-transactions rows (read-only). NOT Manager's Profit and Loss Statement; see reconstructed_profit_and_loss. |
| balance_sheetB | Raw /balance-sheet-transactions rows (read-only). NOT Manager's Balance Sheet and no account per row; see reconstructed_trial_balance. |
| tax_summaryA | Raw /tax-summary-transactions rows (read-only). No date support and not a VAT return; for dated tax rows use ledger_transactions with tax_only=true. |
| find_recordsA | Exact-match structured filter over a collection (client-side; Manager's own query API has no field-value filter, only term/sort/paging). filters is {field_name: expected_value}; every field must match exactly. Never does fuzzy/partial/amount-only matching. |
| find_broken_invoice_referencesA | Payments/receipts whose structured AR/AP invoice-Key line reference does not resolve to any current invoice -- the general form of a 'missing invoice' (e.g. a supplier payment structurally allocated to a Purchase Invoice Key that doesn't exist yet). Never uses the transaction's free-text description to decide this. |
| find_unallocated_transactionsC | Receipts/payments with no AR/AP invoice allocation on any line. |
| find_duplicate_transactionsA | Exact-match duplicate detector: Customer/Supplier + Reference + Date + total + line signature must ALL match. Partial matches are returned as unresolved, never flagged as duplicates. |
| verify_invoice_balanceB | Self-computed invoice balance: invoice total (its own Lines) vs. the sum of every receipt/payment line that structurally allocates to it. Does not trust any computed 'balance' field Manager may or may not expose on the form response. |
| account_ledgerB | Every structured Lines[] entry across all transaction types whose Account matches the given chart-of-accounts key -- the closest available view to a per-account general ledger (Manager exposes no native GL-by-account endpoint). |
| bank_activityB | Money-in/out for one bank/cash account, assembled from receipts (ReceivedIn), payments (PaidFrom) and transfers referencing it. Manager has no separate 'bank transaction' entity to read directly. |
| find_suspense_candidate_accountsA | Chart-of-accounts rows whose structured Name matches common placeholder-account naming (suspense, uncategorised, clearing, ...). Candidates for human confirmation only -- never treated as the suspense account automatically, and never based on any transaction's free-text description. |
| general_ledger_summaryA | Single-pass general-ledger consistency check: sums every Lines[] Amount (or Debit-Credit) grouped by Account across all transaction types. overall_net should be ~0 in a balanced ledger; per_account_net surfaces accounts worth investigating. |
| reconcile_periodC | Read-only PERIOD reconciliation report composed entirely from Manager's own transaction data (no external system is consulted). Every exception carries exact Manager Keys. P&L/Balance Sheet/VAT sections surface raw transaction feeds with an explicit notice where Manager API2 does not expose computed report totals -- never a fabricated total. |
| list_incomplete_reconstructionsA | Invoice-reconstruction attempts (propose_*invoice_reconstruction / apply*_invoice_reconstruction) that started but have not completed: the created invoice's key if one exists, which cited transactions have been repointed, and which remain. Calling apply again with the same proposal_token resumes from exactly this state rather than starting over. Reads only the local audit log; makes no Manager API call. |
| manager_report_catalogueA | Read-only catalogue of Manager report types: which API representation exists (settings only, raw feed, current state), which date parameters exist, which views are application-only, and which MCP tool covers each. Also classifies the legacy report tools (current state vs raw feed vs reconstruction). |
| get_report_definitionA | Read-only GET of a stored Manager report definition (settings only, never calculated rows). report_type is e.g. 'aged-receivables' or 'trial-balance' (without '-form'); key is the definition GUID. Manager has no list endpoint for definitions, so the key must be known. Never creates or edits definitions. |
| ledger_transactionsA | Historical transaction data from Manager's account-level /transactions ledger (GET only). Every row names its account, type, counterparty, tax fields, debit, credit and signed amount (debit positive). Manager ignores dates on this endpoint, so from_date/to_date (YYYY-MM-DD) are filtered here; the full ledger is fetched and completeness reported. Results page with skip/limit (default 500, max 5000). Not a finished report; not an as-at balance. |
| reconstructed_trial_balanceA | RECONSTRUCTED trial balance from the /transactions ledger as at a date (authoritative: false; not Manager's Trial Balance). Balance sheet accounts are cumulative to as_at; P&L accounts cover period_start..as_at (default 1 Jan of the as_at year, an assumption); earlier P&L is one prior-periods line. Reports whether debits equal credits. |
| reconstructed_profit_and_lossA | RECONSTRUCTED profit and loss by account for a period from the /transactions ledger (authoritative: false; not Manager's Profit and Loss Statement, no group layout). |
| reconstructed_aged_receivablesA | RECONSTRUCTED aged receivables as at a date from the /transactions ledger (authoritative: false; NOT Manager's Aged Receivables report). Ages by transaction date with oldest-first allocation; returns the control account total and whether party balances sum to it. Never treat as official. |
| reconstructed_aged_payablesA | RECONSTRUCTED aged payables as at a date from the /transactions ledger (authoritative: false; NOT Manager's Aged Payables report). Same method and caveats as reconstructed_aged_receivables. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 30 tools
Several tools have overlapping purposes, especially paired raw vs. reconstructed reports (trial_balance vs reconstructed_trial_balance, aged_receivables vs reconstructed_aged_receivables) and record search/filter tools (list_records vs find_records). Descriptions explicitly clarify boundaries, but an agent must read carefully to avoid misselection.
Nearly all tools use snake_case; action tools follow a verb_noun pattern (list_, get_, find_, verify_, reconcile_) while report and analytic tools use noun phrases, and reconstructions use a consistent reconstructed_ prefix. This is mostly predictable with minor deviations from a single pattern.
30 tools is heavy for the domain; many tools are variations on the same report (raw feed vs reconstructed) which inflates the surface. While a broad accounting API could justify many tools, the overlapping report pairs suggest over-scoping.
The surface is rich for read-only analysis (ledgers, reconciliations, report reconstructions, anomaly finders), but it lacks any create/update/delete tools for core accounting entities like customers, invoices, or payments. If the server is intended as read-only this is a reasonable gap; if full Manager.io lifecycle is expected, it is a notable omission.