Skip to main content
Glama
ninetails-io

gnucash-mcp

update_party

DestructiveIdempotent

Update customer, vendor, or employee details such as name, currency, notes, active status, or address. Pass only fields to change; returns a diff of what changed.

Instructions

Update a customer's, vendor's, or employee's mutable fields.

None = no change on every parameter; pass an empty string to clear notes. Returns a diff-style response with the changed fields only.

Args: party_type: "customer", "vendor", or "employee" (ID counters collide across types — always required). id: Party ID (e.g., "000001"). name: New display name. currency: New ISO currency code (future documents only). notes: New notes; "" clears. Employees have no notes field — rejected, not ignored. active: Set active/inactive (inactive parties hide from default listings but keep their history). address: Full replacement address (see create_party).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
notesNoNew notes value (capped at 4096 characters). Pass ``None`` (default) to leave existing notes unchanged; pass ``""`` to clear.
activeNo
addressNo
currencyNo
party_typeYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Addedv1.4.4

TDQS

A4.6/5.0
Behavior5/5

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

Despite annotations already signalling mutability and destructiveness, the description adds valuable behavioral detail: None means no change for every parameter, an empty string clears notes, employees have no notes field and will be rejected rather than ignored, inactive parties hide from listings but retain history, and currency affects future documents only. It also discloses the diff-style response format, going well beyond what annotations convey.

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 concise despite its length, with a front-loaded summary followed by a per-parameter breakdown. Every sentence adds operational value—clearing semantics, rejection behavior, scope limits—and there is no filler or repetition of schema details that are already obvious.

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?

Given the tool's moderate complexity, seven parameters, and existing output schema, the description covers all necessary invocation details: required fields, enum values, per-field semantics, error behavior for employees, and cross-reference for address format. An agent has enough to call the tool correctly without needing additional context.

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

Parameters5/5

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

Schema description coverage is only 14%, so the description carries nearly the entire burden for parameter meaning. It explains all seven parameters, including the collision rationale for party_type, the clearing semantics for notes, the 'future documents only' nuance for currency, the hiding behavior for active, and the full-replacement semantics for address. This far exceeds the schema's sparse documentation.

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 ('Update') and a precise resource scope ('a customer's, vendor's, or employee's mutable fields'). It clearly distinguishes update_party from sibling tools like create_party, delete_party, get_party, and list_parties by focusing on mutating existing parties rather than creating/removing/reading them.

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?

The intended use case is implied by 'Update' and the list of mutable fields, but the description never explicitly states when to choose this tool over alternatives or when not to use it. It does provide a pointer to create_party for address format, which is a limited cross-reference, but lacks direct sibling routing such as 'use create_party to add a new party.'

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ninetails-io/gnucash-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server