tools/call over
POST /billy/mcp. The connector is connected with an access token (Billy’s
permanent, organization-scoped token, no OAuth). See Forbind Billy.
Endpoint:
https://mcp.consile.ai/billy/mcp. Billy is its own named connector
with only its own tools. The transport namespaces each tool as billy__<tool>
(e.g. billy__get_invoice). The tables below use the bare tool names; in a
tools/call request always send the namespaced name, as in the examples. A bare
name returns Unknown tool.This connector is read-only: it only reads from Billy and has no tool that
creates, changes or deletes anything. All 17 tools are listed with
readOnlyHint: true, destructiveHint: false and openWorldHint: false.Besides the 17 Billy tools,
tools/list on this endpoint also returns the
system tool connect_account (no arguments). It returns
{ connect_url, instructions }: a link, valid for 10 minutes, that the user
opens in a browser to connect, or replace, the Billy access token for this
endpoint.Shared conventions
No organizationId
Billy’s access token is organization-scoped: one token maps to exactly one Billy company, so no tool takes anorganizationId. The token itself scopes
every request. get_organization is the health-check that tells you which company
the connected token belongs to.
A customer with several Billy companies adds one portal per company in the
Consile portal and connects each with that company’s own token. Portal N (N ≥ 2)
is its own MCP connector at https://mcp.consile.ai/billy-N/mcp (for example
billy-2), with tools namespaced billy-2__<tool>. Add each URL to your MCP
client separately. After a portal is removed, another portal’s URL and tool
prefix can change (for example from billy-3 to billy-2). Check the portal URLs
in the Consile portal and update your client.
Pagination
List tools return a compact{ items, pagination } envelope. total is the
filtered total, and hasMore is true while page is below pageCount.
integer
default:"1"
1-based page number.
integer
default:"50"
Rows per page. Default is
50 on every list tool except list_currencies
(default 200). The maximum is 1000.Amounts, ids and dates
string
All Billy ids (
invoiceId, billId, contactId, accountId, daybookId,
transactionId, …) are opaque strings, never integers.string (YYYY-MM-DD)
Date-only, no time or zone.
minEntryDate/maxEntryDate are inclusive bounds on
the invoice and bill lists.Embedded children
get_invoice embeds its lines + customer contact and returns a downloadUrl (the
invoice PDF link). get_bill embeds its lines + supplier contact. list_transactions,
get_transaction embed the balanced postings. These get-one tools are already
self-contained, so no follow-up call is needed.
Error contract
Upstream failures come back as a normal tool result withisError: true. Billy’s
status code and error body are not passed to the client.
Invalid arguments (for example a date not in
YYYY-MM-DD, or pageSize above
1000) also return isError: true with Tool invocation failed., so validate
arguments before calling. Other isError texts on this endpoint:
You are not subscribed to billy…when the account has no Billy subscription.billy is not connected yet. Connect it here: <url>when the account subscribes but no token is connected.- A seat message when the signed-in user has no seat on Billy (an administrator assigns seats under Team in the portal).
Unknown tool.for a tool name that is not on this endpoint, including an unprefixed name or another connector’s tool.
Organization & reference
Sales: invoices (accounts receivable)
Invoice
state is draft or approved; approved is a finalised invoice (a
one-way door in Billy).Purchases: bills (accounts payable)
Contacts
Billy keeps one contact register for both customers and suppliers. TheisCustomer/isSupplier flags split them; registrationNo carries the CVR.
Finance / general ledger
Code examples
Call
get_organization after connecting to check the connection. If Billy
rejects the token (for example a wrong token, or one deleted in Billy), the call
returns Billy rejected the access token; reconnect required. See
Errors & limits.