Lexware Office MCP by usefulapi
REMOTE · LEXWARE-OFFICE.USEFULAPI.IO
Read Lexware Office contacts, articles, invoices and vouchers; create contacts and draft invoices.
Available components
Last scanned (6 hours ago)
Scores higher than 47% of remote servers
Reachable. Last reached 17 Oct 2026.
Category Finance and Payments
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. How we score → Why this is hard to score →
Endpoint Security78
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- 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. View diagnostics → Pass
- HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability0
- Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly. See how to fix → View diagnostics → Fail
Schema Quality & AI Usability79
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- 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. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 94% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Oct 26 +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.
- 15 Oct 26 +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.
- 14 Oct 26 +2
- The server rewrote its instructions, which are the text every model session reads security
- 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 functional
- 13 Oct 26 +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.
- 12 Oct 26 0
- Stability: unverified → 0.07 ▲ functional
- 10 Oct 26 60
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 17 Oct 2026 · Probed https://lexware-office.usefulapi.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=usefulapi.io | CN=WE1,O=Google Trust Services,C=US | 13 Sept 2026 | 12 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | d9be3287b0fde9630e825ba1f79bff3f |
| SANs: usefulapi.io, *.usefulapi.io | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of lexware-office.usefulapi.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 57355 | 8 | Verified |
| usefulapi.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 302 |
WWW-Authenticate challenge Bearer realm="OAuth", resource_metadata="https://lexware-office.usefulapi.io/.well-known/oauth-protected-resource/mcp"
Bearer realm="OAuth", resource_metadata="https://lexware-office.usefulapi.io/.well-known/oauth-protected-resource/mcp" Protected resource metadata
| Document | https://lexware-office.usefulapi.io/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://lexware-office.usefulapi.io/mcp |
| Authorisation server | https://lexware-office.usefulapi.io |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://lexware-office.usefulapi.io/mcp | Redirected | 302 | https://usefulapi.io/lexware-office/ |
| http (plaintext) | http://lexware-office.usefulapi.io/mcp | Inconclusive | 302 | http://lexware-office.usefulapi.io/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
lexware_create_contact Create a contact ~376
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| 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). |
No output schema declared.
No examples provided.
lexware_create_draft_invoice Create a draft invoice ~536
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).
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | 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 | yes | 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 | yes | Invoice date (yyyy-mm-dd). |
| zip | string | – | One-time address ZIP code. |
No output schema declared.
No examples provided.
lexware_create_draft_quotation Create a draft quotation ~466
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).
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | 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 | yes | 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 | yes | Quotation date (yyyy-mm-dd). |
| zip | string | – | One-time address ZIP code. |
No output schema declared.
No examples provided.
lexware_get_article Get an article ~71
Get one article (product or service) by id: title, type, article number, GTIN, unit, net/gross price and tax rate. GET /v1/articles/{id}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The article id (from lexware_list_vouchers / lexware_list_articles). |
No output schema declared.
No examples provided.
lexware_get_bookkeeping_voucher Get a bookkeeping voucher ~99
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The bookkeeping voucher id (from lexware_list_vouchers). |
No output schema declared.
No examples provided.
lexware_get_contact Get a contact ~88
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The contact id (from lexware_list_vouchers / lexware_list_contacts). |
No output schema declared.
No examples provided.
lexware_get_credit_note Get a credit note ~73
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The credit note id (from lexware_list_vouchers). |
No output schema declared.
No examples provided.
lexware_get_delivery_note Get a delivery note ~71
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The delivery note id (from lexware_list_vouchers). |
No output schema declared.
No examples provided.
lexware_get_down_payment_invoice Get a down payment invoice ~80
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The down payment invoice id (from lexware_list_vouchers). |
No output schema declared.
No examples provided.
lexware_get_dunning Get a dunning ~82
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The dunning id (from lexware_list_vouchers). |
No output schema declared.
No examples provided.
lexware_get_invoice Get an invoice ~84
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The invoice id (from lexware_list_vouchers). |
No output schema declared.
No examples provided.
lexware_get_order_confirmation Get an order confirmation ~72
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The order confirmation id (from lexware_list_vouchers). |
No output schema declared.
No examples provided.
lexware_get_payments Get a voucher's payments ~92
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| voucher_id | string | yes | The voucher id (from lexware_list_vouchers). |
No output schema declared.
No examples provided.
lexware_get_profile Get the company profile ~85
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
lexware_get_quotation Get a quotation ~77
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The quotation id (from lexware_list_vouchers). |
No output schema declared.
No examples provided.
lexware_list_articles List articles ~140
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
No output schema declared.
No examples provided.
lexware_list_contacts List or search contacts ~201
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.
| Name | Type | Req | Description |
|---|---|---|---|
| customer | boolean | – | true = only contacts with the customer role, false = only contacts without it. |
| 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. |
No output schema declared.
No examples provided.
lexware_list_countries List countries ~45
Countries known to Lexware Office with their code, English and German name and tax classification (de, intraCommunity, thirdPartyCountry). GET /v1/countries.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
lexware_list_payment_conditions List payment conditions ~45
The payment conditions configured in Lexware Office (days until due, early-payment discount, label template, which is the organization default). GET /v1/payment-conditions.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
lexware_list_posting_categories List posting categories ~85
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.
| Name | Type | Req | Description |
|---|---|---|---|
| type | string | – | Only income (revenue) or outgo (expense) categories. |
No output schema declared.
No examples provided.
lexware_list_vouchers List vouchers (invoices, quotations, receipts...) ~475
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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). |
No output schema declared.
No examples provided.
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.
remote · lexware-office.usefulapi.io
claude mcp add --transport http io-usefulapi-lexware-office 'https://lexware-office.usefulapi.io/mcp'
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.