Delete from table

Let the LLM delete rows from a database table.

Ingredient Family: llmQueryToolIngredients

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

Details

guards run once per row the delete is about to remove, over every column of the table, and one refusal deletes nothing. Every call costs one extra read of the matching rows, guards or none, since codegen reads them before the delete so that a guard can judge them.

Local scope

Names introduced within this component’s knobs:

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

Settings

Required

  • deleteTable : table
    The table the LLM can delete from

  • toolDescription : constant value (type: text; required, non-nullable)
    A description of when/why to delete from 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 deleteTable
    Restrict which rows the LLM can delete, 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).