Quick start

One tool set, two front doors: a REST API and an MCP server. Both use the same API key and the same credits. See the tools reference, countries and data sources and pricing.

REST

Create an API key in the dashboard. New accounts get free credits. Then:

curl -H "Authorization: Bearer brk_..." https://api.balkanreg.app/v1/RO/companies/14399840

The answer (excerpt):

{
  "country": "RO", "registry_id": "14399840",
  "name": "DANTE INTERNATIONAL SA", "legal_form": "SOCIETATE COMERCIALĂ PE ACŢIUNI", "status": "active",
  "registered_at": "2002-01-23", "registration_number": "J2002000372404",
  "vat": {"number": "RO14399840", "registered": true, "since": "2002-02-01"},
  "nace_code": "4754",
  "flags": {"inactive": false, "e_invoice_registered": false},
  "meta": {"source": "anaf_v9", "fetched_at": "...", "data_as_of": "2026-10-04", "cached": false, "credits_charged": 1}
}

Every answer carries meta.source, meta.fetched_at and meta.data_as_of. meta.cached tells a cached answer from a live one; a cached answer costs the same and is never presented as live. Errors are application/problem+json.

MCP

The MCP endpoint is https://api.balkanreg.app/mcp (streamable HTTP). Authenticate with the same key in the Authorization: Bearer brk_... header on every request.

Claude Code:

claude mcp add --transport http balkanreg https://api.balkanreg.app/mcp --header "Authorization: Bearer brk_..."

Cursor, .cursor/mcp.json:

{
  "mcpServers": {
    "balkanreg": {
      "url": "https://api.balkanreg.app/mcp",
      "headers": { "Authorization": "Bearer brk_..." }
    }
  }
}

Claude Desktop currently needs the mcp-remote bridge for a remote server with an Authorization header (requires Node 18 or newer), claude_desktop_config.json:

{
  "mcpServers": {
    "balkanreg": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.balkanreg.app/mcp", "--header", "Authorization: Bearer brk_..."]
    }
  }
}

Then ask: "Look up Romanian company 14399840." The server card is at https://api.balkanreg.app/mcp/server-card.

Pay per call without an account (MPP)

On REST only, an agent with no account can pay for a single call with a Stripe shared payment token over the HTTP Payment authentication scheme (Machine Payments Protocol). MCP does not offer it: MCP keeps API-key auth. A valid API key always wins.

  • Call a tool route without an Authorization header. A valid request is answered 402 with a WWW-Authenticate: Payment ... challenge for this exact tool, these arguments and this price, valid for 5 minutes. Nothing is charged or written yet.
  • Create a shared payment token for the amount in the challenge and repeat the same request with Authorization: Payment <credential>. A challenge can be used once (a second use is 409).
  • The answer is 200 with a Payment-Receipt header. A not-found answer is charged and carries the receipt too. If the call fails after the charge, the payment is refunded automatically.
  • Price: the credit price of the tool, with a minimum card charge of EUR 0.50, so a 1-credit call costs EUR 0.50 this way. The challenge states the numbers. Prepaid credits from an API key have no minimum.

Good to know

  • The country code is explicit in every call (RO); nothing is guessed.
  • Limits: see fair use.