The model never sees a tool’s operation tree. It sees the name, the description and the json_schema, and those three decide whether the tool is called at the right moment with the right values. Write them as prompt, not as bookkeeping.

name

The function name the model is shown. It must match ^[a-zA-Z_][a-zA-Z0-9_]*$ and be unique in the workspace. Name the capability in snake_case: book_appointment, not post_booking_v2. These names are reserved for tools the platform injects, and creating or renaming a tool to one returns 400 '<name>' is reserved by the platform: voicemail_detected, submit_result, finish_without_result, get_faq_answers, lk_agents_cancel_task, lk_agents_get_running_tasks.

description

The description tells the model when to call the tool, and when not to. Name the conditions, the neighbouring tools it must not be confused with, and any cost the caller will feel.
A tool with an empty description is shown to the model with only its name, and the dashboard’s tool list flags it.

json_schema

The arguments the model fills in, as a JSON Schema object.
  • Declare only values the caller can say or the agent can know. An internal UUID gets invented. Take the order number and look the id up in the tree.
  • Give every property a description: what goes in it, in what format, and how to get it from the conversation.
  • Require only what the tree cannot run without. The model invents a value for a required field rather than leave it out.
  • Use enum for closed sets, so gold, Gold and gold tier cannot all reach your API.
  • Never take a credential as an argument. Read it from {{secrets.NAME}}. Publish warns when an Authorization, X-Api-Key, Api-Key or Cookie header is built from {{args.…}}.
Changing the schema is a patch. Omitted fields are left alone; json_schema is replaced whole.

What schemas are accepted

The schema is checked as JSON Schema Draft 2020-12, and the whole vocabulary is accepted: enum, minimum, pattern, format, items, nested properties, $defs, anyOf. A schema with no top-level type is read as an object, so {"properties": {...}, "required": [...]} is accepted. {} means no arguments.
  • {{args.NAME}} is checked against the top-level properties only. {{args.address.city}} checks that address is declared.
  • The model’s arguments are validated against the schema before the tree runs. A call that does not match never reaches your endpoints: the tool fails with Tool arguments are invalid at <path>: <message>, which is what the model is handed.
The dashboard’s Arguments table holds a flat object of string, number, integer, boolean and enum properties, each with a description and a required flag, and a dashboard save rewrites json_schema from that table. Any richer schema written over the API — items, nested properties, minimum, pattern, format, default — is dropped by the next dashboard save.

Next

The operation tree

What runs once the model has called the tool.

Templating and data

Reading {{args.…}} and moving values between operations.