AccMCP

Accounting MCP

Your accounting data, in every AI assistant

Point ChatGPT, Claude or any MCP client at one governed endpoint and ask in plain language. Every answer is resolved against your own catalogs first, so the assistant reports what it cannot compute instead of inventing it.

  • Read-only access
  • OAuth 2.1, no pasted tokens
  • Multi-company, multi-year

Your MCP endpoint

MCP spec 2025-11-25

https://api.accmcp.com/mcp/v1

Authorise once with OAuth 2.1

Point any of these at it

  • ChatGPTMCP client
  • ClaudeMCP client
  • GrokMCP client
  • Any MCP clientBearer header
69 governed tools10 capability areas

Connect it

Three steps, and your assistant can read the books

Setup is an authorisation, not an integration project. Pick the assistant you already use — the endpoint is the same one for all of them.

ChatGPT discovers the connection through client identity metadata (CIMD) and links using your existing AccMCP account.

Three steps, once

  1. Add a connector and search for AccMCP
  2. Approve the OAuth consent screen
  3. Ask your first accounting question
ChatGPT integration details
MCP endpoint
https://api.accmcp.com/mcp/v1

Why the number holds

Three gates a question passes before it becomes a number

Scope, then vocabulary, then whether the data can actually support the calculation. Each gate can stop a question — and what it does when it stops is the part worth reading.

  1. Gate

    Whose books, and which year

    Before anything is computed, the question is bound to one company and one financial year. Names in your question — a customer, a product group, a branch — are resolved to real records in that scope.

    Implemented by

    busy_list_companiesbusy_resolve_entity

    If it cannot

    An unrecognised name is reported as unmatched rather than guessed at.

  2. Gate

    Words that mean something here

    Every metric and every dimension in a question is looked up in your catalogs. "Net sales" is not interpreted — it resolves to the formula implemented for your company, or it does not resolve at all.

    Implemented by

    busy_get_metric_catalogbusy_get_dimension_catalog

    If it cannot

    A term outside the catalog is refused, not approximated with a similar one.

  3. Gate

    Whether the data can support it

    A term being in the catalog is not the same as it being computable. Margin needs a cost source; if that contract is not present for your company and year, the calculation is not attempted.

    Implemented by

    busy_get_profitability_readiness

    If it cannot

    The assistant names the missing source instead of returning a plausible number.

And the books underneath are your books

Registers, ledgers and signed sales returns, modelled with Indian financial-year (April–March) and GST semantics — the vocabulary your accountant already uses, reconciling to what Busy shows.

Every answer can report how fresh the data behind it is.busy_get_analytics_freshness

Metric catalog 2.26

Built for agents

The same rules with nobody in the loop

In a conversation there is a person to notice a wrong answer. In an agent loop there is not — so the useful property is not what the tools let a script do, it is what they still will not let it do.

61canonical analysis goals
  • State the goal, not the tool

    An agent names one analysis goal. The planner maps it to a curated tool, validates the dimension against that tool's contract, and says which one to call — so your agent code never carries a hand-maintained list of which tool answers what.

    Implemented by

    busy_plan_accounting_query

  • Narrow by default

    The planner also returns result-shape guidance, which keeps aggregate questions on server-computed analytics instead of pulling a whole register down to group it client-side. An unattended loop does not quietly turn one number into a full table scan.

    Implemented by

    busy_drilldown_metricbusy_top_entities_by_metric

  • A file when an answer is not enough

    Two tools produce downloadable register exports as private files. They are the only two of the sixty-nine that create anything at all, and what they create is a file you receive — never a change to your books.

    Implemented by

    busy_export_sales_registerbusy_export_purchase_register

  • Across companies, only where you said so

    A ledger in one company is linked to the same customer in another only through explicit, tenant-owned mappings you approved. Similar names are never treated as the same party — which matters most when the thing asking is a script.

    Implemented by

    busy_get_canonical_customer_links

None of this relaxes when nobody is watching

  • Still read-only

    67 of the 69 tools only read. Nothing an agent can call writes to Busy.

  • Tenant is not an argument

    The authenticated token decides whose data a request sees. No user id is ever passed in a tool call, so there is nothing for an agent to get wrong.

  • Consent names the client

    OAuth 2.1 consent shows the verified client name before access is granted, and tokens are never pasted into a conversation.

Frequently asked questions

Which AI clients are supported?

ChatGPT and Claude are supported today, along with any other MCP-compatible client that can use a bearer-token header.

Does it ever write to Busy?

No. Every tool is read-only except the sales and purchase register export tools, which only create private downloadable files.

Can I use it with multiple companies?

Yes — every tool is scoped by an exact company code and financial year, and the discovery tool lists every scope your account can access.

Connect your first assistant today