Skip to main content
Glama

Fabrement

Set field values

fabrement-set-field-values
Idempotent

Fill the Fabrement fields of one record (post, page or CPT item) or of an options page. Keys of "values" are field names from get-fields; fields you do not send stay as they are; null clears a field back to its default. Every value is checked first (type, choices, dates YYYY-MM-DD / date-times YYYY-MM-DDTHH:MM in the site's time zone, no offset, number bounds, allowed post types, existing media/records, safe link addresses, required) and one bad value rejects the whole call, with the path of the value to fix. Value shapes: text/textarea/wysiwyg/date → string; select → the choice's value (not its label); number → number; true_false → boolean; icon → {key: one of its choices, e.g. "social/facebook", media: {} or {id: an uploaded image}}; image/file/post_object → attachment or post ID (0 = none); relationship → list of post IDs, gallery → list of image IDs (both ordered, at most 50); link → {url, label?, newTab?} or {postId, label? | useRecordTitle: true} (send label or useRecordTitle:true, or the link shows no words); group → {subName: value}; repeater → the COMPLETE list of rows [{_row?, subName: value}]. Keep the "_row" that get-field-values gives each existing row: it is the row's identity. A row without "_row" is new while other rows carry one; with no "_row" at all rows are matched by position. A stored row you leave out is deleted. When something changed, a record is saved as with its Update button (modified date, SEO, caches). No conflict check: the last save wins. Rules: get-skill-doc {id:"fields-contract"} — read it before the first call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
postIdNoID of the post, page or CPT record. Send this OR options.
valuesYesfield name => value. See the tool description for shapes.
optionsNoSlug of an options page (list-options-pages). Send this OR postId.
valuesTokenNoNot used; leave it out.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

With annotations already covering readOnly/destructive/idempotent hints, the description adds substantial non-obvious behavior: full validation pass with whole-call rejection and the failing path, row identity via '_row', positional matching fallback, deletion of stored rows that are omitted, the Update-button side effects (modified date, SEO, caches), and the absence of conflict checks ('last save wins'). The selective row deletion creates mild tension with destructiveHint=false, but it is disclosed rather than hidden.

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-loaded with the primary action and the essential mental model, and nearly every sentence carries load-bearing detail (shapes, validation, row matching). It is a dense single block, though; the value-shape catalogue and the 'Rules:' line would read better as structured bullets, which slightly hurts scannability for an agent.

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?

For a high-complexity nested-value mutation with no output schema, the description covers the write semantics, validation failure reporting, row lifecycle, and side effects. An agent has everything needed to construct a correct call without further lookup beyond the referenced skill doc.

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 100%, so the baseline is 3, but the description goes far beyond it with per-type value shapes (text/select/number/true_false/icon/image/relationship/link/group/repeater), the choice-value-not-label rule, ID-based media semantics, the 50-item cap, and the '_row' identity contract — all information the schema's generic 'field name => value' cannot convey.

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 ('Fill the Fabrement fields of one record (post, page or CPT item) or of an options page'), plus the two target scopes (record vs options page). This cleanly separates it from sibling tools like save-fields (defines fields) and get-field-values (reads values).

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?

Tells the agent where keys come from ('field names from get-fields'), that omitted fields are untouched, that null resets, and mandates reading get-skill-doc {id:"fields-contract"} before the first call. It stops short of an explicit when-to-use-this-vs-save-fields/set-post-terms routing statement, but the context is clear.

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