Upsert rows - update existing rows by key, append new ones. Automatically handles column mapping and partial updates. Use for: CRM syncs (match Lead ID), transaction imports (match Transaction ID), inventory updates (match SKU), calendar syncs (match Event ID). Features: - Auto-adds missing colum...
Single-target operation
Part of the Google Sheets MCP server. Enforce policies on this tool with Intercept, the open-source MCP proxy.
AI agents use GOOGLESHEETS_UPSERT_ROWS to create or modify resources in Google Sheets. Write operations carry medium risk because an autonomous agent could trigger bulk unintended modifications. Rate limits prevent a single agent session from making hundreds of changes in rapid succession. Argument validation ensures the agent passes expected values.
Without a policy, an AI agent could call GOOGLESHEETS_UPSERT_ROWS repeatedly, creating or modifying resources faster than any human could review. Intercept's rate limiting ensures write operations happen at a controlled pace, and argument validation catches malformed or unexpected inputs before they reach Google Sheets.
Write tools can modify data. A rate limit prevents runaway bulk operations from AI agents.
tools:
GOOGLESHEETS_UPSERT_ROWS:
rules:
- action: allow
rate_limit:
max: 30
window: 60 See the full Google Sheets policy for all 38 tools.
Agents calling write-class tools like GOOGLESHEETS_UPSERT_ROWS have been implicated in these attack patterns. Read the full case and prevention policy for each:
Other tools in the Write risk category across the catalogue. The same policy patterns (rate-limit, validate) apply to each.
Upsert rows - update existing rows by key, append new ones. Automatically handles column mapping and partial updates. Use for: CRM syncs (match Lead ID), transaction imports (match Transaction ID), inventory updates (match SKU), calendar syncs (match Event ID). Features: - Auto-adds missing columns to sheet - Partial column updates (only update Phone + Status, preserve other columns) - Column order doesn't matter (auto-maps by header name) - Prevents duplicates by matching key column Example inputs: - Contact update: keyColumn='Email', headers=['Email','Phone','Status'], data=[['john@ex.com','555-0101','Active']] - Inventory sync: keyColumn='SKU', headers=['SKU','Stock','Price'], data=[['WIDGET-001',50,9.99],['GADGET-002',30,19.99]] - CRM lead update: keyColumn='Lead ID', headers=['Lead ID','Score','Status'], data=[['L-12345',85,'Hot']] - Partial update: keyColumn='Email', headers=['Email','Phone'] (only updates Phone, preserves Name/Address/etc). It is categorised as a Write tool in the Google Sheets MCP Server, which means it can create or modify data. Consider rate limits to prevent runaway writes.
Add a rule in your Intercept YAML policy under the tools section for GOOGLESHEETS_UPSERT_ROWS. You can allow, deny, rate-limit, or validate arguments. Then run Intercept as a proxy in front of the Google Sheets MCP server.
GOOGLESHEETS_UPSERT_ROWS is a Write tool with medium risk. Write tools should be rate-limited to prevent accidental bulk modifications.
Yes. Add a rate_limit block to the GOOGLESHEETS_UPSERT_ROWS rule in your Intercept policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the Intercept policy for GOOGLESHEETS_UPSERT_ROWS. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
GOOGLESHEETS_UPSERT_ROWS is provided by the Google Sheets MCP server (google-sheets-mcp). Intercept sits as a proxy in front of this server to enforce policies before tool calls reach the server.
Open source. One binary. Zero dependencies.
npx -y @policylayer/intercept