# Billomat MCP by usefulapi (remote · billomat.usefulapi.io)

Read Billomat clients, invoices, offers, credit notes, reminders; create clients and draft invoices.

- Trust score: 64/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-17

## Components

- remote · `billomat.usefulapi.io`: 64/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-billomat/billomat.md), [page](https://verifymcp.io/servers/io-usefulapi-billomat/billomat)

## Channel facts

- Endpoint: `https://billomat.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-17.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 77/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 5852 tokens (~172/item across 34 items; 34 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 34 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Billomat MCP by usefulapi server?

Billomat MCP by usefulapi is a hosted endpoint at https://billomat.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-billomat 'https://billomat.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-billomat": {
      "url": "https://billomat.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-billomat": {
      "type": "http",
      "url": "https://billomat.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-billomat]
url = "https://billomat.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-billomat": {
      "type": "remote",
      "url": "https://billomat.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-billomat --url 'https://billomat.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-billomat:
    url: "https://billomat.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-billomat": {
      "Transport": "http",
      "Url": "https://billomat.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-billomat -t streamable-http -u 'https://billomat.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-billomat": {
      "type": "http",
      "url": "https://billomat.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-17 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-15 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-14 (score 62, +2)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] The server now declares the “prompts” capability
- [functional] First check of Schema quality: 100
- [functional] New prompt “getting_started”
- [functional] Server version: 1.0.0 → 1.1.0

### 2026-10-13 (score 60, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-12 (score 59)

First indexed and scored.

## MCP tools (34)

### `billomat_get_current_user` (~40 tokens)

Show the Billomat user the API key belongs to (name, email, role and rights). Use it to check which rights the key has.

### `billomat_get_company` (~33 tokens)

Show the own company data of the Billomat account (name, address, bank details, tax numbers, currency).

### `billomat_list_clients` (~252 tokens)

List the clients (customers) of the account, filtered by name, number, email, contact person, country, note or tags. Paged.

Input parameters:

- `client_number` (string): Client number.
- `country_code` (string): ISO 3166 alpha-2 country code, e.g. DE, AT, CH.
- `email` (string): Email address.
- `first_name` (string): First name of the contact person.
- `invoice_id` (string): Comma-separated invoice ids: the clients of these invoices.
- `last_name` (string): Last name of the contact person.
- `name` (string): Company / name (case-insensitive).
- `note` (string): Search in the note.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `tags` (string): Comma-separated tags (Schlagworte).

### `billomat_get_client` (~41 tokens)

Get one client with address, contact person, bank details, payment terms and revenue.

Input parameters:

- `id` (required): The client id (from billomat_list_clients).

### `billomat_list_articles` (~205 tokens)

List the articles (products and services) with prices, units and tax. Paged.

Input parameters:

- `article_number` (string): Article number.
- `currency_code` (string): ISO currency code, e.g. EUR (account default when omitted).
- `description` (string): Search in the description.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `supplier_id`: Only articles of this supplier.
- `tags` (string): Comma-separated tags (Schlagworte).
- `title` (string): Title (case-insensitive).
- `unit_id`: Only articles with this unit (from billomat_list_units).

### `billomat_get_article` (~37 tokens)

Get one article with its prices, unit, tax and supplier.

Input parameters:

- `id` (required): The article id (from billomat_list_articles).

### `billomat_list_suppliers` (~229 tokens)

List the suppliers of the account, filtered by name, email, contact person, country, note or tags. Paged.

Input parameters:

- `client_number` (string): Your customer number at the supplier.
- `country_code` (string): ISO 3166 alpha-2 country code, e.g. DE, AT, CH.
- `email` (string): Email address.
- `first_name` (string): First name of the contact person.
- `last_name` (string): Last name of the contact person.
- `name` (string): Company / name.
- `note` (string): Search in the note.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `tags` (string): Comma-separated tags (Schlagworte).

### `billomat_get_supplier` (~34 tokens)

Get one supplier with address and bank details.

Input parameters:

- `id` (required): The supplier id (from billomat_list_suppliers).

### `billomat_list_invoices` (~343 tokens)

List invoices (Rechnungen), filtered by client, status (DRAFT, OPEN, PAID, OVERDUE, CANCELED), number, date range, text or tags. Paged; each invoice carries totals and the open amount.

Input parameters:

- `article_id`: Only documents containing this article.
- `client_id`: Only documents of this client (from billomat_list_clients).
- `contact_id`: Only documents of this client contact.
- `from` (string): Documents dated on or after this day (yyyy-mm-dd).
- `intro` (string): Free-text search in the introduction text.
- `invoice_number` (string): Invoice number (case-insensitive).
- `label` (string): Free-text search in the label.
- `note` (string): Free-text search in the note.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `payment_type` (string): Payment type(s), e.g. CASH, BANK_TRANSFER, PAYPAL; several separated by commas.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `status` (string): Status filter: DRAFT, OPEN, PAID, OVERDUE, CANCELED; several separated by commas.
- `tags` (string): Comma-separated tags (Schlagworte).
- `to` (string): Documents dated on or before this day (yyyy-mm-dd).

### `billomat_invoice_totals` (~286 tokens)

Invoice totals grouped by client, status, day, week, month or year (for example group_by=client,year). Takes the same filters as billomat_list_invoices. Read-only.

Input parameters:

- `article_id`: Only documents containing this article.
- `client_id`: Only documents of this client (from billomat_list_clients).
- `contact_id`: Only documents of this client contact.
- `from` (string): Documents dated on or after this day (yyyy-mm-dd).
- `group_by` (string, required): Grouping: client, status, day, week, month, year; several separated by commas (the order sets the aggregation).
- `intro` (string): Free-text search in the introduction text.
- `invoice_number` (string): Invoice number (case-insensitive).
- `label` (string): Free-text search in the label.
- `note` (string): Free-text search in the note.
- `payment_type` (string): Payment type(s), e.g. CASH, BANK_TRANSFER, PAYPAL; several separated by commas.
- `status` (string): Status filter: DRAFT, OPEN, PAID, OVERDUE, CANCELED; several separated by commas.
- `tags` (string): Comma-separated tags (Schlagworte).
- `to` (string): Documents dated on or before this day (yyyy-mm-dd).

### `billomat_get_invoice` (~51 tokens)

Get one invoice (status, totals, dates, client, payment terms). Its line items come from billomat_list_invoice_items.

Input parameters:

- `id` (required): The invoice id (from billomat_list_invoices).

### `billomat_list_invoice_items` (~77 tokens)

List the line items (positions) of one invoice.

Input parameters:

- `invoice_id` (required): The invoice id.
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).

### `billomat_list_invoice_payments` (~198 tokens)

List the payments that were recorded on invoices (read-only), optionally for one invoice, a date range or payment types.

Input parameters:

- `from` (string): Payments on or after this day (yyyy-mm-dd).
- `invoice_id`: Only payments of this invoice.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `to` (string): Payments on or before this day (yyyy-mm-dd).
- `type` (string): Payment type(s), e.g. CASH, BANK_TRANSFER, PAYPAL; several separated by commas.
- `user_id`: Only payments recorded by this user.

### `billomat_list_recurring_invoices` (~258 tokens)

List recurring invoices (Abo-Rechnungen): name, cycle (DAILY, WEEKLY, MONTHLY, YEARLY), client and next run. Paged.

Input parameters:

- `client_id`: Only documents of this client (from billomat_list_clients).
- `contact_id`: Only documents of this client contact.
- `cycle` (string): Interval.
- `intro` (string): Free-text search in the introduction text.
- `label` (string): Free-text search in the label.
- `name` (string): Name of the recurring invoice.
- `note` (string): Free-text search in the note.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `payment_type` (string): Payment type(s), e.g. CASH, BANK_TRANSFER, PAYPAL; several separated by commas.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `tags` (string): Comma-separated tags (Schlagworte).

### `billomat_list_offers` (~307 tokens)

List offers (Angebote), filtered by client, status (DRAFT, OPEN, WON, LOST, CANCELED, CLEARED), number, date range or text. Paged.

Input parameters:

- `article_id`: Only documents containing this article.
- `client_id`: Only documents of this client (from billomat_list_clients).
- `contact_id`: Only documents of this client contact.
- `from` (string): Documents dated on or after this day (yyyy-mm-dd).
- `intro` (string): Free-text search in the introduction text.
- `label` (string): Free-text search in the label.
- `note` (string): Free-text search in the note.
- `offer_number` (string): Offer number (partial, case-insensitive).
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `status` (string): Status filter: DRAFT, OPEN, WON, LOST, CANCELED, CLEARED; several separated by commas.
- `tags` (string): Comma-separated tags (Schlagworte).
- `to` (string): Documents dated on or before this day (yyyy-mm-dd).

### `billomat_get_offer` (~37 tokens)

Get one offer (status, totals, validity, client).

Input parameters:

- `id` (required): The offer id (from billomat_list_offers).

### `billomat_list_confirmations` (~305 tokens)

List order confirmations (Auftragsbestaetigungen), filtered by client, status (DRAFT, COMPLETED, CANCELED, CLEARED), number, date range or text. Paged.

Input parameters:

- `article_id`: Only documents containing this article.
- `client_id`: Only documents of this client (from billomat_list_clients).
- `confirmation_number` (string): Confirmation number (partial, case-insensitive).
- `contact_id`: Only documents of this client contact.
- `from` (string): Documents dated on or after this day (yyyy-mm-dd).
- `intro` (string): Free-text search in the introduction text.
- `label` (string): Free-text search in the label.
- `note` (string): Free-text search in the note.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `status` (string): Status filter: DRAFT, COMPLETED, CANCELED, CLEARED; several separated by commas.
- `tags` (string): Comma-separated tags (Schlagworte).
- `to` (string): Documents dated on or before this day (yyyy-mm-dd).

### `billomat_get_confirmation` (~30 tokens)

Get one order confirmation.

Input parameters:

- `id` (required): The confirmation id (from billomat_list_confirmations).

### `billomat_list_delivery_notes` (~288 tokens)

List delivery notes (Lieferscheine), filtered by client, status (DRAFT, CREATED), number, date range or text. Paged.

Input parameters:

- `article_id`: Only documents containing this article.
- `client_id`: Only documents of this client (from billomat_list_clients).
- `contact_id`: Only documents of this client contact.
- `delivery_note_number` (string): Delivery note number (case-insensitive).
- `from` (string): Documents dated on or after this day (yyyy-mm-dd).
- `intro` (string): Free-text search in the introduction text.
- `label` (string): Free-text search in the label.
- `note` (string): Free-text search in the note.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `status` (string): Status filter: DRAFT, CREATED; several separated by commas.
- `tags` (string): Comma-separated tags (Schlagworte).
- `to` (string): Documents dated on or before this day (yyyy-mm-dd).

### `billomat_get_delivery_note` (~32 tokens)

Get one delivery note.

Input parameters:

- `id` (required): The delivery note id (from billomat_list_delivery_notes).

### `billomat_list_credit_notes` (~290 tokens)

List credit notes (Gutschriften), filtered by client, status (DRAFT, OPEN, PAID), date range or text. Paged.

Input parameters:

- `article_id`: Only documents containing this article.
- `client_id`: Only documents of this client (from billomat_list_clients).
- `contact_id`: Only documents of this client contact.
- `credit_note_number` (string): Credit note number (case-insensitive).
- `from` (string): Documents dated on or after this day (yyyy-mm-dd).
- `intro` (string): Free-text search in the introduction text.
- `label` (string): Free-text search in the label.
- `note` (string): Free-text search in the note.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `status` (string): Status filter: DRAFT, OPEN, PAID; several separated by commas.
- `tags` (string): Comma-separated tags (Schlagworte).
- `to` (string): Documents dated on or before this day (yyyy-mm-dd).

### `billomat_get_credit_note` (~32 tokens)

Get one credit note.

Input parameters:

- `id` (required): The credit note id (from billomat_list_credit_notes).

### `billomat_list_reminders` (~323 tokens)

List payment reminders (Mahnungen), filtered by client, status (DRAFT, OPEN, OVERDUE, PAID, CANCELED), invoice number, date range or text. Paged.

Input parameters:

- `article_id`: Only documents containing this article.
- `client_id`: Only documents of this client (from billomat_list_clients).
- `contact_id`: Only documents of this client contact.
- `from` (string): Documents dated on or after this day (yyyy-mm-dd).
- `intro` (string): Free-text search in the introduction text.
- `invoice_number` (string): Number of the reminded invoice (case-insensitive).
- `label` (string): Free-text search in the label.
- `note` (string): Free-text search in the note.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `status` (string): Status filter: DRAFT, OPEN, PAID, OVERDUE, CANCELED; several separated by commas.
- `subject` (string): Free-text search in the subject.
- `tags` (string): Comma-separated tags (Schlagworte).
- `to` (string): Documents dated on or before this day (yyyy-mm-dd).

### `billomat_get_reminder` (~31 tokens)

Get one payment reminder.

Input parameters:

- `id` (required): The reminder id (from billomat_list_reminders).

### `billomat_list_incoming_invoices` (~244 tokens)

List incoming invoices (Eingangsrechnungen, from suppliers), filtered by supplier, status (OPEN, PAID, OVERDUE), number, date range, note or tags. Paged.

Input parameters:

- `from` (string): Dated on or after this day (yyyy-mm-dd).
- `incoming_number` (string): Incoming invoice number.
- `note` (string): Free-text search in the note.
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).
- `status` (string): Status filter: OPEN, PAID, OVERDUE; several separated by commas.
- `supplier_id`: Only incoming invoices of this supplier.
- `tags` (string): Comma-separated tags (Schlagworte).
- `to` (string): Dated on or before this day (yyyy-mm-dd).

### `billomat_get_incoming_invoice` (~40 tokens)

Get one incoming invoice with amounts and open amount.

Input parameters:

- `id` (required): The incoming invoice id (from billomat_list_incoming_invoices).

### `billomat_list_taxes` (~109 tokens)

List the tax rates (Steuersaetze) of the account, with the default one.

Input parameters:

- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).

### `billomat_list_units` (~123 tokens)

List the units (Einheiten) used for article and item quantities, optionally filtered by name.

Input parameters:

- `name` (string): Unit name (substring, case-insensitive).
- `order_by` (string): Sort order: field name plus ASC or DESC, several separated by commas, e.g. "date DESC" (default ascending).
- `page` (integer): Page number, 1-based (default 1). Use next_page from the previous reply.
- `per_page` (integer): Results per page, 1-1000 (default 100).

### `billomat_create_client` (~268 tokens)

WRITE: create a new client (customer) in Billomat. Billomat assigns the client number. Nothing is sent to the client. Check billomat_list_clients first to avoid duplicates.

Input parameters:

- `city` (string): City.
- `country_code` (string): ISO 3166 alpha-2 country code, e.g. DE, AT, CH.
- `currency_code` (string): ISO currency code, e.g. EUR (account default when omitted).
- `email` (string): Email address.
- `first_name` (string): First name of the contact person.
- `last_name` (string): Last name of the contact person.
- `locale` (string): Locale of the documents, e.g. de-DE.
- `mobile` (string): Mobile phone.
- `name` (string): Company name.
- `note` (string): Internal note.
- `phone` (string): Phone.
- `salutation` (string): Salutation, e.g. Herr, Frau.
- `state` (string): State / region.
- `street` (string): Street and number.
- `tax_number` (string): Tax number.
- `vat_number` (string): VAT ID.
- `www` (string): Website (without http).
- `zip` (string): ZIP code.

### `billomat_update_client` (~277 tokens)

WRITE: change fields of an existing client (only the fields you pass are changed; everything else stays). Read the client first with billomat_get_client. Nothing is sent to the client.

Input parameters:

- `city` (string): City.
- `country_code` (string): ISO 3166 alpha-2 country code, e.g. DE, AT, CH.
- `currency_code` (string): ISO currency code, e.g. EUR (account default when omitted).
- `email` (string): Email address.
- `first_name` (string): First name of the contact person.
- `id` (required): The client id.
- `last_name` (string): Last name of the contact person.
- `locale` (string): Locale of the documents, e.g. de-DE.
- `mobile` (string): Mobile phone.
- `name` (string): Company name.
- `note` (string): Internal note.
- `phone` (string): Phone.
- `salutation` (string): Salutation, e.g. Herr, Frau.
- `state` (string): State / region.
- `street` (string): Street and number.
- `tax_number` (string): Tax number.
- `vat_number` (string): VAT ID.
- `www` (string): Website (without http).
- `zip` (string): ZIP code.

### `billomat_create_article` (~140 tokens)

WRITE: create a new article (product or service) with a price. Billomat assigns the article number.

Input parameters:

- `currency_code` (string): ISO currency code, e.g. EUR (account default when omitted).
- `description` (string): Description.
- `purchase_price` (number): Purchase price.
- `sales_price` (number): Sales price (net or gross as the account is set up).
- `tax_id`: Tax rate id (from billomat_list_taxes).
- `title` (string, required): Article title.
- `type` (string): PRODUCT or SERVICE.
- `unit_id`: Unit id (from billomat_list_units).

### `billomat_create_draft_invoice` (~213 tokens)

WRITE: create an invoice as a DRAFT (Entwurf) for a client, with optional line items. The invoice is NOT completed, has no number yet and is NOT sent; review and complete it in Billomat. Nothing is charged.

Input parameters:

- `client_id` (required): The client id (from billomat_list_clients).
- `contact_id`: A contact of that client.
- `currency_code` (string): ISO currency code, e.g. EUR (account default when omitted).
- `date` (string): Document date (yyyy-mm-dd; today when omitted).
- `due_days` (integer): Days until payment is due.
- `intro` (string): Introduction text.
- `items` (array): Line items (up to 200). More can be added to the draft later.
- `label` (string): Label / subject.
- `net_gross` (string): Whether prices are net or gross.
- `note` (string): Closing note.
- `title` (string): Document title.

### `billomat_add_invoice_item` (~264 tokens)

WRITE: add one line item to an invoice that is still a DRAFT (Billomat refuses it for any other status). Does not complete or send the invoice.

Input parameters:

- `article_id`: An article id (from billomat_list_articles): title, unit, price and tax missing here are taken from the article.
- `description` (string): Item description.
- `invoice_id` (required): The draft invoice id.
- `optional` (boolean): Offers only: mark the item as optional (its price is left out of the total).
- `quantity` (number): Quantity (required unless article_id is given).
- `reduction` (string): Discount: absolute (10) or percent (10%).
- `tax_name` (string): Tax name; with tax_rate overrides the standard tax of the account.
- `tax_rate` (number): Tax rate in percent; the account's standard rate when omitted.
- `title` (string): Item title (required unless article_id is given).
- `type` (string): PRODUCT or SERVICE.
- `unit` (string): Unit, e.g. Stunde, Stueck, hour.
- `unit_price` (number): Unit price, net or gross as net_gross of the document (required unless article_id is given).

### `billomat_create_draft_offer` (~210 tokens)

WRITE: create an offer (Angebot) as a DRAFT for a client, with optional line items. The offer is NOT completed, has no number yet and is NOT sent; review and complete it in Billomat.

Input parameters:

- `client_id` (required): The client id (from billomat_list_clients).
- `contact_id`: A contact of that client.
- `currency_code` (string): ISO currency code, e.g. EUR (account default when omitted).
- `date` (string): Document date (yyyy-mm-dd; today when omitted).
- `intro` (string): Introduction text.
- `items` (array): Line items (up to 200). More can be added to the draft later.
- `label` (string): Label / subject.
- `net_gross` (string): Whether prices are net or gross.
- `note` (string): Closing note.
- `title` (string): Document title.
- `validity_days` (integer): Days the offer stays valid.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-billomat/billomat#diagnostics

## Score history

- 2026-10-17: 64
- 2026-10-16: 63
- 2026-10-15: 63
- 2026-10-14: 62
- 2026-10-13: 60
- 2026-10-12: 59

## Common questions

### What is the Billomat MCP by usefulapi server?

Billomat MCP by usefulapi is listed in the public MCP registry as io.usefulapi/billomat. Read Billomat clients, invoices, offers, credit notes, reminders; create clients and draft invoices. This page covers its hosted endpoint (https://billomat.usefulapi.io/mcp).

### Is the Billomat MCP by usefulapi server safe to use?

Billomat MCP by usefulapi scores 64 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Billomat MCP by usefulapi server expose?

Billomat MCP by usefulapi exposes 34 tools: billomat_get_current_user, billomat_get_company, billomat_list_clients, billomat_get_client, billomat_list_articles, and 29 more. Their descriptions and schemas cost roughly 5,647 tokens of context every time the server is loaded.

### Does the Billomat MCP by usefulapi server require authentication?

Yes. Billomat MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Billomat MCP by usefulapi server still maintained?

Billomat MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://billomat.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/billomat/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-billomat/billomat.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-billomat/billomat.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-billomat/billomat
