Skip to content

Developers

Connect your AI

Ask your assistant about your invoices, your taxes or your pending signatures, using the data BMC manages for your company and only the access you choose.

What you get

Your AI assistant (ChatGPT, Claude or another) connects to your BMC account and looks up your data when you ask, with no file exports and no copying figures. For example:

  • "Which sales invoices did we issue in September, and which are still unpaid?"
  • "How is our VAT going this year, quarter by quarter?"
  • "Which tax returns are due this quarter, and which have been filed?"
  • "Which documents are still waiting for signature, and who has not signed yet?"

The assistant only sees and does what you allow when you connect it, and BMC checks that permission on every request. You can cut the connection at any time.

Before you start

  1. API access enabled for your company. BMC turns it on. If you do not see the Developers section in the client area, write to plataforma@bm.consulting with the company name.
  2. Be the holder or an administrator of that company in the BMC client area.
  3. A compatible assistant, as listed in the table below.

Which assistant, and how it connects

AssistantHow it connectsWhat you need
ChatGPTYou sign in to BMC from ChatGPT (OAuth)ChatGPT Business, Enterprise or Edu, on the web. On Pro, read tools only.
Claude (web and Desktop)You sign in to BMC from Claude (OAuth)Any Claude subscription. On Free, one custom connector.
Claude CodeOAuth or tokenClaude Code installed.
Gemini CLIToken or OAuthGemini CLI installed.
CursorTokenCursor installed.
Your own agentsTokenThe OpenAI or Anthropic API.
n8n, Make and ZapierToken and webhooksAn account on the tool. For webhooks, a public https address.

A "token" is a bmc_live_… key you create in the client area (how to create a token). With OAuth you copy no key: you sign in to BMC and choose what the assistant can do.

ChatGPT

It works on ChatGPT Business, Enterprise and Edu, on the web (chatgpt.com), not in the mobile app. On ChatGPT Pro, OpenAI only allows read tools. On ChatGPT Plus, OpenAI does not confirm availability today. In a workspace, developer mode depends on what its administrator allows.

  1. In ChatGPT, open Settings › Security and login and turn on Developer mode.
  2. Go to chatgpt.com/plugins and click the + button.
  3. Enter a name (for example, BMC) and a description. Under Connection, paste the address https://app.bm.consulting/mcp and, if asked, choose OAuth.
  4. Create the connection. BMC opens so you can sign in and authorise it (the authorisation step).
  5. ChatGPT shows the tools it found. Start a new conversation and add BMC from the tools menu.

ChatGPT does not accept bmc_live_… keys: only signing in with BMC. On ChatGPT Business and Enterprise, an administrator can create the connection for the whole workspace under Workspace settings › Apps and publish it. ChatGPT keeps the list of tools the administrator saw when approving it, so the administrator should connect with the widest role the team will use.

Claude (web and Desktop)

It works on every Claude subscription. On Claude Free you can add one custom connector. On Claude Team and Enterprise an Owner adds it and each person connects with their own account.

  1. Open Customize › Connectors and click Add custom connector.
  2. Paste the address https://app.bm.consulting/mcp. If asked for the OAuth client, choose Register automatically.
  3. Click Add, then Connect. BMC opens so you can sign in and authorise it (the authorisation step).
  4. In a conversation, turn BMC on from the + button › Connectors.

On Claude Team and Enterprise, the Owner adds it under Organization settings › Connectors (Add › Custom, type Web, same address) and each person clicks Connect under Customize › Connectors. Connectors on your account also appear in Claude Desktop.

The authorisation step at BMC

It is the same for ChatGPT, Claude and any client that uses OAuth:

  1. Sign in to BMC with the link sent to you by email. Open it in the same browser.
  2. Choose the company. Each connection reaches a single company; to work across several, use a token.
  3. Choose the role:
    • Analyst: read only. The recommended starting point.
    • Operator: reads and makes ordinary changes, with no critical actions such as issuing invoices, sending signature envelopes or filing tax returns.
    • Custom: permission by permission. The only way to grant critical actions.
  4. Optionally, set an expiry (7, 30, 90 or 365 days) and decide whether the assistant sees personal data or gets it masked.
  5. Confirm. You can start asking.

The connection appears under Developers › API & MCP, tab Credentials, as a credential of type MCP. Roles and expiry in detail under MCP server.

Privacy and control

  • What the assistant sees: only the company and what the role you chose allows. Unless you let it see personal data, tax ID, IBAN, phone, date of birth and address reach it masked.
  • What happens to what it reads: the data the assistant looks up enters your conversation with its provider (OpenAI, Anthropic, Google…) and is governed by that provider's terms. Choose the role and the company with that in mind.
  • How to cut it: under Credentials, turn off the connection (it can be turned back on) or revoke it (permanent). You can also remove the connector in your assistant.
  • With care: start with Analyst and grant critical actions only to connections that need them.

For technical teams

The clients in this section connect to the BMC MCP server (https://app.bm.consulting/mcp) with a bmc_live_… token in the Authorization: Bearer header, or to the REST API (https://app.bm.consulting/api/v1). With a token:

  • The assistant only sees the tools the token's permissions cover.
  • The token reaches the companies and groups you chose when you created it, not just one.
  • Leave the token's Allowed IPs empty: the MCP server calls the API from BMC's infrastructure and a token with an IP list is rejected.
  • Keep the token in an environment variable (BMC_TOKEN in the examples), never in code.

Claude Code

Signing in with BMC: add the server and, inside Claude Code, run /mcp, choose bmc and click Authenticate.

claude mcp add --transport http bmc https://app.bm.consulting/mcp

With a token:

claude mcp add --transport http bmc https://app.bm.consulting/mcp \
  --header "Authorization: Bearer $BMC_TOKEN"

Gemini CLI

With a token:

gemini mcp add --transport http \
  --header "Authorization: Bearer $BMC_TOKEN" bmc https://app.bm.consulting/mcp

Signing in with BMC (needs a browser on the same machine):

gemini mcp add --transport http bmc https://app.bm.consulting/mcp
# then, inside Gemini CLI:
/mcp auth bmc

Cursor

Add BMC to ~/.cursor/mcp.json (for all your projects) or to .cursor/mcp.json (for one) and set the BMC_TOKEN environment variable:

{
  "mcpServers": {
    "bmc": {
      "url": "https://app.bm.consulting/mcp",
      "headers": { "Authorization": "Bearer ${env:BMC_TOKEN}" }
    }
  }
}

Signing in with BMC (OAuth) from Cursor does not work yet: coming soon. Until then, use the token.

Your own agents

For an agent that works on its own, create a dedicated token with the fewest permissions, an expiry and, if it needs to write, no critical actions beyond the essential ones. Python examples:

OpenAI, Responses API
import os
from openai import OpenAI

client = OpenAI()
resp = client.responses.create(
    model=os.environ["OPENAI_MODEL"],
    input="Which sales invoices did we issue in September?",
    tools=[{
        "type": "mcp",
        "server_label": "bmc",
        "server_url": "https://app.bm.consulting/mcp",
        "authorization": os.environ["BMC_TOKEN"],  # bmc_live_…, without "Bearer"
        "require_approval": "never",  # only with a read-only token
    }],
)
print(resp.output_text)
OpenAI Agents SDK
import asyncio
import os
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(
        name="BMC",
        params={
            "url": "https://app.bm.consulting/mcp",
            "headers": {"Authorization": f"Bearer {os.environ['BMC_TOKEN']}"},
        },
    ) as bmc:
        agent = Agent(
            name="Assistant",
            instructions="Use the BMC tools to answer.",
            mcp_servers=[bmc],
        )
        result = await Runner.run(agent, "Which sales invoices did we issue in September?")
        print(result.final_output)

asyncio.run(main())
Anthropic API (MCP connector)
import os
import anthropic

client = anthropic.Anthropic()
response = client.beta.messages.create(
    model=os.environ["ANTHROPIC_MODEL"],
    max_tokens=1024,
    messages=[{"role": "user", "content": "Which sales invoices did we issue in September?"}],
    mcp_servers=[{
        "type": "url",
        "url": "https://app.bm.consulting/mcp",
        "name": "bmc",
        "authorization_token": os.environ["BMC_TOKEN"],
    }],
    tools=[{"type": "mcp_toolset", "mcp_server_name": "bmc"}],
    betas=["mcp-client-2025-11-20"],
)
print(response.content)

If your agent does not speak MCP, use the REST API with the same token: the OpenAPI contract is at https://app.bm.consulting/api/v1/openapi/client and the operations are in the API reference.

n8n, Make and Zapier

An automation with BMC has two parts:

  1. Read and write in BMC. Use the tool's HTTP node or module (HTTP Request in n8n, HTTP in Make, Webhooks by Zapier in Zapier) against the REST API, with the Authorization: Bearer header and your token:
    GET https://app.bm.consulting/api/v1/billing?limit=50
    Authorization: Bearer bmc_live_…
    For AI agents inside the tool, n8n has the MCP Client Tool node and Zapier the MCP Client connector: both accept the address https://app.bm.consulting/mcp with the token as Bearer.
  2. Hear about changes at once. Create a BMC webhook (under Developers › Webhooks) pointing to your flow's address: the Webhook node in n8n, the Custom webhook module in Make or Catch Hook in Zapier. That address must be https and public: an n8n on your local network without https does not receive webhooks. Verify the signature of each delivery (in n8n with the Crypto node; in Zapier with a code step). Details in Webhooks.

Coming soon

Microsoft Copilot Studio, Microsoft 365 Copilot and Gemini Enterprise cannot connect to BMC yet, nor can Cursor by signing in with BMC. If you need them, write to plataforma@bm.consulting.

If something fails

SymptomWhat to do
You do not see the Developers section in the client area, or your company is not listed when you authorise.API access is not enabled for that company, or you are neither holder nor administrator. Write to plataforma@bm.consulting.
The assistant connects but shows no tools.The role or the permissions open none. Check the connection or the token under Credentials.
With a token, the client says it is not valid (invalid_token).The token has an allowed-IP list, is turned off or revoked, or has expired. Empty the list or create another one.
ChatGPT or Claude stop seeing BMC after a while.Connect again from the assistant. If you set a short expiry, choose a longer one.

If the problem persists, write to plataforma@bm.consulting with the assistant's name and the time of the attempt.

Email
Contact