Skip to main content
Glama

Save supplier

save_supplier

Create or update a supplier. Pass an id to update that supplier; omit id to create a new one. Returns the new supplier id on create. Updating an existing supplier with an opening date later than its own earliest bill or expense is refused, unwritten, with code confirm-required until the same call is repeated with confirm true. To create/update many at once, send an items array — one all-or-nothing transaction with a single ledger recompute; each item with an id updates, each without creates.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoSupplier id. Present → update that supplier; omit → create a new one.
cityNoCity.
nameNoDisplay name / description of the supplier.
emailNoSupplier email address.
itemsNoVector of supplier objects to create/update in one all-or-nothing batch. Preferred over repeated calls. Each item with an id updates; each without creates.
suburbNoSuburb or district.
addressNoStreet address line 1.
confirmNoPROD-1951: required only to save an opening date that is LATER than the supplier's own earliest bill or expense. Without it that one case is refused, unwritten, with code confirm-required plus earliesttransactiondate and transactionsbefore, so the caller can show what the date would exclude from the creditors balance and let the user override it.
countryNoSupplier country (ISO code or name).
starredNoWhether this supplier is marked as a favourite.
address2NoStreet address line 2.
vatnumberNoVAT / tax registration number.
postalcodeNoPostal or ZIP code.
contactnameNoName of the primary contact person.
openingdateNoDate the opening balance applies from (ISO 8601).
contactemailNoEmail of the primary contact person.
contactnumberNoPhone number of the primary contact person.
openingbalanceNoOpening balance amount carried for this supplier at openingdate.
registrationnumberNoBusiness registration number.
clearopeningbalanceNoReserved, mirrors update_bank_account: when true the opening-date confirmation below is not asked.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / clearopeningbalance
      Added value: +{
      +  "description": "Reserved, mirrors update_bank_account: when true the opening-date confirmation below is not asked.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / confirm
      Added value: +{
      +  "description": "PROD-1951: required only to save an opening date that is LATER than the supplier's own earliest bill or expense. Without it that one case is refused, unwritten, with code confirm-required plus earliesttransactiondate and transactionsbefore, so the caller can show what the date would exclude from the creditors balance and let the user override it.",
      +  "type": "boolean"
      +}
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint false, destructiveHint false), the description discloses a critical behavioral edge case: updating with an opening date later than the earliest bill/expense is 'refused, unwritten, with code confirm-required' until confirm=true. It also reveals the batch operation is 'one all-or-nothing transaction with a single ledger recompute', and that create returns the new id. These are exactly the non-obvious behaviors an agent needs to anticipate.

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?

The description is compact and front-loaded: it opens with the core action, follows with basic id semantics, then the important exception and batch capability. Every sentence conveys a distinct piece of information, with no filler or redundant schema repetition.

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?

Despite having 20 parameters, no output schema, and minimal annotations, the description covers all essential runtime behaviors: create/update distinction, the confirmation requirement for a specific date scenario, and batch transaction semantics. Parameter-level detail is left to the schema, which is fully documented, so nothing critical is missing for correct invocation.

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 description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining the id parameter's role in update vs create, the items array's batch atomicity, and the confirm parameter's edge-case necessity (including the response code confirm-required and related transaction metadata). This enriches the schema without repeating it.

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 states the precise verb 'Create or update' and the resource 'supplier', immediately distinguishing it from sibling save tools like save_client or save_product. It also clarifies the optional id identifies the entity, and the final sentence extends to batch updates, leaving no ambiguity about the tool's scope.

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?

The description gives explicit usage conditions: 'Pass an id to update that supplier; omit id to create a new one' and 'To create/update many at once, send an items array'. It does not explicitly state when not to use this tool versus alternatives, but given the resource-specific naming and clear create/update semantics, the context is sufficient for an agent to select it correctly.

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