Tools
Copy as MarkdownHow your app's tools are named for people's assistants, which ones ask the person first and how annotations decide it, and the size bound.
Your app's tools are what people's assistants can use. Theorem lists them each time a person writes to their assistant, so a change to your tools shows from their next message.
Names
The model sees each tool as a short name made from your app's name, then _, then the
tool's own name.
- The short name is your app's name in lower case letters, digits and
_, at most 20 characters, starting with a letter: Attendance isattendance, and Al-Noor ERP isal_noor_erp. A name with none of those letters, such as one in Arabic, isapp. - If a person has two apps whose names make the same short name, or one that matches one
of Theorem's own connections, the later one gets
_2, then_3. - A tool named
clock_inin the app called Attendance isattendance_clock_in. A tool whose name already begins with the short name and_is not named twice. - An app's name that begins with a digit gets
app_in front: 3D Lab isapp_3d_lab. - A whole name is at most 64 characters. Any character other than the letters a to z and
A to Z, digits,
_and-becomes_, so name your tools in those. - A tool whose whole name is already taken is left out, with no message: two of your tools whose names are the same after the cut at 64 characters, or a name that comes out as one of Theorem's own tools. The check still lists it. Keep names short and your own.
People see a tool by its title, so give every tool a title. With none, its name is
made into one.
Which tools ask first
The assistant asks the person before it uses a tool, unless the tool's annotations say it is safe:
| Annotations | The assistant |
|---|---|
readOnlyHint: true | runs it unasked |
destructiveHint: false and openWorldHint: false | runs it unasked |
| anything else, or none | asks first |
A missing hint counts as the cautious one, so a tool with no annotations always asks. The check on the Connections tab shows each tool as asks first or runs freely.
In the example, My hours and Team hours say readOnlyHint: true and run freely.
Clock in changes something and reaches your own records, so it says
destructiveHint: false and openWorldHint: true, and asks first.
What the person sees when it asks
The approval card shows the tool's title and its arguments, one line each and eight at
most, leaving out any argument that is an ID. So a tool that asks should take what the person needs to decide
as its arguments: who, what, how much. Clock in takes hours.
Tools that only read run together
When the model asks for several tools at once, those with readOnlyHint: true may run at
the same time. A tool that does not say so is taken to change something, and runs alone,
in order.
Limits
- Listing. Your app must answer within 3 seconds to connect and 8 seconds to list its tools.
- Size. What your tools list comes to 250,000 characters at most together, as your app lists them: everything in each tool's listing, with its name, title, description, schemas and annotations. Past that, your app is unavailable, and the leader is told why. There is no limit on the number of tools.
- Answers. One answer may be up to 16 MiB, and one event of a streamed answer up to 4 MiB.