Navigation
Model Context Protocol

Run your accounting by talking to an AI

The Qontab MCP connector exposes 126 tools over your double-entry books. Connect Claude, Cursor, or any MCP client and record transactions, send invoices, reconcile your bank, run payroll and pull live reports — in plain language, with full accounting integrity preserved server-side.

In one paragraph

Qontab is an AI-native, double-entry accounting platform. Its MCP connector is a Model Context Protocol server that any AI assistant can connect to using a Qontab API key or OAuth. It offers 126 tools across accounts, transactions, invoicing, expense reports, travel, contacts, banking, documents, recurring entries, projects, assets, budgets and payroll. Read tools work on any plan; write tools need a paid plan; every call is scoped, role-checked and counted against a monthly allowance.

Your connection

Sign in to manage your API keys

Create, reveal once and revoke your MCP keys right here, once you’re signed in.


How the connector works

1 · You ask in plain language
“Record a €1,200 hosting expense paid from my EUR account on Monday.” The assistant turns intent into the right tool call.
2 · Qontab validates & posts
The MCP server checks your scope, role, plan and quota, validates the payload, resolves FX, and writes a balanced double-entry record.
3 · You get a real answer
Live P&L, balance sheet, who owes you money, what you owe the MRA — straight from the ledger, no export, no spreadsheet.

Crucially, the AI never touches your database directly. It calls named, typed tools over JSON-RPC; all the accounting rules — balanced entries, sequential numbering, immutable posting semantics, multi-tenant isolation — are enforced by Qontab, not the model. The assistant is a natural-language front-end; Qontab remains the system of record.


Compatible AI clients

Qontab exposes a remote MCP server with OAuth 2.1 (Dynamic Client Registration + PKCE) and Bearer keys, so any AI agent that supports custom MCP connectors can drive your books — no plugin to build.

Client / agentAuthHow to connect
ChatGPT (OpenAI)OAuth 2.1Settings → Connectors → Create (or Developer mode) → add a custom connector with the MCP server URL. ChatGPT runs the OAuth 2.1 flow; available on Plus, Pro, Business, Enterprise and Edu.
Claude.ai (Anthropic)OAuth 2.1Settings → Connectors → Add custom connector → paste the server URL. One-click OAuth login, with a company picker for multi-tenant accountants.
Claude DesktopOAuth 2.1 + BearerAdd a custom connector by URL (OAuth), or use the mcp-remote bridge in claude_desktop_config.json with a Bearer key.
Claude Code (CLI)OAuth 2.1 + Bearerclaude mcp add --transport http with a Bearer header, or let it complete the OAuth flow on first connect.
CursorOAuth 2.1 + BearerSettings → MCP → Add server (URL). Cursor handles the OAuth handshake, or you can pass an Authorization header.
VS Code — GitHub Copilot (agent mode)OAuth 2.1 + BearerAdd the server in mcp.json (or the MCP: Add Server command). Copilot agent mode supports remote MCP with OAuth.
Windsurf (Codeium)OAuth 2.1 + BearerCascade → MCP servers → add the URL; remote MCP with OAuth or Bearer.
Goose · Cline · Zed · other MCP clientsOAuth 2.1 + BearerAny client implementing the MCP remote/streamable-HTTP transport can connect with OAuth 2.1 or a Bearer key.

Quick start

Claude Code (CLI)

Claude Code speaks streamable-HTTP MCP natively — one line registers the server.

claude mcp add --transport http qontab https://api.qontab.com/mcp \
  --header "Authorization: Bearer YOUR_KEY"

Claude Desktop

Add this to claude_desktop_config.json. mcp-remote bridge injects the auth header and works on every Claude Desktop build.

{
  "mcpServers": {
    "qontab": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.qontab.com/mcp",
        "--header",
        "Authorization:Bearer YOUR_KEY"
      ]
    }
  }
}

Claude.ai (OAuth — no key to paste)

In Claude.ai → Settings → Connectors → Add custom connector, paste the server URL. Claude discovers the OAuth endpoints, you log in to Qontab, pick the company, and you’re connected. Tokens are short-lived and refreshed automatically.

https://api.qontab.com/mcp

Generate your key under Settings → API keys. read to let the AI look but not touch, or read_write to let the AI record.


Authentication & scopes

Two ways to connect

Bearer API key Authorization: Bearer qk_live_… into any MCP client. Works everywhere.

OAuth 2.1 — for Claude.ai / Claude Desktop custom connectors. PKCE, dynamic client registration, short-lived JWTs, and a consent screen that lets multi-company accountants pick a tenant.

Scopes

read every list_* / get_* tool.

write every mutating tool. A write call without a read_write key is refused with JSON-RPC -32604.

delete irreversible / destructive tools — your MCP client confirms before calling them.


The 126-tool catalogue

Grouped by domain. Read tools work on any plan; write tools need a paid plan; domains tagged Enterpriseor Pro require that tier.

Chart of accounts

Inspect and maintain the general-ledger account tree and the trial balance.

readlist_accountsList the chart of accounts, filterable by type and active status.
readget_accountFetch one account with its current balance.
readget_trial_balanceTrial balance as of any date.
writecreate_accountAdd a GL account.
writeupdate_accountRename or re-type an account.
deletedelete_accountSoft-delete an account.
deletehard_delete_accountPermanently remove an unused account.
Transactions & reports

The double-entry core: record journal entries and pull the three primary statements.

readlist_transactionsBrowse journal entries by type, status, date or text.
readget_transactionOne entry with every line.
readget_profit_lossP&L for any date range.
readget_balance_sheetBalance sheet as of a date.
writecreate_expenseRecord a cash outflow (DR category, CR bank).
writecreate_incomeRecord a cash inflow (CR revenue, DR bank).
writecreate_transferMove money between accounts, cross-currency with auto-FX.
writecreate_capital_contributionOwner injects funds (CR equity).
writecreate_opening_balanceSeed migration opening balances.
writecreate_employee_advanceCompany advances money to an employee.
writecreate_employee_repaymentEmployee repays the company.
writerecord_director_reimbursementSettle a director’s loan (1126).
writeedit_transactionEdit in place, draft or posted, keeping the sequential number.
writerecompute_fx_ratesRe-resolve historical FX on every line (dry-run option).
deletepost_transactionCommit a draft to the GL (irreversible state change).
deletedelete_transactionDelete a draft, or hard-delete a posted entry.
deletebulk_post_transactionsPost up to 500 drafts at once.
deletebulk_delete_transactionsHard-delete up to 500 entries.
Invoicing

Sales & purchase invoices, credit/debit notes, payments and FX gain/loss.

readlist_invoicesList invoices with base-currency totals.
readget_invoiceOne invoice with lines, payments and GL postings.
readlist_tax_ratesConfigured VAT / tax rates.
readlist_invoices_missing_issuanceIntegrity check for invoices missing their issuance entry.
writecreate_invoiceDraft an invoice.
writeupdate_invoiceEdit a draft or posted invoice.
writesend_invoicePost the invoice to the GL.
writerecord_invoice_paymentRecord a payment, cross-currency aware.
writeedit_invoice_paymentCorrect a payment in place.
writerepost_invoiceRegenerate a missing issuance entry.
deletecancel_invoiceHard-delete an invoice and its postings.
Expense reports

Notes de frais: the full submit → approve → pay lifecycle with receipts and duplicate auditing.

readlist_expense_reportsReports by status, employee, date.
readget_expense_reportOne report with lines and receipts.
readfind_expense_duplicatesAudit for duplicate claims vs bank / journal.
writecreate_expense_reportDraft a report.
writeupdate_expense_reportEdit fields or the full line set.
writesubmit_expense_reportSubmit for approval.
writeapprove_expense_reportApprove (auto-posts for director reports).
writeresubmit_expense_reportResubmit a rejected report.
writeattach_expense_report_line_documentAttach, replace or detach a receipt.
writereview_expense_report_duplicateRecord a duplicate verdict.
writerepoint_expense_report_payableMove a director payable leg to 1126.
writemark_expense_report_reimbursedFlag reimbursed without posting.
writebulk_expense_report_actionBulk submit / approve / delete (up to 200).
deletereject_expense_reportReject a submitted report.
deletepay_expense_reportPay and post the reimbursement entry.
deletedelete_expense_reportHard-delete a report.
Travel declarations (per-diem)

Multi-leg travel & per-diem declarations linked to their real transport/lodging expenses.

readlist_travel_declarationsDeclarations by status or text.
readget_travel_declarationOne declaration with legs and linked transactions.
writecreate_travel_declarationDraft a multi-leg per-diem claim.
writeupdate_travel_declarationEdit a draft declaration.
writesubmit_travel_declarationSubmit for approval.
writeapprove_travel_declarationApprove a submitted declaration.
writelink_travel_transactionAttach a transport/lodging expense to a trip.
deletepay_travel_declarationPay and post at the trip end-date FX rate.
deleteunlink_travel_transactionRemove a transaction link.
deletedelete_travel_declarationHard-delete a draft declaration.
Contacts

Customers, suppliers and employees.

readlist_contactsContacts by type, active flag or text.
readget_contactOne contact.
writecreate_contactAdd a customer / supplier / employee.
writeupdate_contactEdit contact fields.
deletedelete_contactHard-delete a contact.
Bank & reconciliation

Bank/cash accounts, balances and statement-to-ledger reconciliation.

readlist_bank_accountsAll bank / cash accounts.
readget_bank_accountOne account.
readget_bank_account_balanceCurrent balance.
readget_bank_reconciliationUnmatched statement vs journal lines.
writecreate_bank_accountCreate an account.
writeupdate_bank_accountEdit account details.
writematch_bank_transactionPair a statement line to an entry.
writeauto_match_bank_transactionsAuto-match by amount and date.
writecomplete_bank_reconciliationFinalise a reconciliation.
deletedelete_bank_accountDelete an empty account.
deleteunmatch_bank_transactionUndo a match.
Documents

Receipts and attachments linked to journal entries (export & bulk download).

readget_documentDocument metadata.
readlist_transaction_documentsDocuments linked to an entry.
readexport_documentsList / ZIP-export attachments with download URLs.
writeattach_document_to_transactionLink a document to an entry.
deletedelete_documentHard-delete a document.
Recurring transactions

Templates that generate repeating entries on a schedule.

Pro
readlist_recurringRecurring templates.
readget_recurringOne template.
readlist_upcoming_recurringTemplates due within N days.
writecreate_recurringCreate a template.
writeupdate_recurringEdit a template.
writegenerate_recurringGenerate the next entry now.
deletedelete_recurringDelete a template.
Projects

Cost & revenue tracking and profitability per project.

Enterprise
readlist_projectsProjects by status.
readget_projectOne project.
readget_project_profitabilityRevenue, cost and margin.
writecreate_projectCreate a project.
writeupdate_projectEdit a project.
deletedelete_projectDelete a project.
Fixed assets

Asset register, depreciation booking and disposals.

Enterprise
readlist_assetsAssets by category / status.
readget_assetOne asset with its depreciation schedule.
writecreate_assetRegister an asset.
writeupdate_assetEdit an asset.
deletebook_asset_depreciationPost a month’s depreciation.
deletedispose_assetSell or scrap an asset.
deletedelete_assetDelete an asset.
Budgets

Budgets and budget-vs-actual analysis.

Enterprise
readlist_budgetsAll budgets.
readget_budgetOne budget with monthly lines.
readget_budget_vs_actualBudget vs actual for a range.
writecreate_budgetCreate a budget.
writeupdate_budgetEdit a budget.
writeupsert_budget_linesInsert / update monthly lines.
deletedelete_budgetDelete a budget.
Payroll

Employees, monthly payroll runs and payslips with Mauritius statutory (PAYE / CSG / NSF) and MRA remittance.

Enterprise
readlist_employeesEmployees, optionally with balance.
readget_employeeOne employee with salary structure.
readget_employee_balanceNet owed to / by an employee.
readlist_employee_ledgerJournal lines posted to an employee.
readlist_payroll_runsMonthly runs.
readget_payroll_runOne run with payslips + MRA summary.
readlist_payslipsPayslips by month / status / employee.
readget_payslipOne payslip with all lines.
readget_payslip_pdfSigned download of the official PDF.
writecreate_employeeHire an employee.
writeupdate_employeeChange role / salary.
writecreate_payroll_runDraft a monthly run (auto-generates slips).
writecreate_payslipFree-form payslip (auto-posts the entry).
deleteprocess_payroll_runPost the consolidated payroll entry.
deletedelete_employeeSoft-delete an employee.
deletedelete_payslipDelete a standalone payslip + its entry.
Companies

For accountants connected to several tenants — switch which company the other tools operate on.

readlist_companiesCompanies the connected user can access.
readset_active_companySwitch the active company for subsequent calls.

Composite tools (recipes)

Four tools collapse a common multi-step flow into one call, with compensation semantics so a half-finished workflow never corrupts your books. Prefer them over manual sequences.

record_paid_invoice
create_invoice → send_invoice → record_invoice_payment, in one call. Stops after sending if you omit the payment.
process_expense_report
create → submit → approve → pay a note de frais, with optional receipt attachments. Stops at the stage you ask for.
import_bank_and_reconcile
Auto-match a statement, then complete the reconciliation if everything matched — otherwise returns the leftovers.
record_expense_with_receipt
create_expense + attach an existing document, in one call.

Plans & quotas

Every tools/call — read or write — consumes one unit of the monthly MCP allowance. A tier-gated or exhausted call returns -32603 with the tier that unlocks it.

PlanMCP callsAccess
Free100 / monthRead tools only
Basic2,000 / monthRead + standard write
Pro20,000 / monthBasic + recurring templates
EnterpriseUnlimitedEverything (+ assets, budgets, projects, payroll)

Case studies — doing real accounting with AI

Six concrete ways people run and pilot their company with Qontab + an AI assistant. Each shows what you say, and which tools fire behind the scenes.

Close the month from your chat window
Founder · solo / no in-house accountant

“It’s the end of June. Reconcile my main EUR account against the statement I just uploaded, then give me the P&L and balance sheet for the fiscal year.”

import_bank_and_reconcile auto-matches the statement; anything left over comes back for you to confirm with match_bank_transaction. Then get_profit_loss and get_balance_sheet render the two statements — already in your base currency, FX resolved at each entry’s date.

import_bank_and_reconcileget_profit_lossget_balance_sheet
Invoice a client and get paid — one sentence
Freelancer / agency

“Invoice Acme Corp €4,500 for May consulting, VAT 15%, then mark it paid into my Revolut account on the 3rd.”

The composite record_paid_invoice drafts the invoice, posts it to the GL with the right VAT, and records the payment to the chosen bank — with compensation semantics so you never end up with a paid invoice that has no issuance entry.

record_paid_invoicelist_tax_rateslist_bank_accounts
Process a stack of expense notes with receipts
Operations / office manager

“Here are 8 receipts from the team. Create the expense reports, attach each receipt, approve them and pay them from petty cash.”

process_expense_report runs create → attach → submit → approve → pay for each one, and find_expense_duplicates flags anything that looks like it was already claimed or already on the bank feed (same amount ±2%, within 14 days).

process_expense_reportfind_expense_duplicatespay_expense_report
Run Mauritius payroll and see what you owe the MRA
SME with staff in Mauritius

“Draft the June payroll run for all active employees, then tell me the PAYE, CSG and NSF I have to remit this month.”

create_payroll_run generates each payslip from the salary structure and Mauritius statutory rules; get_payroll_run returns the consolidated MRA summary (PAYE / CSG / NSF) so you know the remittance before you process_payroll_run.

create_payroll_runget_payroll_runprocess_payroll_run
Pilot the business, not just the books
Director / CFO

“Compare this quarter’s revenue and margin to budget, show me the three projects eating the most cost, and which customers still owe me money.”

get_budget_vs_actual, get_project_profitability and list_invoices (filtered to unpaid) turn the ledger into a management dashboard you can interrogate conversationally — no report builder, no spreadsheet export.

get_budget_vs_actualget_project_profitabilitylist_invoices
Let your accountant work across all their clients
External accountant / bookkeeper

“Switch to Beta Ltd, post the supplier invoices I’m pasting, then switch back to Acme and pull its trial balance.”

list_companies and set_active_company let one connected user move between every tenant they’re a member of, so an accountant runs all their clients’ books from a single AI session over OAuth.

list_companiesset_active_companyget_trial_balance

Error handling

JSON-RPC codeMeaning
-32602Validation failed — the payload didn’t match the tool’s schema (data.issues lists why).
-32604Insufficient scope — a write tool was called with a read-only key.
-32605Role denied — your RBAC role can’t perform this action.
-32603Plan/quota/feature — tier too low or monthly allowance exhausted (data.upgradeRequired names the tier). Surface it as an upgrade prompt; don’t retry.

Frequently asked questions

What is the Qontab MCP connector?
It is a Model Context Protocol (MCP) server that exposes 126 tools over your Qontab books. Any MCP-compatible AI assistant — Claude Desktop, Claude.ai, Claude Code, Cursor, and others — can connect to it and read or write your double-entry accounting in plain language, while every action is still validated, scoped and quota-limited server-side.
Which AI clients can connect to Qontab?
Any client that speaks remote MCP over streamable HTTP. Because Qontab supports OAuth 2.1, that includes ChatGPT (OpenAI) custom connectors, Claude.ai, Claude Desktop, Claude Code, Cursor, VS Code (GitHub Copilot agent mode), Windsurf, and others. Bearer API keys also work everywhere a key can be pasted.
Is it safe to give an AI write access to my accounting?
Read and write are separate scopes. A read key can never mutate anything. Write tools require a read_write key (or the qontab:write OAuth scope), destructive tools are flagged so your client asks before calling them, and composite tools roll earlier steps back if a later one fails. Every call is also RBAC-checked and quota-limited.
Does it cost extra?
No separate add-on. MCP calls draw on a monthly allowance tied to your plan: 100 on Free, 2,000 on Basic, 20,000 on Pro, and unlimited on Enterprise. Write access requires a paid plan; advanced domains (assets, budgets, projects, payroll) require Enterprise.
How is multi-currency handled?
Foreign-currency amounts are resolved to your base currency at each entry’s date using historical FX rates. create_transfer can auto-convert across currencies, and recompute_fx_rates re-resolves the rates on demand.

Point your AI at your books

Create a free Qontab account, generate a key, and connect in under five minutes.