Skip to main content
Glama
ohneben

Buchhaltungsbutler MCP

Invoices: create invoice draft

invoices_create_draft

Create an invoice draft for a customer to prepare it for human review and release in the web app. Drafts remain unbooked and get no invoice number until finalized.

Instructions

🟡 WRITE · creates data: Creates new records (receipts, transactions, postings, invoices, master data). Not idempotent: calling twice may create duplicates.

create invoice draft

Add an invoice draft for the specified customer.

Use to prepare an invoice that a human should review and release in the BuchhaltungsButler web app.

A draft is not booked and carries no invoice number. To issue a final invoice directly, use invoices_create.

v1 offers no endpoint to list, edit or release drafts. Releasing happens in the web app.

Endpoint: POST /invoices/create/draft

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zipNoThe zip of the recipient company. If specified, the field will be validated.
cityNoThe city of the recipient company. If specified, the field will be validated.
dateYesThe date of the invoice.
typeYesCan be either 'invoice' ("Rechnung"), 'credit' ("Gutschrift") or 'offer' ("Angebot").
emailNoThe email for sending the invoice. If specified, the field will be validated.
streetNoThe street of the recipient company. If specified, the field will be validated.
countryNoThe country of the recipient company. If specified, the field will be validated. Valid cases are only the German version of the country name [Dänemark] OR the two digit ISO code of the country [DK].
item_vatYesAn array of invoice item vats. Usage: "item_vat" : ['7', '19'] Valid vat rates are floating point numbers between 0 and 100.
languageNoThe language for translatable invoice labels (e.g. headings, table headers, payment terms). Can be either 'de_DE' ("Deutsch", default) or 'en_US' ("English"). If omitted, German is used.
item_nameYesAn array of invoice items. Usage: "item_name" : ['Item 1', 'Item 2']
item_unitYesAn array of invoice items units. Usage: "item_unit" : ['Std.', 'Stk.']
item_amountYesAn array of invoice item amounts. Usage: "item_amount" : ['10', '20']
company_nameYesThe company name of the recipient.
discount_typeNoThe type of the discount. Can be either 'percent' or 'EUR'. If specified, the field will be validated.
show_bankdataNoShow the the bank data on the invoice. If specified, the field will be validated.
correspondenceNoThe optional correspondence to the invoice recipient. If specified, the field will be validated.
date_of_supplyNoDate or period of service/delivery. NOTE: The date_of_supply will be displayed on the PDF, but when the date AND the date_of_supply is specified in the format "YYYY-MM-DD", the date_of_supply will also be taken over as date_delivery of the receipt in the 'Belege' or 'Belege/Buchen' view. IMPORTANT: Due to the DATEV compatibility, we cannot accept a date_of_supply that is after the invoice date. In that case it will be ignored!
discount_valueNoThe value of granted discount. If specified, the field will be validated.
customer_numberNoThe customer number of the recipient. If specified, the field will be validated.
final_provisionsNoThe final comment of the invoice. If specified, the field will be validated.
item_descriptionNoAn array of invoice item description. Usage: "item_description" : ['Description Item 1', 'Description Item 2']. If specified, the field will be validated.
show_contactdataNoShow the contact data on the invoice. If specified, the field will be validated.
show_prices_typeYesCan be either 'net' ("Netto") or 'gross' ("Brutto").
item_single_priceYesAn array of invoice item single_prices. Usage: "item_single_price" : ['20', '19.99']
payment_conditionsNoThe payment conditions of the invoice. If specified, the field will be validated.
recurring_intervalNoAn interval for recurring invoices. Can be either 'weekly', 'monthly', 'quarterly' or 'yearly'. If specified, the field will be validated.
contact_person_nameNoThe name of the contact person of the recipient company. If specified, the field will be validated.
recurring_date_nextNoThe next date of a recurring invoice. IMPORTANT: The field is required, if "recurring_interval" is specified. If specified, the field will be validated.
additional_addresslineNoThe additional address information of the recipient company. If specified, the field will be validated.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
messageNoblank
successYesSuccess boolean

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.1.2
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "message": {
      +      "description": "blank",
      +      "type": "string"
      +    },
      +    "success": {
      +      "description": "Success boolean",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "success"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changedv1.1.0
    • removedInput schema / properties / api_key
      Removed value: -{
      -  "description": "Optional. The BB customer api_key to act on. Defaults to the BB_API_KEY configured on the server — only set this to target a different customer.",
      -  "type": "string"
      -}
  3. Changed1 schema field changedv1.0.2
    • addedInput schema / properties / language
      Added value: +{
      +  "description": "The language for translatable invoice labels (e.g. headings, table headers, payment terms). Can be either 'de_DE' (\"Deutsch\", default) or 'en_US' (\"English\").\n\nIf omitted, German is used.",
      +  "type": "string"
      +}
  4. First observedv1.0.0

TDQS

A4.5/5.0
Behavior5/5

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

Adds concrete behavioral details beyond the annotations: 'Not idempotent: calling twice may create duplicates,' 'A draft is not booked and carries no invoice number,' and 'Releasing happens in the web app.' These are nuances not captured by the annotations (readOnlyHint=false, idempotentHint=false, openWorldHint=true) and are valuable for agents.

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

Conciseness4/5

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

The description is well-structured with a clear front-loaded write warning, purpose statement, use-case, and endpoint. It is slightly verbose (the generic 'WRITE · creates data' prelude is not tool-specific), but every other sentence earns its place. Overall, it is concise enough for an agent to parse quickly.

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?

Given the high parameter complexity, an output schema, and a rich set of sibling tools, the description covers the essential context: the draft workflow, the non-idempotence, and the explicit alternative for final invoices. It does not explain return formats, but the output schema exists to cover that. The only minor gap is that it doesn't mention other invoice-related siblings like invoices_create_e_invoice, but that is not necessary for selecting this tool correctly.

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 input schema already documents every parameter thoroughly. The description provides no additional parameter-level information, but per the rubric the baseline is 3 when the schema carries the burden. The description does not introduce ambiguity or omissions.

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?

States a specific verb ('Add an invoice draft'), the resource ('for the specified customer'), and clearly distinguishes itself from the sibling tool invoices_create by explaining the difference (draft vs. final invoice). It also notes that drafts are not booked and have no invoice number, making the tool's purpose unambiguous.

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

Usage Guidelines5/5

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

Explicitly describes when to use this tool: 'Use to prepare an invoice that a human should review and release' and contrasts it directly with the alternative: 'To issue a final invoice directly, use invoices_create.' Additionally, it states that v1 offers no listing/editing/release endpoints, informing the user of workflow limitations.

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