Skip to main content
Glama
Unofficial Lexware Office MCP Server

Unofficial Lexware Office MCP Server

create_contact

Create a new customer or vendor contact in Lexware Office with addresses, contact details, and roles. Verify the profile and search existing names first, since created contacts cannot be deleted via the API.

Instructions

Create a new customer or vendor in the account.

Writes real accounting data, and the API cannot take it back: there is no call that deletes a contact, though the web app does. Confirm the organization with get_profile first, and search the name with search_contacts: Lexware allows a second contact with the same name, and later documents then attach to either at random. One API call.

Returns the id and version, not the record. Lexware assigns the customer and vendor numbers, so read the contact back to see them.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "kind": "<kind>",
      "name": "<name>",
      "roles": "<roles>"
    },
    "name": "create_contact"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindYesWhether this contact is a company or a private person. A contact is one or the other and cannot be changed from one into the other afterwards.
nameYesThe company name, or for a person the last name. Give the first name separately.
noteNoFree-text note on the contact, at most 1000 characters.
emailNoOne email address. On an update it replaces the ones the contact has rather than adding another.
phoneNoOne phone number. As with the email address, this replaces rather than adds.
rolesYesWhat this contact is to the account: a customer, a vendor, or both. At least one is required. On an update this replaces the roles the contact has, so pass both to keep both.
first_nameNoFirst name. Persons only.
salutationNoSalutation such as 'Frau' or 'Herr'. Persons only.
tax_numberNoNational tax number. Companies only.
billing_addressNoThe billing address. A contact has at most one.
shipping_addressNoThe shipping address. A contact has at most one.
vat_registration_idNoVAT registration id, for example 'DE123456789'. Companies only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.8.4

TDQS

A4.4/5.0
Behavior4/5

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

This is the rare description that discloses irreversibility in plain terms - there is no delete endpoint even though the web app can delete - plus that the API assigns customer/vendor numbers and that the response is only id and version, not the record. The annotations (readOnlyHint=false, idempotentHint=false) are consistent with a non-idempotent write, and the description goes well beyond them. It stops short of stating auth/permission requirements, so it is not a 5.

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 critical warning about irreversibility is front-loaded in bold before any procedural detail, which is the right ordering. A few phrases ('though the web app does', 'One API call.') are terse enough that the line breaks feel slightly fragmented, but nothing is wasted.

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

Completeness5/5

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

For a 12-parameter creation tool with no output schema, the description covers what an agent most needs: side effects, irreversibility, prerequisites, call count, and return shape. Field-level detail is fully delegated to a 100%-covered schema, so nothing material is missing.

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 coverage is 100%: every parameter, including the nested Address, carries its own description and enum constraints, so the schema does the heavy lifting. The description adds no field-level semantics beyond warning that the name must be unique-ish and must be searched first. Baseline 3 is appropriate.

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?

The opening sentence names a specific verb and resource ('Create a new customer or vendor in the account'), which immediately separates it from update_contact and the other create_* siblings. It also scopes the result ('customer or vendor'), so an agent knows exactly what kind of object is produced.

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?

It prescribes a concrete pre-flight sequence: confirm the organization with `get_profile`, then check the name with `search_contacts`, and explains why (Lexware permits duplicate names, and documents then attach to either at random). It also notes the call count ('One API call'), which is guidance an agent would otherwise have to infer.

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