Skip to main content
Glama

Companies: Update Company Stammdaten

update_company_stammdaten
DestructiveIdempotent

Change the company's identity and contact data: name, Rechtsform, register, address, Branche, contact person.

Only what you pass changes; clear empties fields. A Beleg printed with the company's own name or address is told apart from a supplier's by these fields, so a change sends the Belege in review back to recognition. former_names and former_addresses replace the stored lists (an empty list removes them). A Kanzlei's own company takes its identity from the Kanzlei profile. Needs can_edit_stammdaten (list_companies).

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": {
      "company": "<company>"
    },
    "name": "update_company_stammdaten"
  }
}

Input Schema

NameRequiredDescriptionDefault
landNo2-letter ISO country code.
nameNolegal name.
clearNofields to empty.
emailNothe company's e-mail; it can be replaced, never cleared.
phoneNophone number.
brancheNoWZ 2025 code, e.g. 62.10.
companyYescompany name or id.
websiteNodomain or http(s) address.
bundeslandNoBundesland code, e.g. BE.
legal_formNoRechtsform.
address_cityNocity.
beschreibungNowhat the company does, sells and typically buys, in the caller's own words, up to 2000 characters. Fibalo books Belege with it word for word, never translated. The caller writes its own side: the company's text, or the Kanzlei's when a Kanzlei person acts for a Mandant (beschreibung_quelle in list_companies). An empty string deletes it. Needs can_edit_beschreibung.
contact_nameNocontact person.
former_namesNoearlier names of the company, the whole list.
contact_emailNocontact person's e-mail.
contact_phoneNocontact person's phone.
address_streetNostreet.
registernummerNoe.g. HRB 12345.
registergerichtNoRegistergericht, e.g. Amtsgericht Charlottenburg.
former_addressesNoearlier addresses (street, house number, postcode, city), the whole list.
contact_languagesNolanguages the contact person speaks.
address_postal_codeNopostal code.
address_house_numberNohouse number.
unternehmensgegenstandNothe registered object of the company, up to 2000 characters.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / beschreibung
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "what the company does, sells and typically buys, in the caller's own words, up to 2000\ncharacters. Fibalo books Belege with it word for word, never translated. The caller writes its own side:\nthe company's text, or the Kanzlei's when a Kanzlei person acts for a Mandant (beschreibung_quelle in\nlist_companies). An empty string deletes it. Needs can_edit_beschreibung."
      +}
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered; the description goes further by naming the concrete downstream consequence — a change sends Belege currently in review back to recognition — and by explaining that former_names/former_addresses replace the whole stored list rather than appending. It also discloses that a Kanzlei's own company derives identity from the Kanzlei profile, a non-obvious behavioral special case.

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 purpose is front-loaded in the first clause and the four follow-on sentences each carry distinct operational information (clear semantics, Belege side effect, list replacement, Kanzlei special case, permission). It is dense and occasionally telegraphic — compressed German-domain nouns like 'Belege in review' require inference — but no sentence is filler.

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 24-parameter destructive mutation with an output schema and full schema descriptions, the description supplies the remaining decision-critical context: permission gate, partial-update contract, destructive side effect on in-review Belege, and whole-list replacement for former_* fields. Only the secondary permission on `beschreibung` is left to the schema, which already states it.

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

Parameters4/5

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

Schema coverage is 100%, so per-field meaning is already documented, but the description adds cross-cutting semantics the schema does not: null/omitted fields are untouched while `clear` explicitly empties, and list-valued parameters overwrite rather than merge. The one asymmetry it omits is that `beschreibung` follows its own permission (can_edit_beschreibung) and carries a separate source rule, which the schema text but not the description covers.

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 description opens with a specific verb and resource ('Change the company's identity and contact data') and then enumerates the field families covered: name, Rechtsform, register, address, Branche, contact person. That enumeration is precisely what separates it from the sibling settings tools such as update_company_steuern, update_company_rechnungen, and update_company_fremdsoftware, so an agent can pick the right tool without opening a schema.

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?

It states the partial-update rule ('Only what you pass changes; `clear` empties fields') and the prerequisite ('Needs can_edit_stammdaten (list_companies)'), which is exactly the kind of gating information an agent needs before calling. It stops short of explicitly routing to alternatives (e.g. the separate tax-number or invoicing settings tools), so it is strong but not fully discriminating.

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.

Resources