fortnox-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for the streamable HTTP server (`node dist/http.js`). | 8080 |
| FORTNOX_SCOPES | No | Space-separated scopes requested at login. | companyinformation bookkeeping invoice customer supplierinvoice supplier article payment settings |
| FORTNOX_CLIENT_ID | No | Client ID from your app in the Fortnox Developer Portal. | |
| FORTNOX_TOKEN_FILE | No | Path to the token file where OAuth tokens are saved. | ~/.config/fortnox-mcp/tokens.json |
| FORTNOX_ACCESS_TOKEN | No | A ready access token to use instead of the token file; no refresh. | |
| FORTNOX_ACCOUNT_TYPE | No | Set to `service` for a service account (approver must be a system administrator). | |
| FORTNOX_REDIRECT_URI | No | OAuth redirect URI; must match the portal exactly. | http://localhost:8765/callback |
| FORTNOX_CLIENT_SECRET | No | Client secret from your app in the Fortnox Developer Portal. | |
| FORTNOX_ENABLE_WRITES | No | Set to `true` to register the draft-only write tools. | false |
| FORTNOX_TOKEN_FROM_HEADER | No | For the HTTP server: set to `true` so each request carries its own token in the `X-Fortnox-Access-Token` header. | false |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_company_infoA | Who the connected Fortnox company is (name, org number, address, VAT number), its financial years, and the locked period (the date through which the books are closed). Call this first to orient. |
| list_financial_yearsA | All financial years (räkenskapsår) with id and date range. The id is what SIE and voucher calls take. |
| list_invoicesA | Customer invoices (kundfakturor), newest first unless sorted otherwise. Filter by status (unpaid, unpaidoverdue, fullypaid, unbooked, cancelled), invoice date range and customer. Total includes VAT; Balance is the amount still unpaid according to Fortnox. |
| get_invoiceB | One customer invoice in full: rows, Net (excl. VAT), VAT, Balance, due date, references, booked/sent state. |
| list_invoice_paymentsB | Payments registered against customer invoices (inbetalningar). Optionally for one invoice. |
| list_supplier_invoicesB | Supplier invoices (leverantörsfakturor). Filter by status (unpaid, unpaidoverdue, fullypaid, unbooked, cancelled, pendingpayment, authorizepending = awaiting attest), date range and supplier. |
| get_supplier_invoiceA | One supplier invoice in full, with its accounting rows. given_number is Fortnox's own serial number for it. |
| list_customersC | Customer register. Search by name, org number or email. |
| get_customerB | One customer in full: addresses, terms of payment, VAT type, default references. |
| list_suppliersC | Supplier register. |
| get_supplierB | One supplier in full, including bank details as registered in Fortnox. |
| list_articlesC | Article (product/service) register with prices and stock. |
| list_ordersC | Customer orders. Filter invoicenotcreated shows orders not yet invoiced. |
| list_offersD | Quotes/offers (offerter). |
| list_projectsC | Projects, used to tag invoices, vouchers and costs. |
| list_cost_centersC | Cost centers (kostnadsställen). |
| list_accountsB | Chart of accounts (kontoplan) for a financial year, with opening (BalanceBroughtForward) and closing (BalanceCarriedForward) balances. |
| list_vouchersA | Vouchers (verifikationer) by date range or series. Rows are not included; use get_voucher for one, or the report tools for totals. |
| get_voucherC | One voucher with its debit/credit rows. |
| income_statementA | Profit and loss for any date range, grouped by BAS account class with per-account lines: revenue, goods, external costs, personnel, depreciation, financial items, tax. Revenue positive, costs negative. Built from the SIE export, so it matches the books exactly, including manual vouchers. |
| balance_sheetB | Assets, equity and liabilities on a date, per account, plus the year's result not yet closed to equity. Cash and bank are the 19xx accounts. |
| account_totals_by_monthA | Monthly net movement for an account range, e.g. 3000–3999 for revenue per month, 5000–6999 for external costs, 7000–7699 for personnel, 1930–1930 for the business account. Revenue accounts (3xxx+) are sign-flipped so income reads positive. |
| receivables_agingA | Unpaid customer invoices bucketed by days past due (not due, 1–30, 31–60, 61–90, 90+), per customer, with the most overdue invoices. |
| payables_agingB | Unpaid supplier invoices bucketed by days past due, per supplier, with the most overdue. |
| list_endpointsA | Search the read-only Fortnox endpoints fortnox_get can call (assets, contracts, employees, salary, time, warehouse, price lists, currencies, …). Returns path templates and summaries. |
| fortnox_getA | GET a Fortnox API path that matches one of the templates from list_endpoints, with {placeholders} filled in, e.g. /3/assets or /3/employees/12. Read-only: nothing that sends, prints or changes data is reachable. |
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 26 tools
Most tools target distinct resources or actions, with clear list-vs-get pairs for invoices, suppliers, customers, vouchers, and supplier invoices. The generic list_endpoints/fortnox_get pair overlaps somewhat with the specific list/get tools, which could cause occasional misselection, but descriptions distinguish their intended use.
The resource tools consistently use snake_case with list_* for collections and get_* for single records, which is predictable. Report tools use noun phrases such as income_statement and balance_sheet, and fortnox_get uses a provider-prefixed verb-last form, creating minor deviations from the dominant pattern.
26 tools is on the heavy side for an MCP server, and the generic fortnox_get tool means some specific list/get tools could be consolidated. However, the broad Fortnox accounting domain legitimately covers many resources, so most tools have a defensible place.
The server provides broad read-only coverage across core accounting resources, including registers, transactions, reports, aging, and a generic read-only endpoint fallback. Some resources lack dedicated get/list tools, but agents can usually work around this via list_endpoints/fortnox_get; write operations are absent but appear intentionally out of scope.