# FastBill MCP by usefulapi (remote · fastbill.usefulapi.io)

Read FastBill customers, invoices, estimates, expenses; create customers, invoices, projects.

- Trust score: 18/100 (low)
- Change this week: −44
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-06

## Components

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

## Channel facts

- Endpoint: `https://fastbill.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.11.4`

## 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-11-06.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - 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.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

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

FastBill MCP by usefulapi is a hosted endpoint at https://fastbill.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-fastbill 'https://fastbill.usefulapi.io/mcp'
```

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-fastbill": {
      "type": "http",
      "url": "https://fastbill.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-11-06 (score 18, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-11-01 (score 18, −47)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Stability: 0.17 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-10-31 (score 65, +3)

- [security improvement] Authorization: partial → pass
- [functional improvement] MCP protocol: fail → pass
- [functional] New prompt “draft_an_invoice_from_a_job”
- [functional] New prompt “finalize_a_checked_draft”
- [functional] New prompt “find_overdue_invoices_and_who_owes_them”
- [functional] New prompt “log_billable_time_on_a_project”
- [functional] New prompt “record_a_payment”
- [functional] New prompt “review_last_month_s_expenses_and_revenue”
- [functional] MCP protocol version: 2025-06-18 → 2025-11-25
- [functional] Server version: 1.7.0 → 1.9.0
- [functional] Server version: 1.6.0 → 1.7.0
- [functional] Server version: 1.5.2 → 1.6.0

### 2026-10-30 (score 62, +1)

- [functional] Server version: 1.5.1 → 1.5.2
- [functional] Server version: 1.5.0 → 1.5.1

### 2026-10-29 (score 61, 0)

- [functional] Server version: 1.4.0 → 1.5.0
- [functional] Server version: 1.3.0 → 1.4.0

### 2026-10-28 (score 61, +1)

- [functional] Server version: 1.1.0 → 1.3.0

### 2026-10-27 (score 60, 0)

- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.1.0

### 2026-10-26 (score 60)

First indexed and scored.

## MCP tools (22)

### `fastbill_list_customers` (~188 tokens)

List customers

List customers (name, address, e-mail, VAT id, payment terms and bank details as stored in FastBill). Filter by search term (organization, name, address, zip, e-mail or tags), customer number, country or city. customer.get.

Input parameters:

- `city` (string)
- `country_code` (string): ISO 3166 alpha-2 country code, e.g. DE.
- `customer_number` (string): Exact customer number.
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.
- `term` (string): Search term matched against organization, first/last name, address, zip code, e-mail and tags.

### `fastbill_get_customer` (~36 tokens)

Get customer

One customer by FastBill customer id. customer.get with CUSTOMER_ID.

Input parameters:

- `customer_id` (integer, required): FastBill customer id.

### `fastbill_list_contacts` (~153 tokens)

List contacts

List contact persons of customers (name, position, e-mail, phone). Filter by customer, search term or contact id. contact.get.

Input parameters:

- `contact_id` (integer): One contact id.
- `customer_id` (integer): Only contacts of this customer id.
- `customer_number` (string)
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.
- `term` (string): Search term matched against organization, name, address, zip code, e-mail and tags.

### `fastbill_list_invoices` (~278 tokens)

List invoices

List outgoing invoices, drafts and credit notes with totals, state (draft, unpaid, overdue, paid, canceled), dates and line items. Filter by customer, number, type, date ranges (invoice date, due date, paid date, last update). invoice.get.

Input parameters:

- `customer_id` (integer)
- `end_date` (string): Invoices dated up to this day.
- `end_due_date` (string): A date, yyyy-mm-dd.
- `end_lastupdate` (string): A date, yyyy-mm-dd.
- `end_paid_date` (string): A date, yyyy-mm-dd.
- `invoice_number` (string)
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.
- `start_date` (string): Invoices dated on or after this day.
- `start_due_date` (string): A date, yyyy-mm-dd.
- `start_lastupdate` (string): Changed on or after this day.
- `start_paid_date` (string): A date, yyyy-mm-dd.
- `type` (string): outgoing = finalized invoice, draft, credit = credit note.

### `fastbill_get_invoice` (~50 tokens)

Get invoice

One invoice by FastBill invoice id, with all line items, VAT, payments and the document URL. invoice.get with INVOICE_ID.

Input parameters:

- `invoice_id` (integer, required): FastBill invoice id.

### `fastbill_list_recurring_invoices` (~100 tokens)

List recurring invoices

List recurring invoice templates (customer, interval data, totals, items). recurring.get.

Input parameters:

- `invoice_id` (integer): One recurring invoice id.
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.

### `fastbill_list_estimates` (~155 tokens)

List estimates

List estimates (quotes) with state (a created, b sent, c negotiation, d accepted, e rejected, f invoiced), totals and items. estimate.get.

Input parameters:

- `customer_id` (integer)
- `end_date` (string): A date, yyyy-mm-dd.
- `estimate_id` (integer)
- `estimate_number` (string)
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.
- `start_date` (string): A date, yyyy-mm-dd.

### `fastbill_list_expenses` (~173 tokens)

List expenses

List expense entries (supplier, category, net/VAT/gross, dates, document URL). Filter by invoice number or date ranges. expense.get.

Input parameters:

- `end_date` (string): A date, yyyy-mm-dd.
- `end_paid_date` (string): A date, yyyy-mm-dd.
- `invoice_id` (integer)
- `invoice_number` (string)
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.
- `start_date` (string): A date, yyyy-mm-dd.
- `start_paid_date` (string): A date, yyyy-mm-dd.

### `fastbill_list_revenues` (~171 tokens)

List revenues

List revenue entries (income booked in FastBill: customer, totals, dates, payments). Takes the same filters as invoices. revenue.get.

Input parameters:

- `customer_id` (integer)
- `end_date` (string): A date, yyyy-mm-dd.
- `end_paid_date` (string): A date, yyyy-mm-dd.
- `invoice_number` (string)
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.
- `start_date` (string): A date, yyyy-mm-dd.
- `start_paid_date` (string): A date, yyyy-mm-dd.

### `fastbill_list_articles` (~106 tokens)

List products

List products and services (article number, type, title, unit price, VAT, unit). article.get.

Input parameters:

- `article_id` (integer)
- `article_number` (string)
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.

### `fastbill_list_projects` (~103 tokens)

List projects

List projects (name, customer, hourly rate, VAT, start/end date). project.get.

Input parameters:

- `customer_id` (integer)
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.
- `project_id` (integer)

### `fastbill_list_time_entries` (~167 tokens)

List time entries

List work time entries (customer, project, date, minutes, billable minutes, comment, invoice). Without filters FastBill returns the latest entries of the current month. time.get.

Input parameters:

- `customer_id` (integer)
- `date` (string): One day.
- `end_date` (string): A date, yyyy-mm-dd.
- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.
- `project_id` (integer)
- `start_date` (string): A date, yyyy-mm-dd.
- `time_id` (integer)

### `fastbill_list_templates` (~103 tokens)

List document templates

List the invoice/estimate templates (template id, name, hash). Use a template id with the create tools. Ids change whenever a template is edited. template.get.

Input parameters:

- `limit` (integer): Results per call, 1-100 (default 25). Every call counts against FastBill's hourly API quota.
- `offset` (integer): Index of the first result, from 0 (default 0). Pass the previous reply's next_offset.

### `fastbill_create_customer` (~321 tokens)

Create customer

WRITE: create a customer. customer_type is required; a business needs organization, a consumer needs last_name. Bank details are not accepted by this tool. FastBill does not check for duplicates, so search with fastbill_list_customers first. customer.create.

Input parameters:

- `academic_degree` (string)
- `address` (string)
- `address_2` (string)
- `city` (string)
- `country_code` (string): ISO 3166 alpha-2, e.g. DE.
- `currency_code` (string)
- `customer_number` (string): Own customer number (FastBill assigns one if omitted).
- `customer_type` (string, required): business or consumer.
- `days_for_payment` (integer): Days until payment is due (stored with payment_type 1 only).
- `email` (string)
- `first_name` (string)
- `last_name` (string): Required for a consumer.
- `mobile` (string)
- `organization` (string): Company name (required for a business customer).
- `payment_type` (integer): 1 transfer, 3 cash, 4 PayPal, 5 advance payment, 6 credit card (direct debit needs bank details: set it in FastBill).
- `phone` (string)
- `position` (string)
- `salutation` (string)
- `tags` (string): Comma-separated tags.
- `vat_id` (string): VAT identification number.
- `website` (string)
- `zipcode` (string)

### `fastbill_update_customer` (~306 tokens)

Update customer

WRITE: update fields of an existing customer; only the fields you pass change. Bank details are not accepted by this tool. customer.update.

Input parameters:

- `academic_degree` (string)
- `address` (string)
- `address_2` (string)
- `city` (string)
- `country_code` (string): ISO 3166 alpha-2, e.g. DE.
- `currency_code` (string)
- `customer_id` (integer, required): FastBill customer id.
- `customer_number` (string): Own customer number (FastBill assigns one if omitted).
- `customer_type` (string)
- `days_for_payment` (integer): Days until payment is due (stored with payment_type 1 only).
- `email` (string)
- `first_name` (string)
- `last_name` (string): Required for a consumer.
- `mobile` (string)
- `organization` (string): Company name (required for a business customer).
- `payment_type` (integer): 1 transfer, 3 cash, 4 PayPal, 5 advance payment, 6 credit card (direct debit needs bank details: set it in FastBill).
- `phone` (string)
- `position` (string)
- `salutation` (string)
- `tags` (string): Comma-separated tags.
- `vat_id` (string): VAT identification number.
- `website` (string)
- `zipcode` (string)

### `fastbill_create_invoice` (~275 tokens)

Create invoice

WRITE: create an invoice for a customer from line items. FastBill stores it as a draft; it gets its number and becomes final only with fastbill_complete_invoice, and it is never sent by this tool. Check the result with fastbill_get_invoice. invoice.create.

Input parameters:

- `cash_discount_days` (integer)
- `cash_discount_percent` (number)
- `contract_reference` (string)
- `currency_code` (string)
- `customer_id` (integer, required): FastBill customer id (see fastbill_list_customers).
- `customer_order_reference` (string)
- `delivery_date` (string): A date, yyyy-mm-dd.
- `discount_percent` (number): Document discount in percent.
- `introtext` (string): Introduction text above the items.
- `invoice_date` (string): A date, yyyy-mm-dd.
- `invoice_title` (string)
- `is_gross` (boolean): True when unit_price values are gross.
- `items` (array, required): Line items (1-100).
- `service_period_end` (string): A date, yyyy-mm-dd.
- `service_period_start` (string): A date, yyyy-mm-dd.
- `template_id` (integer): Template id from fastbill_list_templates.
- `vat_case` (string): VAT case (default standard).

### `fastbill_complete_invoice` (~89 tokens)

Finalize invoice

WRITE, NOT REVERSIBLE: turn a draft invoice into a final invoice. FastBill assigns the invoice number and PDF; a final invoice can no longer be edited (it can only be canceled in FastBill). Nothing is sent to the customer. Only call this after the user confirmed the draft. invoice.complete.

Input parameters:

- `invoice_id` (integer, required): FastBill id of the DRAFT invoice.

### `fastbill_set_invoice_paid` (~81 tokens)

Mark invoice paid

WRITE: mark a final invoice as paid, with the payment date and method. invoice.setpaid.

Input parameters:

- `invoice_id` (integer, required): FastBill invoice id.
- `paid_date` (string): Date the payment arrived (default: FastBill's choice, today).
- `payment_method` (string): e.g. paypal, cash, bank name.

### `fastbill_create_estimate` (~144 tokens)

Create estimate

WRITE: create an estimate (quote) for a customer from line items. It is not sent. estimate.create.

Input parameters:

- `currency_code` (string)
- `customer_id` (integer, required): FastBill customer id (see fastbill_list_customers).
- `discount_percent` (number): Document discount in percent.
- `estimate_date` (string): A date, yyyy-mm-dd.
- `introtext` (string): Introduction text above the items.
- `is_gross` (boolean): True when unit_price values are gross.
- `items` (array, required): Line items (1-100).
- `template_id` (integer): Template id from fastbill_list_templates.

### `fastbill_create_article` (~116 tokens)

Create product

WRITE: create a product or service (article number, title and unit price are required). article.create.

Input parameters:

- `article_number` (string, required): Unique article number.
- `currency_code` (string)
- `description` (string)
- `is_gross` (boolean): True when unit_price is gross.
- `tags` (string)
- `title` (string, required)
- `type` (string)
- `unit` (string)
- `unit_price` (number, required)
- `vat_percent` (number)

### `fastbill_create_project` (~103 tokens)

Create project

WRITE: create a project for a customer (name and customer are required). project.create.

Input parameters:

- `currency_code` (string)
- `customer_id` (integer, required): FastBill customer id.
- `end_date` (string): A date, yyyy-mm-dd.
- `hour_price` (number): Hourly rate.
- `project_name` (string, required)
- `start_date` (string): A date, yyyy-mm-dd.
- `vat_percent` (number)

### `fastbill_create_time_entry` (~148 tokens)

Create time entry

WRITE: book a work time entry on a project (customer, project and start time are required). time.create.

Input parameters:

- `article_id` (integer): The service (article id) of the entry.
- `billable_minutes` (integer)
- `comment` (string)
- `customer_id` (integer, required)
- `date` (string): A date, yyyy-mm-dd.
- `end_time` (string): Date and time, YYYY-MM-DD hh:mm:ss.
- `minutes` (integer): Duration in minutes (not calculated from the times).
- `project_id` (integer, required)
- `start_time` (string, required): Date and time, YYYY-MM-DD hh:mm:ss.

## Diagnostics

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

## Score history

- 2026-11-06: 18
- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 18
- 2026-10-31: 65
- 2026-10-30: 62
- 2026-10-29: 61
- 2026-10-28: 61
- 2026-10-27: 60
- 2026-10-26: 60

## Common questions

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

FastBill MCP by usefulapi is listed in the public MCP registry as io.usefulapi/fastbill. Read FastBill customers, invoices, estimates, expenses; create customers, invoices, projects. This page covers its hosted endpoint (https://fastbill.usefulapi.io/mcp).

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

FastBill MCP by usefulapi scores 18 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 FastBill MCP by usefulapi server expose?

FastBill MCP by usefulapi exposes 22 tools: fastbill_list_customers, fastbill_get_customer, fastbill_list_contacts, fastbill_list_invoices, fastbill_get_invoice, and 17 more. Their descriptions and schemas cost roughly 3,366 tokens of context every time the server is loaded.

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

Its publisher declares no required credentials for FastBill MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

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

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

### What did VerifyMCP test on the FastBill MCP by usefulapi server?

VerifyMCP ran 4 checks on FastBill MCP by usefulapi, covering TLS certificate, HSTS header, DNSSEC and Transport. 7 items could not be completed, a gap on our side rather than a finding about FastBill MCP by usefulapi: Authorization, HTTPS, Schema quality, Stability and 3 more. 5 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

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