MCP server · NBB / CBSO

Belgian annual accounts for your AI assistant

Every annual account filed with the National Bank of Belgium, as structured JSON with official rubric codes and labels translated into Dutch, French, German or English. Connect it once and ask your assistant about any Belgian company in plain language.

No card. The free plan includes 10 tool calls per month.

How it works

  1. Get a key Sign in with your email address — no password to invent. Your account page issues an API key starting with nbb_live_.
  2. Add the connector Point your MCP client at https://test.nbb-mcp.be/mcp and send the key as a bearer token. There is a page per client.
  3. Ask "What did Colruyt's balance sheet look like in 2023?" The assistant resolves the name to an enterprise number, fetches the filing and reads it back.

Three tools, that is the whole API

search_company

Resolve a company name to its Belgian enterprise (KBO/BCE) number, or list the names registered for a number.

counts against quota

get_annual_accounts

Fetch the annual accounts a company filed with the NBB: balance sheet, income statement, appropriation of results, social balance sheet and notes, each line with its official rubric code and a translated label.

asynchronous counts against quota

get_operation

Check whether an asynchronous request has finished and collect its result.

free — no quota

Full parameter tables, the polling pattern and the error codes are in the documentation.

What comes back

One JSON shape for every filing, whatever taxonomy generation it was filed under: the balance sheet, income statement, appropriation of results, social balance sheet and the notes. Each line carries its official rubric code (20/28, 9900), the translated label, its nesting level, and the current and previous period figures.

Code Label (en) Current Previous
20/58 Total assets 4 512 883 000 4 233 015 000
10/15 Equity 2 108 774 000 1 987 402 000
9900 Operating result 331 402 000 298 771 000

Illustrative figures. Nothing is silently dropped: facts we cannot map to a rubric code come back in unmapped_facts, and every response carries a meta block naming the data source, taxonomy version and any caveats.

Pricing

Free

€0

  • 10 tool calls per month
  • All four label languages
  • No PDF filings (LLM reading)
Start free

Paid

€15 / month excl. VAT

  • 2 000 tool calls per month
  • 50 PDF filings read by LLM per month
  • Everything in Free
See the details

Questions

What is an MCP server, and do I need one?

MCP (Model Context Protocol) is the standard way an AI assistant calls tools that live somewhere else. If you use Claude, ChatGPT, Claude Code or Codex CLI, your client can connect to a remote MCP server over HTTP and then use its tools while answering you. This is such a server: you add a URL and a key once, and your assistant gains the ability to look up Belgian annual accounts. Nothing to install and nothing to run.

Which data exactly, and where does it come from?

The annual accounts as filed with the Central Balance Sheet Office (CBSO) of the National Bank of Belgium, read from its authentic-data web service — the legal source, not a scrape. Company-name lookup uses the KBO/BCE open-data denomination file, so legal names, abbreviations and commercial names in every language all resolve to the same enterprise number.

Which years are available?

Filings exist from roughly 1978 onwards, but machine-readable ones start much later: deposits filed in the standardised models come back as structured data, and everything else is a PDF. Recent years (roughly 2016 onwards) are almost always structured; older ones are mixed. When a filing is PDF-only, the response says so with the error code pdf_fallback_required and the paid plan can read it with an LLM into the same JSON shape.

Which languages?

Dutch, French, German and English. The figures are identical in all four — only the labels differ, and they come from the National Bank's own label linkbases rather than from a machine translation. If a label is missing in the language you asked for, the response falls back to the filing's own language and records that in meta.

How fresh is it?

Filings are fetched from the National Bank on request, so a deposit is available as soon as the NBB serves it. Results are cached per deposit and never expire, because a filed annual account is immutable — a correction is a new deposit with its own reference, and that is what the server picks up. The company-name index is refreshed from the monthly KBO open-data publication.

Is a cached call still charged?

A tool call is a tool call, cached or not — but polling is free, and the expensive part (LLM reading of a PDF filing) is charged once per filing ever, to whoever triggered it first. Everybody afterwards gets it from cache without touching the PDF quota.

Ready?

Sign in with your email address and copy your key. It takes a minute.