PipedreamHQ / PipedreamHQ/pipedream

[BUG] Pipedream MCP Coda “Update a Row” (instruction mode) misapplies fields and reports success despite no change

Open
#17,988 1 comment 0 reactions 0 assignees View on GitHub
bug tracked internally triaged
Dominant language
JavaScript
Stars
11.7k
Forks
5.8k
Avg merge
3d 10h
Merged PRs (30d)
102

Description

Description
Summary: When using the Pipedream MCP Coda tools from Cursor (instruction-only mode), the “Update a Row” tool writes to the wrong column (overwrites Name), does not update the Status select, and sometimes reports success even when no change occurred. Description is correctly flagged as formula-bound, but the tool still mutates Name and claims Status was updated.
Environment
Client: Cursor IDE (Windows 11), MCP server added via URL only (no custom headers)
Server: Pipedream MCP endpoint (mcp.pipedream.net/.../coda)
Mode: Sub-agent/instruction mode (tools expose only an instruction string; no structured parameters)
Repro steps
1) Read schema and row:
list-columns on table
get-row on a task (e.g., rowId similar to i-jcIEhMm5fQ)
2) Call update-row with explicit instruction:
“In doc X, table Y, update row Z. Set Name EXACTLY to ‘Japan Country Website - Add Property + Agent Search’. Set Status EXACTLY to ‘Blocked’. Set Description to ‘Blocked: …\n\n’. Do not modify any other fields.”
3) Tool response:
Returns that Description is formula-bound (expected) and claims Name/Status updated
4) Re-check with get-row:
Name becomes “Blocked” (wrong)
Status remains “Not Started” (unchanged)
Description unchanged (correctly read-only)
Additional attempt:
Separate calls:
“Update ONLY Name …” → tool reports success; Name correct
“Update ONLY Status to ‘Blocked’ …” → tool reports success; get-row shows Status unchanged; Name later mutates to “Blocked”
Expected
Only the specified columns are modified
Status (single-select) is set to “Blocked” if that option exists (or fails cleanly)
No unintended writes to Name
If Description is formula-bound, return error and do not touch other fields unless explicitly set and valid
Actual
Instruction parser writes the value “Blocked” into Name
Status remains unchanged while tool reports success
Formula-bound Description is blocked (correct), but other columns are still misapplied
Notes
This appears specific to the “instruction” interpretation layer. We can’t enable full-config headers from Cursor, so dynamic props aren’t available. We need deterministic updates that don’t rely on natural-language parsing.
Tools used: coda-list-columns, coda-get-row, coda-update-row (instruction-only)
Workarounds
Using Coda API directly with explicit column IDs works
Not feasible in Cursor via current Pipedream MCP due to instruction-only mode
Requests
1) Bug fix: Ensure instruction parser respects explicit field targeting and doesn’t mutate unintended columns; return accurate success/failure for selects.
2) Provide deterministic tools alongside instruction mode, e.g.:
coda_update_row_structured(docId, tableId, rowId, updates: [{column: , value}], useColumnNames, allowNewSelectOptions, dryRun)
coda_add_row_comment(docId, tableId, rowId, content)
coda_get_row(docId, tableId, rowId)
3) Document a way to pass required headers for full-config when the client can’t customize headers (or accept query/body parameters to toggle full-config).
Summary
Issue text provided: clear title, reproducible steps, expected/actual, and concrete requests for a deterministic structured tool or parser fix.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.