Insert into table

Let the LLM insert rows into a database table.

Ingredient Family: llmQueryToolIngredients

Outline Display: Allow LLM to insert rows into {{insertTable}}: {{toolDescription}}
Requires approval: {{requiresApproval}}{{guards:
Guards: {{guards}}}}{{advisory:
Not enforced by the server: {{advisory}}}}

Details

All columns must be provided (no auto-generated keys or defaults). guards run on the row about to be inserted – the LLM’s arguments, one column each – and one refusal inserts nothing.

Local scope

Names introduced within this component’s knobs:

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

Settings

Required

  • insertTable : table
    The table the LLM can insert into (all columns will be exposed)

  • toolDescription : constant value (type: text; required, non-nullable)
    A description of when/why to insert into 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.