Skip to main content
Glama

Lexware Office MCP by usefulapi

Create a draft invoice

lexware_create_draft_invoice
Destructive

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 Schema

NameRequiredDescriptionDefault
zipNoOne-time address ZIP code.
cityNoOne-time address city.
nameNoOne-time recipient name (no contact is created). Required without contact_id.
titleNoDocument title (max 25 characters; default from Lexware).
remarkNoClosing remark (max 2000).
streetNoOne-time address street and number.
languageNoDocument language (default de; en needs the INVOICING_PRO feature).
tax_typeNoTax type (default net): net, gross, vatfree, intraCommunitySupply, constructionService13b, externalService13b, thirdPartyCountryService, thirdPartyCountryDelivery.
contact_idNoAn existing Lexware contact with the customer role (from lexware_list_contacts). Give this OR name + country_code.
line_itemsYes1-300 line items.
supplementNoOne-time address supplement.
country_codeNoISO 3166 alpha-2 country code, e.g. DE, AT, CH (lexware_list_countries lists the supported codes).
introductionNoIntroduction text (max 2000).
voucher_dateYesInvoice date (yyyy-mm-dd).
shipping_dateNoService/delivery date, or the start of the period (yyyy-mm-dd).
shipping_typeYesLeistungs-/Lieferdatum type: service or delivery (needs shipping_date), serviceperiod or deliveryperiod (needs shipping_date and shipping_end_date), none.
tax_type_noteNoNote for a vat-free tax type (Lexware uses the organization's default when omitted).
shipping_end_dateNoEnd of the service/delivery period (yyyy-mm-dd).
payment_term_labelNoPayment terms text shown on the document.
payment_term_durationNoDays until payment is due (the organization's or contact's default when omitted).
total_discount_percentageNoTotal discount in percent.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint=false and destructiveHint=true, the description still adds real value: the draft is never finalized, numbered or sent, Lexware assigns the number only on finalization, prices are EUR, and the call returns id + lexwareAppUrl. It does not warn about the consequence of idempotentHint=false (repeat calls create duplicate drafts), which is a meaningful remaining gap for a non-idempotent write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the 'WRITE:' marker and the draft semantics, then address handling, then currency, then return values. Every sentence carries distinct information with no filler, which is impressive given the surface area of the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 21-parameter mutation with no output schema, the description covers the essentials: what is created, its non-finalized lifecycle, how to address it, currency, and what is returned. The missing piece is behavior under repeated invocation and any preconditions on customer role/feature flags, so it is strong but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 21 parameters, including the contact_id vs name+country_code choice and the EUR pricing rule. The description largely restates those rules rather than adding syntax, ordering or validation detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with an explicit 'WRITE:' verb+resource marker and states precisely what is created: an invoice in Lexware Office as a DRAFT that is never finalized, numbered or sent. It also names the endpoint (POST /v1/invoices without finalize) and the two addressing modes, making it clearly distinguishable from read siblings and from lexware_create_draft_quotation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditional guidance: address to an existing customer via contact_id OR a one-time address via name + country_code, and explains the follow-up (review and finalize in Lexware Office). It stops short of naming alternatives or exclusions (e.g. when to prefer lexware_create_draft_quotation or a finalized-invoice path), so it is strong context without explicit tool routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.