billy-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BILLY_API_TOKEN | Yes | Your Billy personal access token from billy.dk Settings → Access tokens |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| billy_whoamiA | Get the current Billy organization (sanity check the token, see org settings). READ-ONLY. |
| billy_update_organizationA | Update fields on the organization. WRITE — requires confirm:true. Pass any subset of: { name, registrationNo, vatNo, street, zipcode, city, countryId, email, phone, paymentTermsDays, defaultTaxMode, salesTaxPeriod, isVatExempted, ... } |
| billy_list_invoicesB | List invoices. READ-ONLY. Filters: state (draft/approved/paid), contactId, sinceDate, untilDate. |
| billy_get_invoiceB | Fetch one invoice including line items. READ-ONLY. |
| billy_create_invoiceA | Create a new invoice (default state: draft). WRITE — requires confirm:true. Shape: { contactId, entryDate, currencyId, lines: [{ productId, description, quantity, unitPrice, taxRateId? }], paymentTermsDays?, lineDescription? } |
| billy_update_invoiceA | Update an existing invoice. WRITE — requires confirm:true. |
| billy_delete_invoiceA | Delete a draft invoice. WRITE — requires confirm:true. Approved/paid invoices cannot be deleted. |
| billy_approve_invoiceA | Approve a draft invoice (draft → approved). WRITE — requires confirm:true. Required before sending or marking paid. |
| billy_send_invoiceA | Send an invoice by email via Billy. WRITE — requires confirm:true. Email payload: { to: ['email'], cc?, bcc?, subject?, message?, attachPdf? } |
| billy_list_billsC | List bills/expenses. READ-ONLY. |
| billy_get_billB | Fetch one bill (expense). READ-ONLY. |
| billy_create_billA | Create a new bill. WRITE — requires confirm:true. Shape: { contactId, entryDate, currencyId, lines: [{ accountId, description, amount, taxRateId? }] } |
| billy_update_billB | Update an existing bill. WRITE — requires confirm:true. |
| billy_delete_billB | Delete a draft bill. WRITE — requires confirm:true. |
| billy_approve_billA | Approve a draft bill. WRITE — requires confirm:true. |
| billy_list_contactsC | List contacts. READ-ONLY. |
| billy_get_contactB | Fetch one contact. READ-ONLY. |
| billy_create_contactA | Create a new contact. WRITE — requires confirm:true. Shape: { name, isCustomer, isSupplier, countryId, street?, city?, zipcode?, registrationNo?, email?, phone? } |
| billy_update_contactA | Update an existing contact. WRITE — requires confirm:true. |
| billy_delete_contactA | Delete a contact. WRITE — requires confirm:true. Contacts with associated invoices/bills cannot be deleted. |
| billy_list_contact_personsC | List contact persons. READ-ONLY. |
| billy_create_contact_personA | Create a contact person. WRITE — requires confirm:true. Shape: { contactId, name, email?, phone?, isPrimary? } |
| billy_list_productsC | List products (your sellable items/services). READ-ONLY. |
| billy_get_productC | Fetch one product. READ-ONLY. |
| billy_create_productA | Create a product/service. WRITE — requires confirm:true. Shape: { name, productNo?, description?, prices: [{ unitPrice, currencyId }], salesAccountId?, salesTaxRulesetId? } |
| billy_update_productA | Update an existing product. WRITE — requires confirm:true. |
| billy_delete_productA | Delete a product. WRITE — requires confirm:true. |
| billy_list_accountsC | List the chart of accounts. READ-ONLY. |
| billy_get_accountA | Fetch one account. READ-ONLY. |
| billy_create_accountB | Create a new account in the chart of accounts. WRITE — requires confirm:true. |
| billy_update_accountC | Update an existing account. WRITE — requires confirm:true. |
| billy_list_account_groupsA | List the account-group hierarchy. READ-ONLY. |
| billy_get_bank_accountA | Fetch one bank account by id. READ-ONLY. (Billy v2 does not support listing all bank accounts — look up the default via billy_whoami.) |
| billy_create_bank_accountA | Create a bank account in Billy. WRITE — requires confirm:true. |
| billy_list_bank_paymentsC | List bank payments (records of money in/out tied to invoices/bills). READ-ONLY. |
| billy_create_bank_paymentA | Create a bank payment. WRITE — requires confirm:true. Used to mark invoices/bills as paid. Shape: { entryDate, cashSide: 'debit'|'credit', cashAmount, cashAccountId, contraAccountId, associations: [{ subjectType, subjectId, amount }] } |
| billy_list_bank_linesA | List bank statement lines. READ-ONLY. REQUIRES accountId. Default returns UNMATCHED lines (the actionable state). |
| billy_get_bank_lineB | Fetch one bank line. READ-ONLY. |
| billy_match_bank_lineA | Reconcile a bank line with an invoice/bill/bank payment. WRITE — requires confirm:true. |
| billy_unmatch_bank_lineA | Remove a bank-line reconciliation. WRITE — requires confirm:true. |
| billy_list_daybooksB | List daybooks. READ-ONLY. |
| billy_list_daybook_transactionsB | List manual daybook transactions (journal entries). READ-ONLY. |
| billy_create_daybook_transactionA | Create a manual journal entry. WRITE — requires confirm:true. Shape: { daybookId, entryDate, description, lines: [{ accountId, side: 'debit'|'credit', amount, taxRateId? }] } |
| billy_list_tax_ratesA | List configured tax rates. READ-ONLY. |
| billy_list_tax_rulesetsA | List tax rulesets. READ-ONLY. |
| billy_list_sales_tax_returnsC | List MOMS/VAT returns. READ-ONLY. |
| billy_get_sales_tax_returnB | Fetch one MOMS/VAT return. READ-ONLY. |
| billy_report_profit_lossC | P&L report. READ-ONLY. |
| billy_report_balanceC | Balance sheet at a point in time. READ-ONLY. |
| billy_report_sales_taxC | MOMS/VAT report. READ-ONLY. |
| billy_report_invoiced_salesB | Invoiced sales by contact/product. READ-ONLY. |
| billy_list_postingsC | List ledger postings. READ-ONLY. |
| billy_list_action_streamC | Recent activity log entries. READ-ONLY. |
| billy_list_webhooksB | List webhooks. READ-ONLY. |
| billy_create_webhookA | Create a webhook. WRITE — requires confirm:true. Shape: { url, event, isActive? } |
| billy_delete_webhookA | Remove a webhook. WRITE — requires confirm:true. |
| billy_list_currenciesB | List currencies. READ-ONLY. |
| billy_list_countriesA | List countries. READ-ONLY. |
| billy_list_payment_terms_modesA | List payment-terms modes. READ-ONLY. |
| billy_list_unitsB | List product units. READ-ONLY. |
| billy_upload_fileA | Upload a file (receipt or invoice PDF, or image) from a local path to Billy. WRITE — requires confirm:true. Billy only accepts PDF, JPG, JPEG, PNG, GIF — convert other formats first. Returns the file metadata including the id, which you then pass to billy_attach_file_to_bill or billy_attach_file_to_invoice. MIME type is auto-detected from the extension. |
| billy_list_filesB | List files uploaded to Billy. READ-ONLY. |
| billy_get_fileB | Fetch metadata for one file (incl. downloadUrl). READ-ONLY. |
| billy_attach_file_to_billA | Attach an uploaded file (receipt PDF, etc.) to a bill. WRITE — requires confirm:true. |
| billy_attach_file_to_invoiceA | Attach an uploaded file to an invoice. WRITE — requires confirm:true. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cimalys/billy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server