DEVELOPERS
Connect with MCP
Read and write your Bizinly data from your own AI assistant or tooling, over MCP.
Bizinly exposes its own data — customers, documents, payments, appointments and more — as a set of tools over the Model Context Protocol (MCP), so an AI assistant (Lucy, Claude, ChatGPT, or any MCP-compatible client) can search, create and update a workspace's data directly, with the same permission checks and audit trail as a person clicking through the app.
For the step-by-step, non-technical version of this — connecting Lucy, Claude or ChatGPT from the app itself — see Connect Bizinly to your own Lucy and What Lucy can do in your workspace (this page's tool table, in plain language).
Endpoint
POST https://<your-workspace-domain>/api/mcp
A stateless, JSON-RPC endpoint following the MCP Streamable-HTTP transport: initialize, tools/list, tools/call, ping.
Authenticating
API key (recommended for your own tools)
- In Bizinly, open Settings → Company → Lucy connection and press Create API key. Copy it — it is shown once.
- Call the endpoint with
Authorization: Bearer <your key>. - The key acts as whichever person created it, with exactly that person's own permissions — nothing more.
curl -X POST https://<your-workspace-domain>/api/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your key>" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Without a valid key, every call returns 401 with a JSON-RPC error.
OAuth (for Claude, ChatGPT and similar connectors)
Clients that discover connectors automatically — rather than accepting a pasted key — can add https://<your-workspace-domain>/api/mcp directly as a custom connector. Bizinly implements the standard OAuth discovery and authorization flow (protected-resource and authorization-server metadata, dynamic client registration, PKCE); signing in and pressing Allow issues the same kind of API key as above, scoped to the person who approved it, and it appears in Settings → Company → Lucy connection alongside any key created by hand, so it can be revoked the same way.
Only an active member of the workspace can complete this flow — a Bizinly account that is not part of the business is refused.
Tools
Every tool is permission-checked exactly as the matching screen or button is, and every write is recorded in the workspace's own activity log. A key issued to a person with no role, or without the specific permission a tool needs, gets a clear refusal rather than a partial result.
| Tool | What it does |
|---|---|
search_customers |
Search customers by name or code. |
get_customer |
A customer's full profile: details, addresses, contacts and open documents. |
search_documents |
Search quotes, orders, invoices, proformas, credit notes and pipeline deals, with filters (type, status, company, date range, unpaid only). |
get_document |
Full detail of one document: header, lines, totals, payments and related documents. |
create_document |
Create a draft quote, order, invoice, proforma, credit note, or a pipeline deal. Takes a customer (by id, or a name to quick-create), lines, and optional header fields. |
update_document_lines |
Replace a draft document's lines (refused once it is issued or closed). |
set_document_status |
Move a document to an allowed status — the same rules the status menu enforces; for a deal, this moves it between pipeline stages. |
issue_invoice |
Issue a draft invoice or credit note: assigns its number and locks it. |
record_payment |
Record a payment against an invoice. |
create_credit_note |
Create a credit note against an issued invoice. |
clone_document |
Clone a document as a new draft of the same type. |
email_document |
E-mail a document's PDF, the same as the app's E-mail action. |
link_documents |
Manually link two documents of different types. |
post_message |
Post a message to a document's internal team conversation. |
outstanding_summary |
Open and overdue invoice totals, overall and per customer. |
sales_summary |
Totals by document type and status, for a period. |
draft_reminder |
Draft a payment-reminder e-mail for an unpaid invoice, with the real numbers filled in. |
list_appointments |
Appointments for one document, or across a date range, optionally narrowed to one team member. |
schedule_appointment |
Book an appointment on a document, optionally assigning a team member. |
export_customers / export_products |
Export rows as JSON or CSV — see Import & export formats. |
import_customers / import_products |
Import rows, with a dry run by default so nothing is written until the caller confirms the plan. |
Call tools/list for the exact, current input schema of every tool — this list is a summary, not a substitute for it.
Good practice
- Prefer a separate key per integration or person, and revoke a key the moment it is no longer needed.
- Import tools default to a dry run — always show the plan to a human before calling again with the real write.
- Treat the key like a password: it is a full-account credential scoped to whoever created it, not a limited, read-only token.
Related: Overview & architecture, Import & export formats, Connect Bizinly to your own Lucy.