Skip to main content
Glama

add_field

Adds ONE typed field to an existing entity. Several fields to add: add_fields_batch places them in 1 call instead of N. The type parameter is a union discriminated by kind (string, int, uuid, reference, enum, etc.). For an FK: kind='reference' + referencesCellId/referencesFieldId, then add_relation to specify the cardinality.

Input Schema

NameRequiredDescriptionDefault
idYesUnique ID of the field (e.g. 'users-email'). Prefixing with the entity's ID helps avoid collisions.
nameYesName of the field (e.g. 'email', 'created_at')
typeYesDiscriminated type. E.g. { kind: "string", length: 255 }
orderNoDisplay order (default: last)
cellIdYesID of the parent entity (block with kind='entity')
isUniqueNoUNIQUE constraint (default false)
nullableNoOptional field (default true)
descriptionNoDocumentation of the field
defaultValueNoDefault value (SQL string)
isPrimaryKeyNoPrimary key (default false)
expectedProjectIdNoUUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • changedInput schema / properties / cellId / description
      Previous value: -"ID de l'entité parente (cell de kind='entity')"New value: +"ID of the parent entity (block with kind='entity')"
    • changedInput schema / properties / defaultValue / description
      Previous value: -"Valeur par défaut (SQL string)"New value: +"Default value (SQL string)"
    • changedInput schema / properties / description / description
      Previous value: -"Documentation du champ"New value: +"Documentation of the field"
    • changedInput schema / properties / expectedProjectId / description
      Previous value: -"UUID du projet visé par CET appel. Cible RÉELLEMENT ce projet au lieu du projet de session. Refusé sans rien modifier si l'accès n'est pas accordé."New value: +"UUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted."
    • changedInput schema / properties / id / description
      Previous value: -"ID unique du champ (ex: 'users-email'). Préfixer avec l'ID de l'entité aide à éviter les collisions."New value: +"Unique ID of the field (e.g. 'users-email'). Prefixing with the entity's ID helps avoid collisions."
    • changedInput schema / properties / isPrimaryKey / description
      Previous value: -"Clé primaire (défaut false)"New value: +"Primary key (default false)"
    • changedInput schema / properties / isUnique / description
      Previous value: -"Contrainte UNIQUE (défaut false)"New value: +"UNIQUE constraint (default false)"
    • changedInput schema / properties / name / description
      Previous value: -"Nom du champ (ex: 'email', 'created_at')"New value: +"Name of the field (e.g. 'email', 'created_at')"
    • changedInput schema / properties / nullable / description
      Previous value: -"Champ optionnel (défaut true)"New value: +"Optional field (default true)"
    • changedInput schema / properties / order / description
      Previous value: -"Ordre d'affichage (défaut: dernier)"New value: +"Display order (default: last)"
    • changedInput schema / properties / type / description
      Previous value: -"Type discriminé. Ex: { kind: \"string\", length: 255 }"New value: +"Discriminated type. E.g. { kind: \"string\", length: 255 }"
    • changedInput schema / properties / type / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "string",
      -        "type": "string"
      -      },
      -      "length": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "text",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "int",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "bigint",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "float",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "boolean",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "uuid",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "date",
      -        "type": "string"
      -      },
      -      "withTimezone": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "timestamp",
      -        "type": "string"
      -      },
      -      "withTimezone": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "jsonb",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "enum",
      -        "type": "string"
      -      },
      -      "values": {
      -        "description": "La liste COMPLÈTE des valeurs de l'énumération — elle REMPLACE celle qui est stockée. Pour en ajouter une, toutes les valeurs existantes (lisibles sur le champ) se renvoient avec la nouvelle.",
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "values"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "reference",
      -        "type": "string"
      -      },
      -      "referencesCellId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "referencesFieldId": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "referencesCellId",
      -      "referencesFieldId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "string",
      +        "type": "string"
      +      },
      +      "length": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "text",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "int",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "bigint",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "float",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "boolean",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "uuid",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "date",
      +        "type": "string"
      +      },
      +      "withTimezone": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "timestamp",
      +        "type": "string"
      +      },
      +      "withTimezone": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "jsonb",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "enum",
      +        "type": "string"
      +      },
      +      "values": {
      +        "description": "The COMPLETE list of the enumeration's values — it REPLACES the stored one. To add one, all the existing values (readable on the field) are sent back along with the new one.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "minItems": 1,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "values"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "reference",
      +        "type": "string"
      +      },
      +      "referencesCellId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "referencesFieldId": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "referencesCellId",
      +      "referencesFieldId"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / type / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "string",
      -        "type": "string"
      -      },
      -      "length": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "text",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "int",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "bigint",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "float",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "boolean",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "uuid",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "date",
      -        "type": "string"
      -      },
      -      "withTimezone": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "timestamp",
      -        "type": "string"
      -      },
      -      "withTimezone": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "jsonb",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "enum",
      -        "type": "string"
      -      },
      -      "values": {
      -        "description": "La liste COMPLÈTE des valeurs de l'énumération — elle REMPLACE celle qui est stockée. Pour en ajouter une, relis le champ et renvoie toutes les valeurs existantes avec la nouvelle.",
      -        "items": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "values"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "reference",
      -        "type": "string"
      -      },
      -      "referencesCellId": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "referencesFieldId": {
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "referencesCellId",
      -      "referencesFieldId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "string",
      +        "type": "string"
      +      },
      +      "length": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "text",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "int",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "bigint",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "float",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "boolean",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "uuid",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "date",
      +        "type": "string"
      +      },
      +      "withTimezone": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "timestamp",
      +        "type": "string"
      +      },
      +      "withTimezone": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "jsonb",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "enum",
      +        "type": "string"
      +      },
      +      "values": {
      +        "description": "La liste COMPLÈTE des valeurs de l'énumération — elle REMPLACE celle qui est stockée. Pour en ajouter une, toutes les valeurs existantes (lisibles sur le champ) se renvoient avec la nouvelle.",
      +        "items": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "minItems": 1,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "values"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "reference",
      +        "type": "string"
      +      },
      +      "referencesCellId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "referencesFieldId": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "referencesCellId",
      +      "referencesFieldId"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. First observed

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare a non-destructive, non-open-world mutation, so safety is covered. The description adds the discriminated-union call pattern and the add_relation follow-up, but much of it restates the schema (kind union, referencesCellId/referencesFieldId) rather than disclosing new behavior such as the enum 'values' replace semantics it leaves to the schema.

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?

Three tight sentences with the core purpose front-loaded, the batch alternative bolded, and the reference workflow last. No filler; each sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool whose annotations cover the safety profile and whose schema fully documents every parameter (no output schema to explain), the description covers the main call patterns and the FK follow-up. It could note failure conditions (e.g., duplicate id) but nothing essential is missing.

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?

Schema description coverage is 100%, so the schema already documents all 11 parameters, giving a baseline of 3. The description's notes on the `type` union and reference construction largely duplicate the schema, adding only the add_relation linkage, so no meaningful lift over structured fields.

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?

States a specific verb and resource ('Adds ONE typed field to an existing entity') and uniquely differentiates itself from the sibling add_fields_batch by emphasizing the singular 'ONE'. An agent can select this versus the batch variant without opening either 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?

Names the alternative (add_fields_batch) and the exact condition that selects it ('Several fields to add'). It also routes the agent to add_relation as the required follow-up for foreign keys, giving explicit when-to-use guidance for a multi-step workflow.

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.