Skip to main content
Glama
SGromych

DataForge Semantic MCP Server

by SGromych

df_write_measure

DestructiveIdempotent

Create, replace, or update measures in DataForge project versions. Choose mode to add, overwrite, or patch only supplied fields.

Instructions

WRITES TO DATAFORGE. Create, replace or update a measure in a project version. mode=create adds a new one; mode=replace (PUT) overwrites it and RESETS every optional field you do not pass; mode=update (PATCH) changes only the fields you pass. replace and update require measure_id.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoEntity id; must match the path id if supplied
modeNocreate = POST a new entity; replace = PUT, which resets every optional field not supplied; update = PATCH, which changes only supplied fields.create
blockNo
groupNo
statusNo
commentNo
formulaNoReferences are written as [Element name]
requiredNo
relevanceNo
variationNo
measure_idNoRequired for replace/update
project_idYesDataForge project id
version_idYesProject version id
visibilityNo
measure_nameNoUnique among measures of the version
measure_typeNoReference label, English or Russian: Base / Calculated
restrictionsNo
idempotency_keyNoOptional UUID v4. Reusing a key within 24 hours replays the original response instead of applying the change twice. One is generated automatically when omitted.
original_objectNo
original_sourceNo
display_data_typeNoNumber, Text, Date, ...
measure_descriptionNo
original_source_typeNo
responsible_for_dataNo
report_for_verificationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.1

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the bar is lower. The description adds valuable specific behavior beyond annotations: replace 'RESETS every optional field you do not pass' and update is a partial PATCH. This discloses the main destructive trap an agent could fall into. No contradiction with annotations.

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 description is compact and front-loaded: the core action and resource appear immediately, and the mode distinctions are packed into three tight sentences. The only minor redundancy is the opening 'WRITES TO DATAFORGE,' which restates what the tool name and the next sentence already convey.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a high-complexity tool with 25 parameters, no output schema, and low schema coverage. The description explains mode behavior but leaves most fields semantically unexplained, does not mention the idempotency_key behavior beyond what the schema says, and provides no example or guidance about expected responses. An agent has enough to choose a mode but not enough to confidently fill the full payload.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40%, so the description should compensate for the many undocumented parameters. Instead, it mostly restates what the schema already says about mode (PUT resets optional fields, PATCH changes only supplied fields) and about measure_id being required for replace/update. It adds no meaning for the many optional fields like block, group, status, formula, restrictions, or original_source.

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 action and resource: 'Create, replace or update a measure in a project version.' It clearly distinguishes this single-measure write tool from siblings like df_bulk_write_measures, df_delete_measure, and df_write_fact by naming the exact resource and operation modes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description gives solid guidance for choosing among the three modes (create vs replace vs update) and notes that replace/update require measure_id. However, it does not say when to choose this tool over a sibling like df_bulk_write_measures, and it offers no exclusions or alternative-tool routing for the single-vs-bulk case.

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