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.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "value_type": "<value_type>",
      "name": "<name>",
      "display_name": "<display_name>"
    },
    "name": "create-account-metadata"
  }
}

Input 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

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. Changed1 schema field changed
    • changedInput schema / properties / value_type / enum
      Previous value: -[
      -  "id",
      -  "uuid",
      -  "bool",
      -  "date",
      -  "duration",
      -  "email",
      -  "list",
      -  "number",
      -  "currency",
      -  "currency_duration",
      -  "clause",
      -  "select",
      -  "multi_select",
      -  "text",
      -  "textarea",
      -  "timestamp",
      -  "array",
      -  "enum"
      -]New value: +[
      +  "bool",
      +  "date",
      +  "duration",
      +  "email",
      +  "number",
      +  "currency",
      +  "currency_duration",
      +  "clause",
      +  "select",
      +  "multi_select",
      +  "text",
      +  "textarea",
      +  "timestamp"
      +]
  2. First observed

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the mutation profile is known. The description adds real context beyond that: name and value_type are immutable after creation, system fields cannot be re-created under the same name, and select_values is rejected for non-select types. It does not cover what happens on a name collision (error vs. silent failure) or any permission requirements.

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?

Purpose and the use-when list are front-loaded, and each paragraph addresses a distinct concern (prerequisite, naming, select values, immutability, AI fields). It runs long and the prompt/keywords paragraph duplicates schema wording, plus 'it is worth getting the rest right first time rather than leaving a correction to make later' is padded.

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 no explanation. For a 9-parameter creation tool with annotations, the description covers prerequisites, ordering, naming conventions, conditional parameter rules, immutability and defaults - enough for an agent to call it correctly without guessing.

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?

With schema description coverage at 100%, the schema already documents all nine parameters thoroughly, so the baseline is 3. The description does add convention-level guidance the schema lacks - Title Case for display_name, presentable labels for select_values, and the 'product colour' -> product_colour / 'Product Colour' example - but much of the prompt/keywords paragraph restates what the schema says.

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 opening sentence names a specific verb and resource ('Create a new account-level metadata field definition'), which is clearly distinct from create-account-tag, create-account-document-type and the document-level tools. However, it never explicitly points to update-account-metadata as the tool for changing an existing field, so sibling differentiation for the mutation pair is only implied by the immutability note.

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 name both triggers (user asks for a new field; a field must exist before update-document-metadata-values). It also names a prerequisite ('Call list-account-metadata first'), explains why (existing/system fields), and describes the typical AI-setup path versus the manual-field exception.

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