Skip to main content
Glama
riveterhq

Riveter MCP Server

Official
by riveterhq

Set input values

update_dataset_row
Destructive

Set or clear input and output cell values for a single dataset row manually; manual cell values persist through fills unless forced.

Instructions

set input values

Write one row (row_id: a row_... id or a position) by hand. input is { "<input column>": value | null } (an index-column value another row holds is a 422). cells is { "<output column>": value | null }: a value becomes a manual cell (kept by fills unless force); null clears it back to pending. One write for both. 409 row_in_use for input while a fill is on the row; cells land meanwhile and stand over the run's answer.

Input Schema

NameRequiredDescriptionDefault
idYesThe dataset id (ds_...)
cellsNoOutput column name → value, or null to clear
inputNoInput column name → value, or null to clear
row_idYesThe row id (row_...) or its position (an integer from 1)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.5

TDQS

A4/5.0
Behavior5/5

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

With annotations already declaring a destructive, non-idempotent, non-read-only mutation, the description adds substantial context: 422 for an index-column value another row holds, 409 `row_in_use` for `input` during a fill, `cells` landing regardless, and `null` reverting to `pending`. This is exactly the kind of error and side-effect disclosure the annotations cannot carry.

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 operative scope statement is front-loaded and every sentence carries new information (error codes, state transitions, force behavior). It is terse to the point of telegraphic style in places, but there is no filler to cut.

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 destructive nested-object mutation with no output schema, the description covers the important behavioral edges: partial success, error codes, and value lifecycle. It stops short of describing the response or confirming what the manual cell looks like after success, a minor gap.

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 coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining the `input` versus `cells` split (input columns vs output columns), the manual-vs-pending state transition on `cells`, and that `force` governs whether fills overwrite a manual cell — semantic value not present in the property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Write one row (`row_id`...)" by hand, and clarifies it sets both input and output cells in one write. It implicitly distinguishes from bulk siblings (`add_dataset_rows`, `import_dataset_rows`) via "by hand" but never names them, so it doesn't fully earn a 5.

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?

Usage is implied rather than stated: the agent learns that `input` writes are blocked while a fill runs, that `cells` writes are manual and can be cleared with `null`, and that `force` affects retention. There is no explicit when-to-use-this-vs-alternatives guidance (e.g. versus `add_dataset_rows` or `build_dataset_rows`), so it lands at implied usage.

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