Skip to main content
Glama

create_field

Add one custom field to an existing checkout page, form, or event. Appended after the current fields unless order is given. formLayout on the page decides the form's order. Each field's order is its position among the page's fields and follows the layout: saving a layout (in the dashboard or through the API) rewrites every field's order. On a page that has never saved a layout, setting order moves the field; once a layout is saved, move fields with formLayout instead. Visibility rules must reference existing field and option IDs from the page detail response. Mutating; to add fields on a new page, pass fields to the create tool instead.

Input Schema

NameRequiredDescriptionDefault
typeNoUsed to store field data in a predictable manner. Please note that you must use Customer Name and Shipping Address if you wish to use any of the shipping address data types. Do not set `type` when `element` is one of: `checkbox`, `quantity`, `tax-id`, `po-number`, `multiple-choice`, `multi-select`, `date-time`, `date`, `time`, `textarea`.
labelYesForm label for the input element.
orderNoPosition of this field among the page's fields, from 0. When omitted, a new field goes after the current ones, or follows its position in `fields` when a page is created. `formLayout` on the page decides the form's order. Each field's `order` is its position among the page's fields and follows the layout: saving a layout (in the dashboard or through the API) rewrites every field's `order`. On a page that has never saved a layout, setting `order` moves the field; once a layout is saved, move fields with `formLayout` instead.
hiddenNoWhether this field is hidden from customers at checkout.
layoutNoHow a multi-select field is drawn at checkout: `dropdown` (the default) or `list`, a list of checkboxes. Ignored on other elements.
pageIdYesThe ID of the page the field belongs to.
collectNoWhether to collect only a billing address or both billing and shipping. Applies to `address` elements. Defaults to `billing`.
elementNoInput control used to render this field in checkout. Defaults to `text`.
optionsNoSelectable options. Applies to `select`, `multi-select` and `multiple-choice` elements. Options on a `multi-select` need different values (an option without a value uses its label), and options on a `multiple-choice` need different labels.
disabledNoWhether this field is switched off. A disabled field keeps its settings but is removed from the page entirely: it is not rendered, cannot be revealed with `show_fields`, is not prefilled and is never submitted.
maxValueNoMaximum allowed value settings for this field.
minValueNoMinimum allowed value settings for this field.
pageTypeYesThe kind of page the field belongs to: `checkout`, `form`, or `event`. Use the type of the tool you fetched the page with (get_checkout_page, get_form, get_event).
requiredNoWhether this field must be completed before checkout can continue.
referenceNoStable key that exports, Zapier, Google Sheets and webhooks use for this field's answers. Generated from the field type or label when omitted, and not updated when the label changes. Changing it breaks integrations that match on the old key, so only send it when the seller asks.
descriptionNoOptional helper text shown below the field label.
placeholderNoSpecifies a short hint that describes the expected value of an input element
defaultValueNoDefault value settings for the field.
showHideLogicNoConditional visibility rules for this field. `element.elementId` must be the ID of an existing field on the same page, and `value` an option ID on that field (or `TRUE`/`FALSE` for a checkbox). Read the IDs from the page detail response; create-time keys are rejected here.
defaultCountryNoISO 3166-1 alpha-2 country code used as the default for `address` elements. Defaults to `US`.
collectShippingPhoneNoWhether to collect a phone number alongside the shipping address. Applies to `address` elements when `collect` is `billing_and_shipping`. Defaults to `false`.
showSelectedDialCodeNoWhether to display the selected international dial code in phone inputs.
limitAllowedCountriesNoCountry restriction settings for country-based fields.
limitBillingCountriesNoRestrict the billing country list. Applies to `address` elements.
limitShippingCountriesNoRestrict the shipping country list. Applies to `address` elements when `collect` is `billing_and_shipping`.

Output Schema

NameRequiredDescriptionDefault
dataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / reference / description
      Previous value: -"External reference ID for integration purposes. Generated from the field type or label when omitted."New value: +"Stable key that exports, Zapier, Google Sheets and webhooks use for this field's answers. Generated from the field type or label when omitted, and not updated when the label changes. Changing it breaks integrations that match on the old key, so only send it when the seller asks."
    • changedOutput schema / $defs / Field / properties / reference / description
      Previous value: -"External reference ID for mapping this field in downstream systems."New value: +"Stable key that exports, Zapier, Google Sheets and webhooks use for this field's answers. Not updated when the label changes."
  2. Changed2 schema fields changed
    • changedInput schema / properties / order / description
      Previous value: -"Display order of this field. When omitted, order is determined by the position of the field in the array."New value: +"Position of this field among the page's fields, from 0. When omitted, a new field goes after the current ones, or follows its position in `fields` when a page is created. `formLayout` on the page decides the form's order. Each field's `order` is its position among the page's fields and follows the layout: saving a layout (in the dashboard or through the API) rewrites every field's `order`. On a page that has never saved a layout, setting `order` moves the field; once a layout is saved, move fields with `formLayout` instead."
    • changedOutput schema / $defs / Field / properties / order / description
      Previous value: -"Display order of the field within the form."New value: +"Position of the field among the page's fields, from 0. `formLayout` on the page decides the form's order. Each field's `order` is its position among the page's fields and follows the layout: saving a layout (in the dashboard or through the API) rewrites every field's `order`. On a page that has never saved a layout, setting `order` moves the field; once a layout is saved, move fields with `formLayout` instead."
  3. Changed2 schema fields changed
    • addedInput schema / properties / disabled
      Added value: +{
      +  "description": "Whether this field is switched off. A disabled field keeps its settings but is removed from the page entirely: it is not rendered, cannot be revealed with `show_fields`, is not prefilled and is never submitted.",
      +  "example": false,
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / $defs / Field / properties / disabled
      Added value: +{
      +  "description": "Whether this field is switched off. A disabled field keeps its settings but is removed from the page entirely.",
      +  "example": false,
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
  4. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations declare mutating, non-destructive, open-world behavior, but the description adds substantial context beyond them: that saving a layout rewrites every field's `order`, that visibility rules must reference persisted IDs from the page detail response (create-time keys are rejected), and that changing `reference` breaks exports/integrations. These are real operational consequences an agent could not derive from the schema or annotations alone.

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-loads the core purpose and the mutating warning before the detailed layout mechanics. The ordering/layout passage is long and duplicates the schema's `order` text verbatim, costing some density, but no sentence is irrelevant to correct invocation.

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 25-parameter mutation with a full schema, output schema, and rich annotations, the description covers the genuinely subtle hazards: layout-driven reordering, ID requirements for visibility rules, integration-breaking `reference` changes, and the create-vs-update boundary. Only the omission of any mention of update_field keeps it short of complete.

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 baseline is 3, and most of the description's parameter explanation (the `order`/layout paragraph) is a near-verbatim repeat of the `order` schema description. It does add cross-tool framing by referencing `formLayout`, a page-level concept not present in this tool's schema, but overall it contributes little beyond the already-rich schema.

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 one custom field to an existing checkout page, form, or event') and names the destination scope. It also distinguishes itself from the create_page tools by saying to pass fields to the create tool when building a new page, so an agent can tell it apart from create_checkout_page/create_form/create_event.

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?

Explicitly routes new-page field creation elsewhere ('to add fields on a new page, pass fields to the create tool instead') and explains when to use `order` versus `formLayout` for reordering. It never mentions the sibling update_field, leaving the create-vs-update choice 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