Skip to main content
Glama
riveterhq

Riveter MCP Server

Official
by riveterhq

Update dataset

update_dataset
Destructive

Edit a dataset's structure by adding, renaming, or deleting input and output columns, changing prompts or schemas, pinning tools, and adjusting the per-row budget.

Instructions

update dataset

Edit a dataset's structure (no run): name; index_column; input_columns ops ({ "Name": {} } add, { "rename" }, { "delete": true }); output column ops (new name adds, type inferred unless output_schema is given; { "prompt", "output_schema" } changes, cells go stale; { "tool": "<list_tools name>" } pins a tool: one call per row, arguments chosen by the agent, result is the cell (null unpins); { "rename" }; { "delete": true }); budget (credits per row; moves by 1.5 per output column added or removed unless budget_locked) and budget_locked (true / false; sent with column changes it wins over that adjustment). Edits a shared enrichment on a private copy. 409 dataset_in_use while a fill runs. Then enrich with dataset_id. help with datasets, pinned_columns, output_schema.

Example — Change a prompt, add a typed column, remove one: { "output": { "CEO": { "prompt": "Full name of the current CEO" }, "Employee count": { "prompt": "Current headcount as an integer", "output_schema": { "type": "integer", "minimum": 0 } }, "HQ city": { "delete": true } } }

Example — Lock the budget and add columns without moving it: { "budget_locked": true, "output": { "Founded": {}, "Revenue": { "prompt": "Latest annual revenue in USD" } } }

Example — A column pinned to the LinkedIn profile lookup; the agent finds the URL to call it on: { "output": { "Profile": { "prompt": "The LinkedIn profile of the row's person; find the canonical linkedin.com/in/ URL first", "tool": "linkedin_person_profile" } } }

Example — Rename the dataset, add an input column and dedupe on it, rename another: { "name": "Q4 targets", "input_columns": { "Ticker": {}, "Website": { "rename": "Domain" } }, "index_column": "Ticker" }

Input Schema

NameRequiredDescriptionDefault
idYesThe dataset id (ds_...)
nameNoname
budgetNoCredits the row agent may spend per row, on the dataset's enrichment. Sent with column changes, it wins over the per-column adjustment.
outputNoOutput column edits keyed by column name. A name not on the enrichment adds a column; `prompt` / `output_schema` / `tool` change one (its filled cells read `stale`); `rename` renames it (cells kept); `delete: true` removes it.
index_columnNoThe input column rows are unique on (by name). Every row is re-keyed.
budget_lockedNotrue keeps the budget as set when output columns are added or removed; false lets it move by 1.5 per column again.
input_columnsNoInput column edits keyed by column name. `{}` adds the column; `rename` renames it; `delete: true` removes it (not the index column). Rows are untouched: an added column reads empty, a removed column's values are dropped from reads.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.5

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say destructive/idempotent=false/readOnly=false; the description goes far beyond by disclosing that prompt/schema/tool edits turn existing cells `stale`, that rename keeps cells while delete drops them from reads, that added input columns read empty, that index_column re-keys every row, and that a 409 `dataset_in_use` occurs during a running fill. It also explains the copy-on-write safety net for shared enrichments, which is exactly the kind of consequence an agent needs before mutating.

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 spec paragraph followed by four examples that each demonstrate a distinct, non-redundant capability. The opening paragraph is very dense — heavy backticking and semicolon chaining make it hard to scan — and the fourth example's `Ticker`/`Website` payload only obliquely demonstrates the stated dedupe behavior.

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 7-parameter tool with deep nested objects, the description covers mutation semantics, budget rules, pinning behavior, and conflict errors thoroughly. It never states what the tool returns on success, which matters slightly more here because no output schema exists to fill that 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?

With 100% schema coverage the baseline is 3, but the description adds semantics the schema only implies: the 1.5-credit-per-column budget drift, `budget_locked` winning over that adjustment, and type inference on added output columns. The four worked examples concretely demonstrate nesting and operation combinations (`{}`, `rename`, `delete`, `tool`, `null` unpin).

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 — 'Edit a dataset's structure (no run)' — and immediately scopes it to name, index_column, input_columns, output, budget. The parenthetical '(no run)' plus 'Then enrich with dataset_id' cleanly separates it from enrich and update_enrichment, whose names alone would otherwise make the boundary ambiguous.

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?

Gives real workflow routing: use this first, then call `enrich` with `dataset_id`, and points to `help` with `datasets`, `pinned_columns`, `output_schema` for deeper reference. 'Edits a shared enrichment on a private copy' hints at when to prefer `update_enrichment` instead, but never names that sibling or states the exclusion explicitly.

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