Skip to main content
Glama
Storno CLI

Storno CLI

Official
by stornoro

clients_update

Idempotent

Update an existing client by UUID with optional fields, so only supplied details change. Use it to correct contact, billing, VAT, or status data without overwriting other client information.

Instructions

Update an existing client by UUID. All fields are optional — only the provided fields will be updated.

Input Schema

NameRequiredDescriptionDefault
cnpNoPersonal numeric code / CNP (for individual type)
cuiNoCompany tax ID / CUI (for company type)
cityNoCity
nameNoClient name (company or individual full name)
typeNoClient type: "company" or "individual"
uuidYesClient UUID to update
emailNoClient email address
notesNoInternal notes about the client
phoneNoClient phone number
countyNoCounty / state
statusNoPartner rule: active (default), warning (a notice is shown when the client is picked on an invoice) or blocked (the client cannot be invoiced — issue is refused)
addressNoStreet address
countryNoISO 3166-1 alpha-2 country code
vatCodeNoVAT registration code (e.g., RO12345678)
bankNameNoBank name
currencyNoPreferred currency for this client (ISO 4217, e.g., EUR, USD, RON)
idNumberNoClient identification number (personal ID, passport, etc.)
companyIdNoCompany UUID override (uses active company if not set)
affiliatedNoAffiliated party — D394 sets prsAfiliat = 1 when an affiliated partner appears on an invoice of the period
isVatPayerNoWhether the client is registered for VAT
postalCodeNoPostal / ZIP code
bankAccountNoIBAN or bank account number
creditLimitNoPartner rule: maximum outstanding balance in the company currency; issuing an invoice that would exceed it returns a `warning` (never a refusal). null removes the limit
contactPersonNoName of the primary contact person
registrationNumberNoTrade registry number (e.g., J40/1234/2020)
defaultPaymentTermDaysNoDefault payment term in days for invoices issued to this client

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.0.48
    • addedInput schema / properties / affiliated
      Added value: +{
      +  "description": "Affiliated party — D394 sets prsAfiliat = 1 when an affiliated partner appears on an invoice of the period",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / creditLimit
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Partner rule: maximum outstanding balance in the company currency; issuing an invoice that would exceed it returns a `warning` (never a refusal). null removes the limit"
      +}
    • addedInput schema / properties / status
      Added value: +{
      +  "description": "Partner rule: active (default), warning (a notice is shown when the client is picked on an invoice) or blocked (the client cannot be invoiced — issue is refused)",
      +  "enum": [
      +    "active",
      +    "warning",
      +    "blocked"
      +  ],
      +  "type": "string"
      +}
  2. First observedv1.0.17

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare idempotentHint=true and destructiveHint=false, so the safety profile is already covered. The description's real contribution is the partial-update semantic ("All fields are optional — only the provided fields will be updated"), which is a meaningful behavioral trait beyond the structured fields. It omits what happens on an unknown UUID or whether the updated client is returned.

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?

Two short sentences, zero waste, with the target resource front-loaded and the key partial-update rule second. Nothing is redundant or padded.

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

Completeness3/5

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

For a 26-parameter mutation the description covers the essentials an agent needs to call it, and the schema is fully documented. It does not address failure modes (invalid/unknown UUID, type conflicts between cnp and cui), nor what the call yields, which matters somewhat given there is no output schema.

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%, so every one of the 26 parameters carries its own description, including enum values and domain notes for status/creditLimit. The description adds only the global optionality rule and no field-level meaning beyond the schema, which is the correct baseline-3 outcome when the schema does the heavy lifting.

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

Purpose4/5

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

The description uses a specific verb+resource ("Update an existing client") and names the lookup key (UUID), so the agent knows exactly what the tool operates on. It doesn't explicitly contrast with siblings like clients_create or clients_get, but the 'existing' qualifier makes the update path unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: 'existing client' versus creating a new one, and 'only the provided fields will be updated' hints that this is the tool for incremental edits. There is no explicit statement about when to prefer this over clients_create, clients_sync_invoices, or what to do when a field needs clearing rather than setting.

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

Deploy Server

Other Tools