# Lexware Office MCP by usefulapi (remote · lexware-office.usefulapi.io)

Read Lexware Office contacts, articles, invoices and vouchers; create contacts and draft invoices.

- Trust score: 65/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-17

## Components

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

## Channel facts

- Endpoint: `https://lexware-office.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.2.1`

## 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**: 79/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3546 tokens (~168/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 94% 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 21 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 22 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 Lexware Office MCP by usefulapi server?

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

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-lexware-office": {
      "type": "http",
      "url": "https://lexware-office.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 65, +1)

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

### 2026-10-15 (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-14 (score 63, +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.4.0 → 1.5.0

### 2026-10-13 (score 61, +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-12 (score 60, 0)

- [functional improvement] Stability: unverified → 0.07

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

First indexed and scored.

## MCP tools (21)

### `lexware_get_profile` (~85 tokens)

Get the company profile

The connected Lexware Office organization: organizationId, company name, the user who created the API key, tax type (net/gross/vatfree), small-business flag (Kleinunternehmer), distance-sales principle and the plan's business features (INVOICING, INVOICING_PRO, BOOKKEEPING). Good first call. GET /v1/profile.

### `lexware_list_contacts` (~201 tokens)

List or search contacts

List customers and vendors, optionally filtered (filters combine with AND). name and email match as case-insensitive substrings (at least 3 characters; _ and % are wildcards). Paged: pass next_page as page. GET /v1/contacts.

Input parameters:

- `customer` (boolean): true = only contacts with the customer role, false = only contacts without it.
- `email` (string): Part of any of the contact's email addresses (min 3 characters).
- `name` (string): Part of the contact's name (min 3 characters).
- `number` (integer): Customer or vendor number.
- `page` (integer): Page index, 0-based (default 0). Use next_page from the previous reply.
- `size` (integer): Results per page, 1-250 (default 25).
- `vendor` (boolean): true = only contacts with the vendor role, false = only contacts without it.

### `lexware_list_articles` (~140 tokens)

List articles

List articles (products and services usable as invoice line items), with price, tax rate and unit. Optional exact filters by article number, GTIN or type. Paged: pass next_page as page. GET /v1/articles.

Input parameters:

- `article_number` (string): Exact article number.
- `gtin` (string): GTIN (EAN) of the article.
- `page` (integer): Page index, 0-based (default 0). Use next_page from the previous reply.
- `size` (integer): Results per page, 1-250 (default 25).
- `type` (string): Only products or only services.

### `lexware_list_vouchers` (~475 tokens)

List vouchers (invoices, quotations, receipts...)

Search the voucher list: metadata (id, type, status, number, dates, contact, total and open amount) of sales documents (invoice, quotation, creditnote, orderconfirmation, deliverynote, downpaymentinvoice) and bookkeeping vouchers (salesinvoice, salescreditnote, purchaseinvoice, purchasecreditnote). Omit voucher_types / voucher_statuses for all. Then fetch details with the matching get tool (invoice → lexware_get_invoice, quotation → lexware_get_quotation, creditnote → lexware_get_credit_note, orderconfirmation → lexware_get_order_confirmation, deliverynote → lexware_get_delivery_note, downpaymentinvoice → lexware_get_down_payment_invoice, the four bookkeeping types → lexware_get_bookkeeping_voucher). Dates are yyyy-mm-dd, whole days in German time. Up to 10,000 results can be paged through; narrow the dates for more. GET /v1/voucherlist.

Input parameters:

- `archived` (boolean): true = only archived, false = only not archived.
- `contact_id` (string): Only vouchers of this contact.
- `created_date_from` (string): Created from (yyyy-mm-dd, inclusive).
- `created_date_to` (string): Created to (yyyy-mm-dd, inclusive).
- `direction` (string): Sort direction (default DESC).
- `page` (integer): Page index, 0-based (default 0). Use next_page from the previous reply.
- `size` (integer): Results per page, 1-250 (default 25).
- `sort` (string): Sort field (default voucherDate).
- `updated_date_from` (string): Last changed from (yyyy-mm-dd, inclusive).
- `updated_date_to` (string): Last changed to (yyyy-mm-dd, inclusive).
- `voucher_date_from` (string): Voucher date from (yyyy-mm-dd, inclusive).
- `voucher_date_to` (string): Voucher date to (yyyy-mm-dd, inclusive).
- `voucher_number` (string): Exact voucher number, e.g. RE1019.
- `voucher_statuses` (array): Statuses to include (default: all). overdue cannot be combined with other statuses; accepted/rejected apply to quotations, unchecked to bookkeeping vouchers.
- `voucher_types` (array): Voucher types to include (default: all).

### `lexware_get_invoice` (~84 tokens)

Get an invoice

Get one invoice by id: status (draft/open/paid/voided), line items, totals, tax amounts, payment and shipping conditions, related vouchers. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/invoices/{id}.

Input parameters:

- `id` (string, required): The invoice id (from lexware_list_vouchers).

### `lexware_get_quotation` (~77 tokens)

Get a quotation

Get one quotation by id: status (draft/open/accepted/rejected), expiration date, line items, totals. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/quotations/{id}.

Input parameters:

- `id` (string, required): The quotation id (from lexware_list_vouchers).

### `lexware_get_credit_note` (~73 tokens)

Get a credit note

Get one credit note by id: status, line items, totals, related invoice. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/credit-notes/{id}.

Input parameters:

- `id` (string, required): The credit note id (from lexware_list_vouchers).

### `lexware_get_order_confirmation` (~72 tokens)

Get an order confirmation

Get one order confirmation by id: status, line items, totals, delivery terms. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/order-confirmations/{id}.

Input parameters:

- `id` (string, required): The order confirmation id (from lexware_list_vouchers).

### `lexware_get_delivery_note` (~71 tokens)

Get a delivery note

Get one delivery note by id: status, line items, shipping conditions. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/delivery-notes/{id}.

Input parameters:

- `id` (string, required): The delivery note id (from lexware_list_vouchers).

### `lexware_get_down_payment_invoice` (~80 tokens)

Get a down payment invoice

Get one down payment invoice (Abschlagsrechnung) by id: status, amounts, related closing invoice. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/down-payment-invoices/{id}.

Input parameters:

- `id` (string, required): The down payment invoice id (from lexware_list_vouchers).

### `lexware_get_dunning` (~82 tokens)

Get a dunning

Get one dunning (payment reminder) by id: status, the dunned invoice in relatedVouchers, line items, totals. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/dunnings/{id}.

Input parameters:

- `id` (string, required): The dunning id (from lexware_list_vouchers).

### `lexware_get_bookkeeping_voucher` (~99 tokens)

Get a bookkeeping voucher

Get one bookkeeping voucher (salesinvoice, salescreditnote, purchaseinvoice or purchasecreditnote from the voucher list) by id: status, voucher items with posting category ids, tax amounts, contact, file ids. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/vouchers/{id}.

Input parameters:

- `id` (string, required): The bookkeeping voucher id (from lexware_list_vouchers).

### `lexware_get_article` (~71 tokens)

Get an article

Get one article (product or service) by id: title, type, article number, GTIN, unit, net/gross price and tax rate. GET /v1/articles/{id}.

Input parameters:

- `id` (string, required): The article id (from lexware_list_vouchers / lexware_list_articles).

### `lexware_get_contact` (~88 tokens)

Get a contact

Get one contact (customer and/or vendor) by id: customer/vendor numbers, company or person, contact persons, addresses, emails, phones, note. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/contacts/{id}.

Input parameters:

- `id` (string, required): The contact id (from lexware_list_vouchers / lexware_list_contacts).

### `lexware_get_payments` (~92 tokens)

Get a voucher's payments

Payment status of an invoice, credit note, down payment invoice or bookkeeping voucher: open amount, payment status (balanced/openRevenue/openExpense), paid date and the payment items (bank transactions, cash, credit notes, Skonto). Not available for quotations or drafts. GET /v1/payments/{voucherId}.

Input parameters:

- `voucher_id` (string, required): The voucher id (from lexware_list_vouchers).

### `lexware_list_countries` (~45 tokens)

List countries

Countries known to Lexware Office with their code, English and German name and tax classification (de, intraCommunity, thirdPartyCountry). GET /v1/countries.

### `lexware_list_payment_conditions` (~45 tokens)

List payment conditions

The payment conditions configured in Lexware Office (days until due, early-payment discount, label template, which is the organization default). GET /v1/payment-conditions.

### `lexware_list_posting_categories` (~85 tokens)

List posting categories

Bookkeeping posting categories (id, name, group, income or outgo, whether a contact is required and split tax rates are allowed), used by bookkeeping vouchers' categoryId. Optionally only income or outgo. GET /v1/posting-categories.

Input parameters:

- `type` (string): Only income (revenue) or outgo (expense) categories.

### `lexware_create_contact` (~376 tokens)

Create a contact

WRITE: creates a new customer and/or vendor in Lexware Office (Lexware assigns the customer/vendor number). Give company_name for a company OR person_last_name for a private person. One billing and one shipping address, one email and one phone at most. Check lexware_list_contacts first to avoid duplicates. POST /v1/contacts.

Input parameters:

- `allow_tax_free_invoices` (boolean): Company: allow tax-free invoices.
- `billing_address` (object)
- `company_name` (string): Company name (for a company contact).
- `contact_person_email` (string)
- `contact_person_first_name` (string)
- `contact_person_last_name` (string): Company: last name of the (primary) contact person.
- `contact_person_phone` (string)
- `contact_person_salutation` (string)
- `email` (string): Business email address.
- `note` (string): Internal note (max 1000 characters).
- `person_first_name` (string): Private person: first name.
- `person_last_name` (string): Private person: last name.
- `person_salutation` (string): Private person: salutation, e.g. Frau, Herr.
- `phone` (string): Business phone number.
- `roles` (array): Roles of the new contact (default customer).
- `shipping_address` (object)
- `tax_number` (string): Company tax number (Steuernummer).
- `vat_registration_id` (string): Company VAT id (USt-IdNr.), e.g. DE123456789.
- `xrechnung_buyer_reference` (string): German public authority: Leitweg-ID (needs xrechnung_vendor_number_at_customer).
- `xrechnung_vendor_number_at_customer` (string): Your vendor number at that customer (with the Leitweg-ID).

### `lexware_create_draft_invoice` (~536 tokens)

Create a draft invoice

WRITE: creates an invoice in Lexware Office as a DRAFT (never finalized, numbered or sent; Lexware assigns the number when the user finalizes it in the app). Address it to an existing customer (contact_id) or a one-time address (name + country_code). Prices are EUR. Returns the new id and lexwareAppUrl to review and finalize it in Lexware Office. POST /v1/invoices (without finalize).

Input parameters:

- `city` (string): One-time address city.
- `contact_id` (string): An existing Lexware contact with the customer role (from lexware_list_contacts). Give this OR name + country_code.
- `country_code` (string): ISO 3166 alpha-2 country code, e.g. DE, AT, CH (lexware_list_countries lists the supported codes).
- `introduction` (string): Introduction text (max 2000).
- `language` (string): Document language (default de; en needs the INVOICING_PRO feature).
- `line_items` (array, required): 1-300 line items.
- `name` (string): One-time recipient name (no contact is created). Required without contact_id.
- `payment_term_duration` (integer): Days until payment is due (the organization's or contact's default when omitted).
- `payment_term_label` (string): Payment terms text shown on the document.
- `remark` (string): Closing remark (max 2000).
- `shipping_date` (string): Service/delivery date, or the start of the period (yyyy-mm-dd).
- `shipping_end_date` (string): End of the service/delivery period (yyyy-mm-dd).
- `shipping_type` (string, required): Leistungs-/Lieferdatum type: service or delivery (needs shipping_date), serviceperiod or deliveryperiod (needs shipping_date and shipping_end_date), none.
- `street` (string): One-time address street and number.
- `supplement` (string): One-time address supplement.
- `tax_type` (string): Tax type (default net): net, gross, vatfree, intraCommunitySupply, constructionService13b, externalService13b, thirdPartyCountryService, thirdPartyCountryDelivery.
- `tax_type_note` (string): Note for a vat-free tax type (Lexware uses the organization's default when omitted).
- `title` (string): Document title (max 25 characters; default from Lexware).
- `total_discount_percentage` (number): Total discount in percent.
- `voucher_date` (string, required): Invoice date (yyyy-mm-dd).
- `zip` (string): One-time address ZIP code.

### `lexware_create_draft_quotation` (~466 tokens)

Create a draft quotation

WRITE: creates a quotation (Angebot) in Lexware Office as a DRAFT (never finalized or sent). Address it to an existing customer (contact_id) or a one-time address (name + country_code). Prices are EUR. Returns the new id and lexwareAppUrl to review and finalize it in Lexware Office. POST /v1/quotations (without finalize).

Input parameters:

- `city` (string): One-time address city.
- `contact_id` (string): An existing Lexware contact with the customer role (from lexware_list_contacts). Give this OR name + country_code.
- `country_code` (string): ISO 3166 alpha-2 country code, e.g. DE, AT, CH (lexware_list_countries lists the supported codes).
- `expiration_date` (string, required): Valid until (yyyy-mm-dd), on or after voucher_date.
- `introduction` (string): Introduction text (max 2000).
- `language` (string): Document language (default de; en needs the INVOICING_PRO feature).
- `line_items` (array, required): 1-300 line items.
- `name` (string): One-time recipient name (no contact is created). Required without contact_id.
- `payment_term_duration` (integer): Days until payment is due (the organization's or contact's default when omitted).
- `payment_term_label` (string): Payment terms text shown on the document.
- `remark` (string): Closing remark (max 2000).
- `street` (string): One-time address street and number.
- `supplement` (string): One-time address supplement.
- `tax_type` (string): Tax type (default net): net, gross, vatfree, intraCommunitySupply, constructionService13b, externalService13b, thirdPartyCountryService, thirdPartyCountryDelivery.
- `tax_type_note` (string): Note for a vat-free tax type (Lexware uses the organization's default when omitted).
- `title` (string): Document title (max 25 characters; default from Lexware).
- `total_discount_percentage` (number): Total discount in percent.
- `voucher_date` (string, required): Quotation date (yyyy-mm-dd).
- `zip` (string): One-time address ZIP code.

## Diagnostics

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

## Score history

- 2026-10-17: 65
- 2026-10-16: 64
- 2026-10-15: 64
- 2026-10-14: 63
- 2026-10-13: 61
- 2026-10-12: 60
- 2026-10-10: 60

## Common questions

### What is the Lexware Office MCP by usefulapi server?

Lexware Office MCP by usefulapi is listed in the public MCP registry as io.usefulapi/lexware-office. Read Lexware Office contacts, articles, invoices and vouchers; create contacts and draft invoices. This page covers its hosted endpoint (https://lexware-office.usefulapi.io/mcp).

### Is the Lexware Office MCP by usefulapi server safe to use?

Lexware Office MCP by usefulapi scores 65 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 Lexware Office MCP by usefulapi server expose?

Lexware Office MCP by usefulapi exposes 21 tools: lexware_get_profile, lexware_list_contacts, lexware_list_articles, lexware_list_vouchers, lexware_get_invoice, and 16 more. Their descriptions and schemas cost roughly 3,343 tokens of context every time the server is loaded.

### Does the Lexware Office MCP by usefulapi server require authentication?

Yes. Lexware Office 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 Lexware Office MCP by usefulapi server still maintained?

Lexware Office 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://lexware-office.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/lexware-office/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-lexware-office/lexware-office.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-lexware-office/lexware-office.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-lexware-office/lexware-office
