Skip to main content
Glama
ykovenskiy-hub

Purl MCP Server

set_property

Set and merge properties on Purl Studio objects—position, size, visibility, tags, content—with version checks for array/map values and type-change confirmation.

Instructions

Set properties on an object. Merges the given properties into the object. Use for position (x, y), size (width, height), visibility, tags, content (for text), dynamics settings, etc. For nested-shape properties (arrays/maps) the call is guarded: expectedVersion is required to prevent stale-baseline overwrites, and confirmTypeChange is required when the property's shape changes among array/map/scalar. Read with get_object first to obtain _versions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
promptYesTHE USER'S EXACT PROMPT — verbatim, word-for-word, as typed. Do not summarize, paraphrase, translate, or shorten. Copy the user's message into this field exactly. Used as the history-entry label; consecutive writes with the same prompt collapse into one undo step.
targetYesName of the object to modify (formerly `objectName`, still accepted)
cellNameNoOptional: cell to search in (by label)
propertiesYesKey-value pairs to set on the object (e.g., {"x": 0.3, "y": 0.5, "visible": false})
expectedVersionNoOptional precondition map: {propName: hash} from get_object's `_versions`. REQUIRED for any property in `properties` whose CURRENT value is an array or map — prevents silently overwriting concurrent changes. Mismatch is reported with the actual hash so you can rebase. Scalar properties don't need versions.
confirmTypeChangeNoPass true to allow changing a property's shape among array/map/scalar. REQUIRED for those transitions; protects against accidental clobber of nested data with a scalar (or vice-versa). Creation (property absent → set) and deletion don't need this flag.
Behavior5/5

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

With no annotations, the description carries full disclosure burden and succeeds admirably. It reveals merge semantics, the required version guard for array/map properties, the type-change confirmation requirement, and instructs to read get_object first for _versions. This is rich, actionable behavioral context far exceeding typical tool descriptions.

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?

The description is a single, well-organized paragraph that fronts the core purpose, follows with example use cases, and ends with critical guard behavior. No filler or redundancy; every clause contributes meaning.

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 complex mutation tool with no output schema, the description covers the full action cycle: what it does, when to use it, what guards apply, and the prerequisite read call. This is sufficient for an agent to invoke it correctly, especially with the rich schema parameter descriptions.

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?

Schema description coverage is 100% with already-detailed parameter docs, so the baseline is 3. The description adds complementary context by explaining the `_versions` source and the merge operation that `properties` performs, which ties parameters to the overall flow without duplicating schema text.

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 description opens with a specific verb+resource ('Set properties on an object') and enumerates concrete use cases (position, size, visibility, tags, content, dynamics), making its purpose unmistakable. It distinguishes itself from sibling mutation tools by focusing on object property updates rather than cells, scripts, or bulk operations.

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?

Provides a clear list of when to use ('Use for position, size, visibility, tags, content, dynamics settings'), giving concrete context. Does not explicitly name alternative tools for exclusions (e.g., bulk_set_property for bulk), but the intended scope is clear enough.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ykovenskiy-hub/purl-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server