Skip to main content
Glama

Create account metadata

create-account-metadata

Create a new account-level metadata field definition.

Use this tool when:

  • The user asks for a new metadata field to track some piece of information on their documents

  • You need a metadata field to exist before writing values to it with update-document-metadata-values

Call list-account-metadata first: the account may already have a field for what the user wants, and fynk provides a range of system metadata fields that cannot be re-created under the same name.

name is the programmatic identifier (lowercase letters, digits and underscores only) and display_name is what the user sees. Write display_name in Title Case, the way fynk's own fields are named ("Signing Date", "Contract Value"), rather than copying the user's phrasing verbatim - a request for "a product colour metadata" should still produce product_colour / "Product Colour".

select and multi_select fields require select_values (the allowed options); no other field type accepts them. These strings are literally what the user picks from in the UI, so write them as presentable labels, capitalised like display_name: "Red", "Green", "Blue", not the "red, green or blue" lifted out of the request.

name and value_type are fixed at creation and cannot be changed afterwards, and it is worth getting the rest right first time rather than leaving a correction to make later. So confirm any detail the user has not spelled out instead of guessing at it - in particular the exact select_values strings, since a request like "a colour field with red, green or blue" names the options without settling how they should read.

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. This is how a new field is normally set up: fynk's own creation form turns AI analysis on by default and requires both. So propose a prompt and keywords drawn from what the field is for rather than silently leaving them out, and omit both only for a field the user wants to fill in by hand. Set a description as well - it is what tells a user configuring the field what it holds.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesProgrammatic name of the field, unique within the account (lowercase letters, digits and underscores only, max 255 characters), e.g. "discount_rate". Cannot be changed after creation
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
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". Send these alongside a `prompt`; they have no effect without one
value_typeYesControls the kinds of values the field accepts (e.g. "text", "number", "currency", "date", "select"). Cannot be changed after creation
descriptionNoWhat the field holds, shown to users configuring it (max 1024 characters)
display_nameYesHuman-readable name shown in the UI, in Title Case (max 255 characters), e.g. "Discount Rate"
select_valuesNoRequired for the "select" and "multi_select" value types, and rejected for every other type: the options a user picks from, written as presentable labels, e.g. ["Red", "Green", "Blue"]
is_contract_valueNoWhether the field counts towards a document's calculated contract value. Only allowed when value_type is "currency" or "currency_duration". Defaults to false
relevant_document_type_uuidsNoThe document types the field is meaningful for, as uuids from list-account-document-types. Omit to make the field relevant for every document type, which is the usual choice; send an empty list or null to make it relevant for none

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 only declare readOnlyHint=false/destructiveHint=false/openWorldHint=false, but the description adds substantial behavioural context: `name` and `value_type` are immutable after creation, system metadata fields cannot be re-created under the same name, and `keywords` have no effect without a `prompt`. It also explains that select_values are rejected for other types and that AI analysis is on by default.

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?

Front-loaded with purpose and trigger conditions, and each paragraph carries real guidance. However, it is long and repeats schema content almost verbatim (the select_values rule, the Title Case rule, the immutability of name/value_type), so not every sentence earns its place.

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 values need not be explained. For a 9-parameter creation tool with AI-prompt semantics, the description covers creation constraints, naming conventions, sibling routing, select_values coupling, and prompt/keywords interaction — everything an agent needs to call it correctly.

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 the schema already documents all nine parameters, but the description adds meaning beyond it: a worked naming example (a 'product colour' request should yield `product_colour` / "Product Colour"), the Title Case convention, and the instruction to confirm unspecified details rather than guess. Some of this (Title Case, select_values requirement) restates the schema, so it is not purely additive.

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?

Opens with a specific verb+resource: 'Create a new account-level metadata field definition.' This clearly distinguishes it from siblings like create-account-document-type, create-account-tag, and update-account-metadata. An agent can identify both the action and the target object without opening the schema.

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 'Use this tool when' bullets cover the two real triggers, and it names two concrete alternatives/prerequisites: call list-account-metadata first to avoid duplicates and system fields, and use update-document-metadata-values afterwards to write values. Both when-to-use and when-not-to-use are covered.

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