Update table row

Let the LLM update rows in a database table by key.

Ingredient Family: llmQueryToolIngredients

Outline Display: Allow LLM to update rows in {{updateTable}}: {{toolDescription}}{{rowFilters:
Row filters: {{rowFilters}}}}
Requires approval: {{requiresApproval}}{{guards:
Guards: {{guards}}}}{{advisory:
Not enforced by the server: {{advisory}}}}

Details

guards run on the row as it will be once the update is applied – the row found by key with the LLM’s values merged over it, every column of the table in scope – so a rule judges the result rather than the arguments. One refusal writes nothing.

Local scope

Names introduced within this component’s knobs:

  • updateTable – table chosen from the app’s schema (via updateTable knob)
  • guardScope – empty table populated by ingredients

Settings

Required

  • updateTable : table
    The table the LLM can update

  • toolDescription : constant value (type: text; required, non-nullable)
    A description of when/why to update this table, to help the LLM decide when to use it

Optional

  • toolTitle : constant value (type: text; optional)
    The human-readable name an MCP client shows for this tool (MCP’s title), never read by a model. Omitted, it is derived from the wire name: search_open_orders becomes “Search Open Orders”. Two tools in one module cannot share a title, derived or authored.

  • advisory : constant value (type: text; optional)
    A rule the server does NOT enforce, sent to the model as guidance under an explicit ‘not enforced’ header; use only when no deterministic form (Require, parameter constraints, allowedRecipients…) exists. The checker warns and the dashboard shows it as not guaranteed.

  • requiresApproval : constant value (type: bool; required, non-nullable)
    Require the user to approve each invocation of this tool before it runs. Only honored inside a Chat concept, where the agent pauses mid-turn and shows Approve/Reject buttons; rejecting tells the LLM the call was denied and ends the turn. Setting it true on a tool used by any other agent (e.g. a row-action AskAnLLM triggered by a button) is rejected by the NectryCore typechecker – except under MCP Server, which only warns. When unset, the tool is gated exactly when its steps make it anything but read-only – the same reading its MCP category comes from, so a tool that annotates itself read-only is not gated – and only where a pause is honored: an unattended surface never invents a gate it cannot keep.

  • guards : ingredient slot of rowActionsIngredients(guardScope) (many)
    Rules to enforce before this tool acts, written as row-action steps – normally one Require per rule. The steps run in order over the row named in this tool’s details, and the first refusal ends the call: nothing is written, read or sent, the model is told the refusal’s own message, and that message is also appended to the tool’s description and listed as a rule on the tool’s card. Omit it to enforce nothing.

  • rowFilters : row filters on updateTable
    Restrict which rows the LLM can update, using filter operators like eq, neq, gt, lt, in, currentUser, etc. Each filter is a list item with a kind (the operator) and settings.
    Operators: eq, neq, gt/gte/lt/lte (column/value), in (column/values list), after/before (column/days), currentUser (column only).