Skip to main content
Glama
cmssy-io

@cmssy/mcp-server

Official
by cmssy-io

create_model

Create a CMS data model with custom fields, relations, product config, and delivery access after the user explicitly approves the proposed structure.

Instructions

Create a data model in the workspace. Field types include select/multiselect (provide options), relation (link to another model via relationTo = the target model's slug + relationType), and object/list (nested fields/itemFields). Optional model-level config: slug, description, icon, color, displayField, defaultSort, statusField, product (commerce capability: enabled, priceField, skuField, inventoryField, variantAxes), uniqueFields (field keys whose value must be unique - lets import_records update by that key) and deliveryAccess - a model is "none" (admin only) by default, so pass "public" when the user's app must read it through the delivery API. Only call AFTER the user has explicitly agreed to a structure you proposed (e.g. replied yes / clicked 'Yes, create'). Never create without that explicit go-ahead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
iconNoLucide icon name, defaults to 'database'
nameNo
slugNoURL-safe slug (lowercase). Derived from name when omitted.
colorNo
fieldsNo
productNoProduct capability config PATCH: omitted keys keep their stored values (defaults on first enable: skuField 'sku', priceField 'price', inventoryField 'inventory', variantAxes []). E.g. {variantAxes: []} clears the axes without touching anything else.
defaultSortNo
descriptionNo
statusFieldNoEnable record lifecycle states with allowed transitions
displayFieldNoField key used as the record's display label in UI
uniqueFieldsNoKeys of top-level text, email, url, phone or number fields whose value no two records may share (not translatable fields, not the product price/stock fields). Replaces the whole list; [] removes every constraint. Refused while existing records already share a value - the error lists them.
deliveryAccessNoWho can read this model through the delivery API: "public" (any app with the workspace endpoint - required for a content API), "members" (signed-in site members only), "none" (admin only, the default).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.73.1

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden and does disclose real behavioral traits: deliveryAccess defaults to 'none' (admin only) and must be set to 'public' for delivery API reads; creation requires explicit prior user consent; and uniqueFields semantics tie to import_records updates by key. It does not cover failure modes (duplicate slug/name) or response contents, but the essential persistent-write side effects are disclosed.

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?

The purpose clause is front-loaded and the rest is dense but non-redundant: field-type rules, config options, defaults, and the safety gate each carry information. The main structural weakness is that the critical consent requirement is buried at the end of a long enumeration, where an agent skimming for mechanics could miss it.

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 12-parameter, deeply nested tool with no annotations and no output schema, the description covers the invocation-critical semantics: exotic field types, model-level options, the deliveryAccess default, and the approval gate. Gaps remain—it never states what the call returns, does not flag that name and fields are effectively required despite the schema listing zero required parameters, and omits conflict/error behavior—but the missing pieces are secondary to correct invocation.

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?

At 58% schema coverage, the description compensates for the gap by explaining non-obvious semantics the schema properties cannot: select/multiselect require `options`, relation fields need relationTo set to a target model slug plus relationType, object/list use nested fields/itemFields, and uniqueFields enables import_records to update by that key. It adds cross-parameter and cross-tool relationships, though name, color, and defaultSort gain no added meaning.

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?

The opening clause 'Create a data model in the workspace' pairs a specific verb with a specific resource and scope. The phrase 'data model' cleanly separates this from sibling tools like create_record, create_page, and create_form, and from update_model/delete_model, so an agent knows what object this materializes 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?

The description gives a hard, explicit precondition: 'Only call AFTER the user has explicitly agreed... Never create without that explicit go-ahead.' That is clear when/when-not invocation guidance. However, it never names alternatives or exclusion conditions relative to update_model (modify an existing model) or create_record (add records), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.