lexware-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LEXWARE_API_TOKEN | Yes | Your Lexware Office API token |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| lexware_create_invoiceA | Create a new invoice in Lexware; finalize=true creates status "open", false or omitted creates a draft, and the API cannot finalize an existing draft. In introduction, lineItems[].description, and remark, use only Lexware formatting: bold, italic, and dash-prefixed list items separated by newlines. |
| lexware_get_invoiceA | Retrieve an invoice by ID from Lexware. |
| lexware_download_invoice_fileA | Download the file for an invoice. Defaults to PDF; pass format="xml" to request the XRechnung XML e-invoice when available (the API returns whatever representation it can render). |
| lexware_pursue_invoiceA | Create a new invoice from a quotation, order confirmation, or delivery note via |
| lexware_deeplink_invoiceA | Get a direct link to view/edit an invoice in the Lexware web app. |
| lexware_create_credit_noteA | Create a new credit note in Lexware; finalize=true finalizes at creation, false or omitted creates a draft. In introduction, lineItems[].description, and remark, use only Lexware formatting: bold, italic, and dash-prefixed list items separated by newlines. |
| lexware_get_credit_noteA | Retrieve a credit note by ID from Lexware. |
| lexware_download_credit_note_fileA | Download the file for a credit note. Defaults to PDF; pass format="xml" to request the XRechnung XML e-invoice when available (the API returns whatever representation it can render). |
| lexware_pursue_credit_noteA | Create a new credit note from an invoice via |
| lexware_deeplink_credit_noteA | Get a direct link to view/edit a credit note in the Lexware web app. |
| lexware_create_quotationA | Create a new quotation in Lexware; finalize=true finalizes at creation, false or omitted creates a draft. In introduction, lineItems[].description, and remark, use only Lexware formatting: bold, italic, and dash-prefixed list items separated by newlines. |
| lexware_get_quotationB | Retrieve a quotation by ID from Lexware. |
| lexware_download_quotation_fileA | Download the PDF file for a quotation. |
| lexware_deeplink_quotationA | Get a direct link to view/edit a quotation in the Lexware web app. |
| lexware_create_order_confirmationA | Create a new order confirmation in Lexware; finalize=true finalizes at creation, false or omitted creates a draft. In introduction, lineItems[].description, and remark, use only Lexware formatting: bold, italic, and dash-prefixed list items separated by newlines. |
| lexware_get_order_confirmationA | Retrieve an order confirmation by ID from Lexware. |
| lexware_download_order_confirmation_fileA | Download the PDF file for an order confirmation. |
| lexware_pursue_order_confirmationA | Create a new order confirmation from a quotation via |
| lexware_deeplink_order_confirmationA | Get a direct link to view/edit an order confirmation in the Lexware web app. |
| lexware_create_delivery_noteA | Create a new delivery note in Lexware; finalize=true finalizes at creation, false or omitted creates a draft. In introduction, lineItems[].description, and remark, use only Lexware formatting: bold, italic, and dash-prefixed list items separated by newlines. |
| lexware_get_delivery_noteA | Retrieve a delivery note by ID from Lexware. |
| lexware_download_delivery_note_fileA | Download the PDF file for a delivery note. |
| lexware_pursue_delivery_noteB | Create a new delivery note from a quotation or order confirmation via |
| lexware_deeplink_delivery_noteA | Get a direct link to view/edit a delivery note in the Lexware web app. |
| lexware_get_down_payment_invoiceB | Retrieve a down payment invoice by ID from Lexware. |
| lexware_download_down_payment_invoice_fileA | Download the file for a down payment invoice. Defaults to PDF; pass format="xml" to request the XRechnung XML e-invoice when available (the API returns whatever representation it can render). |
| lexware_deeplink_down_payment_invoiceA | Get a direct link to view/edit a down payment invoice in the Lexware web app. |
| lexware_pursue_dunningA | Create a new dunning from an invoice via |
| lexware_get_dunningA | Retrieve a dunning by ID from Lexware. |
| lexware_download_dunning_fileA | Download the PDF file for a dunning. |
| lexware_deeplink_dunningA | Get a direct link to view/edit a dunning in the Lexware web app. |
| lexware_list_articlesA | List all articles with optional pagination. |
| lexware_get_articleA | Get a single article by ID. |
| lexware_create_articleB | Create a new article. Only description supports Lexware formatting (bold, italic, and dash-prefixed list items separated by newlines); article title does not support formatting. |
| lexware_update_articleA | Update an article with the current version field for optimistic locking. Only description supports Lexware formatting (bold, italic, and dash-prefixed list items separated by newlines); article title does not support formatting. |
| lexware_delete_articleB | Delete an article by ID. |
| lexware_list_contactsA | List all contacts with optional pagination and filters. |
| lexware_get_contactA | Get a single contact by ID. |
| lexware_create_contactB | Create a new contact. |
| lexware_update_contactA | Update an existing contact. The body must include the version field for optimistic locking. |
| lexware_deeplink_contactB | Get a direct URL to view a contact in the Lexware web app. Returns deeplink and its permanent alias url with the same value. |
| lexware_list_countriesA | List all available countries with their tax classifications. |
| lexware_list_payment_conditionsA | List all available payment conditions. |
| lexware_list_posting_categoriesA | List all available posting categories for bookkeeping. |
| lexware_get_profileA | Get the organization profile information. |
| lexware_list_print_layoutsA | List available print layout templates. |
| lexware_create_voucherA | Create a new bookkeeping voucher in Lexware. |
| lexware_get_voucherA | Retrieve a bookkeeping voucher by ID from Lexware. The voucherStatus field in the response is normalized to its canonical lowercase form. Known values: unchecked, open, paid, paidoff, voided, transferred, sepadebit. Retries up to 3 times (1 s / 2 s / 4 s) on 404 to absorb the indexing delay after an upload; if the voucher is still missing, returns { voucherId, status: "processing", message } rather than an error. Other failures are reported as errors. |
| lexware_update_voucherA | Update a bookkeeping voucher with the current version for optimistic locking. If the existing voucher is unchecked, the update must transition voucherStatus to open. |
| lexware_list_vouchersA | Look up bookkeeping vouchers by voucher number. GET /vouchers is a LOOKUP endpoint, not a browsable collection: the Lexware API rejects any call without voucherNumber with HTTP 400 "voucherNumber parameter is required". To browse or filter vouchers, use lexware_list_voucherlist, which is the collection endpoint and carries the summary fields (contactName, openAmount) that /vouchers does not. |
| lexware_upload_voucher_fileA | Upload a file attachment to a bookkeeping voucher. Provide either filePath (absolute path on the MCP server host) or contentBase64 (base64-encoded content) — not both. When using filePath, fileName is optional (derived from the file name) and contentType is auto-detected for common image extensions. When using contentBase64, fileName is required. |
| lexware_deeplink_voucherA | Get a direct link to view/edit a bookkeeping voucher in the Lexware web app. |
| lexware_list_voucherlistB | Search and filter across all voucher types in Lexware. This is the main way to find invoices, credit notes, quotations, and other voucher types. |
| lexware_get_paymentsA | Get payment details for a specific voucher. |
| lexware_create_event_subscriptionA | Create a Lexware webhook subscription for an external callback handler; this MCP server manages subscriptions and verifies signatures but does not host a receiver. Acknowledge with HTTP 200/204 within 5 seconds, enqueue the payload for asynchronous processing, and throttle outgoing API calls to respect rate limits. |
| lexware_list_event_subscriptionsA | List all webhook event subscriptions in Lexware. |
| lexware_get_event_subscriptionA | Retrieve a webhook event subscription by ID from Lexware. |
| lexware_delete_event_subscriptionB | Delete a webhook event subscription from Lexware. |
| lexware_verify_webhook_signatureA | Verify a Lexware webhook X-Lxo-Signature (RSA-SHA512, base64) against the raw request body. Pass the EXACT raw HTTP body bytes you received — do not JSON.parse/stringify round-trip, as Lexware signs the compact JSON as transmitted (whitespace and key order matter). On first call the public key is fetched once from developers.lexware.io and cached for the process lifetime; set LEXWARE_WEBHOOK_PUBLIC_KEY (PEM) to override (recommended for production where you cannot tolerate one-time TLS-substitution risk on the public-key fetch). |
| lexware_upload_fileA | Upload a file to Lexware. Provide either filePath (absolute path on the MCP server host) or contentBase64 (base64-encoded content) — not both. When using filePath, fileName is optional (derived from the file name) and contentType is auto-detected for common image extensions. When using contentBase64, fileName is required. |
| lexware_download_fileB | Download a file from Lexware as base64-encoded content. Choose pdf (default) or xml for an available e-invoice XML original. |
| lexware_get_file_statusA | Get the processing status of an uploaded file from Lexware. Requires an API key with the file-status scope; keys without it get an access_denied error from Lexware. |
| lexware_deeplink_fileB | Get a direct link to the bookkeeping inbox of newly-uploaded files in the Lexware web app. |
| lexware_list_recurring_templatesB | List recurring invoice templates from Lexware. |
| lexware_get_recurring_templateA | Retrieve a recurring invoice template by ID from Lexware. |
| lexware_deeplink_recurring_templateA | Get a direct link to view/edit a recurring invoice template in the Lexware web app. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| lexware-api-reference | Read-only Lexware API reference, including supported text formatting, voucher update constraints, and external webhook callback guidance. |
TDQS
Scored across 66 tools
Most tools target distinct resources, but several pairs overlap: create_invoice vs pursue_invoice (create-from-preceding-voucher), the generic download_file/upload_file vs per-type download_invoice_file/download_credit_note_file/upload_voucher_file, and the similarly-named list_vouchers (lookup) vs list_voucherlist (collection). Descriptions do a good job disambiguating them, but the boundaries are not obvious from names alone.
Nearly everything follows a predictable lexware_verb_noun snake_case pattern (create_/get_/list_/update_/download_/deeplink_). Minor deviations: the odd verb 'pursue' for create-from-preceding, and the inconsistent list_vouchers vs list_voucherlist naming.
66 tools is very heavy and well past the point where an agent can easily scan the surface. The broad ERP domain (articles, contacts, vouchers, sales documents, files, webhooks) justifies many tools, but the count is inflated by per-type download/deeplink/pursue variants that could be consolidated.
Core workflows are covered: articles and contacts have CRUD, vouchers have create/get/update/list plus file upload and payments, webhooks have full lifecycle including signature verification. Gaps remain (no delete for contacts or most sales documents, no update for invoices/quotations), though many reflect Lexware API limits.