Skip to main content
Glama

Update account metadata

update-account-metadata
Destructive

Change the definition of a metadata field the account can see, whether it is one of the account's own fields or a system_reference field provided by fynk.

Use this tool when:

  • The user asks to rename a metadata field, or to change what it holds

  • The user asks to start or stop having fynk's AI analyses fill a field in

  • The user asks to change which document types a field applies to

  • The user asks to put one of fynk's fields back to how fynk provides it

metadata_uuid comes from list-account-metadata. Send only the arguments that should change; everything left out keeps its current value. Sending null for description, prompt or keywords clears it.

A field's name and value_type are fixed at creation and this tool cannot change either. To rename a field for the people using it, change display_name - in Title Case, the way fynk's own fields are named ("Signing Date", "Contract Value").

fynk's own system_reference fields can be reconfigured per account: the change applies to this account alone and leaves the field as fynk defines it everywhere else, and putting an argument back to fynk's own value stops overriding it. fynk's other system field types (system, system_autofilled, system_computed) are maintained entirely by fynk and cannot be changed at all.

One of fynk's fields that an account has reconfigured reports the arguments it overrides as overridden_fields, from this tool and from list-account-metadata alike. Send reset_to_fynk_default: true on its own to drop all of them at once, leaving the account reading the field exactly as fynk provides it; there is no per-argument reset, so re-send whichever of them are still wanted afterwards.

select_values replaces the whole list of options, which are literally what a user picks from, so write them as presentable labels: "Net 30", not "net 30". They govern what can be chosen from now on and leave values already recorded on documents as they are, so prefer adding an option to renaming or removing one. Since the list is replaced wholesale, send every option that should remain: one left out is one taken away.

Taking away an option that documents already hold is refused until the user has confirmed it. Such a value stays on its document but can no longer be filtered for. The refusal names the options and how many documents and templates still use each - then repeat the call with confirmed_removing_options_in_use: true. Send that only in answer to such a refusal, never as a matter of course. reset_to_fynk_default is covered the same way, since putting fynk's own options back takes away any the account added to them.

Put the effect to the user in their own terms and ask before going ahead - "removing Net 90 would affect 3 documents that still use it, shall I go ahead?" - rather than quoting the refusal back at them.

prompt and keywords decide whether fynk's AI analyses fill this field in - a prompt puts the field into them, keywords only assist it and do nothing on their own. So set both together to have a field extracted, and clear prompt to take a field back out of the analyses and leave it to only be filled in by hand.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
promptNoWhat the AI analyses should extract for this field, and what puts the field into them (max 1024 characters). Define what the value is, then qualify it the way fynk's own fields do - what counts, what does not, and what to do when the document is not explicit - over several sentences where that helps. The "Net Rent" field reads: "The net rent for the property, which is the rent excluding any taxes or costs e.g. VAT. It must be explicitly stated in the contract as net rent per month. Derive the currency unit from the parties to the contract if it is not explicitly stated." A single vague line extracts poorly. null takes the field back out of the analyses
keywordsNoComma-separated keywords that help the AI analyses locate the field in a document (max 1024 characters). List the terms as they would appear in a contract, including synonyms and the equivalents in other languages the account's documents are written in - the "Net Rent" field carries "net rent, netto miete, netto kaltmiete, kaltmiete, nettomiete pro monat". These have no effect without a `prompt`. null clears them
descriptionNoWhat the field holds, shown to users configuring it (max 1024 characters). null clears it
display_nameNoNew human-readable name shown in the UI, in Title Case (max 255 characters), e.g. "Discount Rate". The field's programmatic name cannot be changed
metadata_uuidYesUUID of the metadata field to update, as reported by list-account-metadata
select_valuesNoReplaces the whole list of options a user picks from, written as presentable labels, e.g. ["Net 30", "Net 60"]. Only for "select" and "multi_select" fields
is_contract_valueNoWhether the field counts towards a document's calculated contract value. Only allowed when the field's value_type is "currency" or "currency_duration"
reset_to_fynk_defaultNoSend true to drop everything this account has configured on one of fynk's "system_reference" fields, so that it reads the field exactly as fynk provides it. Only true is accepted, only for a field whose overridden_fields are not empty, and only on its own - no other argument may accompany it
relevant_document_type_uuidsNoReplaces the document types the field is meaningful for, as uuids from list-account-document-types. Send null or an empty list to make it meaningful for none; send relevant_for_all_document_types instead to make it meaningful for every one
relevant_for_all_document_typesNoSend true to make the field meaningful for every document type, including any added later. Only true is accepted, and not together with relevant_document_type_uuids
confirmed_removing_options_in_useNoSend true only once the user has confirmed - in answer to the refusal that named them - that select options this account's documents already hold should be taken away. A change that takes no such option away refuses it, so never send it as a matter of course

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoInternal name of the metadata field
typeNoThe type of the metadata field, which defines where its value comes from. account: Custom metadata fields that are specific to your account system_reference: Pre-defined useful metadata fields provided by fynk system_autofilled: Fields that are automatically filled by the system in response to events, like "Signing completion date" system_computed: Fields that are calculated by the system based on other metadata values. e.g. "Signing duration" is the difference between "Signing date" and "Signed date" system: Other system-provided metadata fields
uuidNoDo not show to the user unless they ask for it
settingsNoExtra configuration for the field. Not present means there is nothing to restrict
value_typeNoControls the kinds of values that can be assigned to the metadata
_entity_typeNoOnly relevant for tooling. Do not show to the user
display_nameNoHuman-readable name of the metadata field
select_valuesNoWhen value_type is "select" or "multi_select", defines the allowed values. For these types of metadata, ONLY these values are possible. Absent for every other value type
is_contract_valueNoWhether this field counts towards a document's calculated contract value. Only meaningful when value_type is "currency" or "currency_duration"
overridden_fieldsNoOnly for a "system_reference" field the account has configured differently to how fynk provides it, and absent otherwise: the update-account-metadata arguments it has changed, e.g. ["display_name", "select_values"]. Send reset_to_fynk_default to that tool to put all of them back
relevant_document_typesNoNames of the document types this field is meaningful for. Empty together with relevant_for_all_document_types false means the field is not in use for any document type, so charting it will likely produce no data
relevant_for_all_document_typesNoWhen true, the field is meaningful for every document type and relevant_document_types is empty

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, and the description adds substantial context beyond them: null-clearing semantics, wholesale replacement of `select_values`, refusal behavior when in-use options are removed (including the refusal naming affected documents), the reset-only-on-its-own constraint, and the fact that `system`, `system_autofilled`, and `system_computed` fields cannot be changed at all. It also explains the `overridden_fields` reporting and that reset has no per-argument counterpart.

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 description is long but front-loads purpose and a scannable when-to-use list before descending into edge cases. For an 11-parameter destructive mutation with a two-step confirmation flow, most sentences earn their place, though a few points (e.g. the AI-extraction explanation) could be tightened without losing meaning.

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?

An output schema exists, so return-value explanation is unnecessary, and the description covers everything else an agent needs: source of `metadata_uuid`, mutation semantics, immutable fields, confirmation escalation, reset behavior, and the phrasing to use when confirming with a user. No material gap is left for this complex destructive tool.

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, but the description adds cross-parameter rules the schema does not state as clearly: only changed arguments should be sent, `reset_to_fynk_default` must travel alone, `confirmed_removing_options_in_use` is only valid in answer to a refusal, and `prompt`/`keywords` must be set together. These interaction constraints materially improve correct invocation.

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 first sentence states a specific verb and resource ('Change the definition of a metadata field the account can see') and draws the scope boundary between the account's own fields and fynk's `system_reference` fields. The bulleted use cases (rename, AI fill, document-type applicability, reset) make it immediately distinguishable from create-account-metadata and delete-account-metadata.

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?

Explicit when-to-use bullets cover all four use cases, and the text routes the agent to `list-account-metadata` for `metadata_uuid`, to `display_name` for renames (versus the immutable `name`), and to `reset_to_fynk_default` versus per-argument re-sends. The confirmation flow for destructive option removal is spelled out as a conditional ('Send that only in answer to such a refusal, never as a matter of course').

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