Skip to main content
Glama

Add Sheet Field

sheet.add_attribute

Add a new attribute (field) to an existing sheet. Use during refinement (add a phone field). dataType MUST be a canonical Atwork name; for currency, pass dataType Number with description: "USD; whole numbers". Returns the new attributeId. For a Status/Select/Multi-Select field, pass the choices as options.items: [{title, color?, stage?}] — ids are generated server-side; on a Status field stage (Todo / InProgress / Complete) puts the choice in that stage, default Todo. Set isUnique: true on a field whose value identifies a row: item.create then dedupes on it. For a Relation to an existing sheet pass options.relatedSheetId (from workspace.structure) and twoWay: true to add the reverse field there too (default one-way). For a Code field (raw source with a language tag) pass options.language, one of: plain / html / json / typescript / javascript / sql / css / markdown. Computed fields name other fields, never ids: Formula takes options.formula with fields in braces ({Price} * {Quantity}); Mirror takes options.relation (a Relation field here) + options.field (on the related sheet); Rollup takes options.relation + options.function (COUNT / DISTINCT_COUNT / SUM / AVG / MIN / MAX) + options.field (a Number field there, not for COUNT); Rate takes options.stars; Pipeline takes options.stages; Summary takes options.template with fields in braces; Button takes options.workflow, the name of a manual-trigger workflow on this sheet. File List may take options.allowedFiles (any / images / documents / media / custom), options.allowedExtensions (with custom, e.g. ["pdf"]) and options.maxFiles (1–100). A name that does not exist is refused with the valid ones. Timer and DocX need nothing.

Input Schema

NameRequiredDescriptionDefault
nameYes
optionsNoChoices for Status / Select / Multi-Select fields, in display order — `language` for a Code field — `relatedSheetId` (+ `twoWay`) for a Relation — or the settings of a Formula, Mirror, Rollup, Rate, Pipeline, Summary or Button field.
sheetIdYes
dataTypeYes
isUniqueNoReject a second row with the same value; item.create then dedupes on this field. Only on Short Text / Number / Email / URL / PhoneNumber fields.
descriptionNo

Output Schema

NameRequiredDescriptionDefault
attributeIdYesId of the new field

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / options / properties / allowedExtensions
      Added value: +{
      +  "description": "File List only: the extensions a Custom rule takes, without the dot, e.g. [\"pdf\", \"docx\"].",
      +  "items": {
      +    "maxLength": 11,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 30,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / options / properties / allowedFiles
      Added value: +{
      +  "description": "File List only: which files it takes; `media` is audio and video, `custom` takes allowedExtensions.",
      +  "enum": [
      +    "any",
      +    "images",
      +    "documents",
      +    "media",
      +    "custom"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / options / properties / maxFiles
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 100,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "File List only: at most this many files (1–100); null removes the limit."
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / dataType / enum
      Previous value: -[
      -  "Short Text",
      -  "Long Text",
      -  "Number",
      -  "Date",
      -  "DateRange",
      -  "Email",
      -  "URL",
      -  "PhoneNumber",
      -  "CheckBox",
      -  "Status",
      -  "Select",
      -  "Multi-Select",
      -  "Employee",
      -  "Employee List",
      -  "Team",
      -  "Team List",
      -  "Job",
      -  "Job List",
      -  "Actor",
      -  "File List",
      -  "Document",
      -  "Location",
      -  "Address",
      -  "Duration",
      -  "Link",
      -  "Vote",
      -  "Goal",
      -  "Code",
      -  "Relation",
      -  "Formula",
      -  "Mirror",
      -  "Rollup",
      -  "Rate",
      -  "Timer",
      -  "Pipeline",
      -  "Summary",
      -  "DocX",
      -  "Button"
      -]New value: +[
      +  "Short Text",
      +  "Long Text",
      +  "Number",
      +  "Date",
      +  "Email",
      +  "URL",
      +  "PhoneNumber",
      +  "CheckBox",
      +  "Status",
      +  "Select",
      +  "Multi-Select",
      +  "Employee",
      +  "Employee List",
      +  "Team",
      +  "Team List",
      +  "Job",
      +  "Job List",
      +  "Actor",
      +  "File List",
      +  "Document",
      +  "Location",
      +  "Address",
      +  "Duration",
      +  "Link",
      +  "Vote",
      +  "Goal",
      +  "Code",
      +  "Relation",
      +  "Formula",
      +  "Mirror",
      +  "Rollup",
      +  "Rate",
      +  "Timer",
      +  "Pipeline",
      +  "Summary",
      +  "DocX",
      +  "Button"
      +]
  3. Changed11 schema fields changed
    • changedInput schema / properties / dataType / enum
      Previous value: -[
      -  "Short Text",
      -  "Long Text",
      -  "Number",
      -  "Date",
      -  "DateRange",
      -  "Email",
      -  "URL",
      -  "PhoneNumber",
      -  "CheckBox",
      -  "Status",
      -  "Select",
      -  "Multi-Select",
      -  "Employee",
      -  "Employee List",
      -  "Team",
      -  "Team List",
      -  "Job",
      -  "Job List",
      -  "Actor",
      -  "File List",
      -  "Document",
      -  "Location",
      -  "Address",
      -  "Duration",
      -  "Link",
      -  "Vote",
      -  "Goal",
      -  "Code",
      -  "Relation"
      -]New value: +[
      +  "Short Text",
      +  "Long Text",
      +  "Number",
      +  "Date",
      +  "DateRange",
      +  "Email",
      +  "URL",
      +  "PhoneNumber",
      +  "CheckBox",
      +  "Status",
      +  "Select",
      +  "Multi-Select",
      +  "Employee",
      +  "Employee List",
      +  "Team",
      +  "Team List",
      +  "Job",
      +  "Job List",
      +  "Actor",
      +  "File List",
      +  "Document",
      +  "Location",
      +  "Address",
      +  "Duration",
      +  "Link",
      +  "Vote",
      +  "Goal",
      +  "Code",
      +  "Relation",
      +  "Formula",
      +  "Mirror",
      +  "Rollup",
      +  "Rate",
      +  "Timer",
      +  "Pipeline",
      +  "Summary",
      +  "DocX",
      +  "Button"
      +]
    • changedInput schema / properties / options / description
      Previous value: -"Choices for Status / Select / Multi-Select fields, in display order — `language` for a Code field — or `relatedSheetId` (+ `twoWay`) for a Relation."New value: +"Choices for Status / Select / Multi-Select fields, in display order — `language` for a Code field — `relatedSheetId` (+ `twoWay`) for a Relation — or the settings of a Formula, Mirror, Rollup, Rate, Pipeline, Summary or Button field."
    • addedInput schema / properties / options / properties / field
      Added value: +{
      +  "description": "Mirror: the related sheet's field to show. Rollup: the Number field to aggregate (not for COUNT).",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / options / properties / formula
      Added value: +{
      +  "description": "Formula only: fields in braces, e.g. `{Price} * {Quantity}`; functions IF, round, days_between…",
      +  "maxLength": 2000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / options / properties / function
      Added value: +{
      +  "description": "Rollup only: how the related rows are aggregated.",
      +  "enum": [
      +    "COUNT",
      +    "DISTINCT_COUNT",
      +    "SUM",
      +    "AVG",
      +    "MIN",
      +    "MAX"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / options / properties / relation
      Added value: +{
      +  "description": "Mirror / Rollup only: the name of a Relation field on this sheet.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / options / properties / returnType
      Added value: +{
      +  "description": "Formula only: what it returns. Default number.",
      +  "enum": [
      +    "number",
      +    "text"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / options / properties / stages
      Added value: +{
      +  "description": "Pipeline only: the stages in order; won stages `succeed`, lost ones `failed`.",
      +  "items": {
      +    "properties": {
      +      "color": {
      +        "type": "string"
      +      },
      +      "outcome": {
      +        "description": "Default open",
      +        "enum": [
      +          "open",
      +          "succeed",
      +          "failed"
      +        ],
      +        "type": "string"
      +      },
      +      "title": {
      +        "maxLength": 80,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "title"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 30,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / options / properties / stars
      Added value: +{
      +  "description": "Rate only: number of stars (2–20), default 5.",
      +  "maximum": 20,
      +  "minimum": 2,
      +  "type": "integer"
      +}
    • addedInput schema / properties / options / properties / template
      Added value: +{
      +  "description": "Summary only: text with fields in braces, e.g. `{Company} — {Stage}`.",
      +  "maxLength": 4000,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / options / properties / workflow
      Added value: +{
      +  "description": "Button only: the name of a workflow on this sheet with a manual trigger.",
      +  "minLength": 1,
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent, closed-world. The description adds real value beyond that: ids are generated server-side, the new attributeId is returned, invalid dataType names are refused with the valid list, and twoWay defaults to one-way. It stops short of warning that repeated calls create duplicate fields, which is the main risk implied by idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the most common case are front-loaded, but the remainder is a dense run-on enumeration with no separation between dataTypes. Much of it duplicates text already present in the schema's per-property descriptions (stars, stages, formula, relation, template, workflow, allowedFiles), so several sentences do not fully earn their place.

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 37-variant enum tool with nested options, the description covers nearly every variant's requirements, and the existence of an output schema means return shape need not be spelled out. Remaining gaps are permissions/visibility effects of adding a field and duplicate-name behavior.

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 coverage is only 33%, but the description compensates heavily, mapping each dataType to the exact options keys it consumes (items/stage, relation+field, function, stars, stages, template, workflow, allowedFiles/allowedExtensions/maxFiles, language). It also adds meaning the schema cannot express, such as the currency convention (dataType `Number` plus a `description`) and the rule that computed fields reference field names in braces, never ids.

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 ('Add a new attribute (field) to an existing sheet') and implicitly distinguishes itself from sheet.update_attribute and sheet.remove_attribute by the word 'new'. An agent can identify the operation 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete usage context ('Use during refinement', with an example utterance) and enumerates per-dataType requirements. It does not explicitly say when to prefer sheet.update_attribute over this tool, so sibling routing is left partly to inference.

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