Permissions Enforced in Code
A tool runs only when the level and the route gate both admit the caller, so a message cannot widen them.
Your Team's Agent
You already know what needs doing, and your admin panel is what slows you down. Ask the agent in plain words from any dashboard page, and it calls your app's tools under your permissions.
A new hire needs a week to learn where everything is in your admin. An account change takes six screens. A bulk change goes to a developer, because you do not want to click one button 200 times.
Each tool has one level for each seat, and your rules are enforced in code before the call. These tools are examples, and your own list comes from your app.
accounts_searchThe agent finds the record.Readtrials_extendThe agent runs it for a permitted member.Autoplans_changeYou approve the exact call.Ask Firstaccounts_deleteThe tool is not listed for this seat.OffThe agent can only do what the team member asking is allowed to do.
Write the job in plain words, and the agent drafts these steps as a card. If you build apps for other people, ship the same steps as a recipe, and every customer gets the job with no setup.
[
{
"id": "extend-trial",
"name": "Extend a trial",
"trigger_kind": "call",
"steps": [
{
"kind": "tool",
"tool": "trials_extend",
"arguments": {
"account": "{{input.account}}",
"days": 14
}
},
{
"kind": "send",
"to": "{{input.email}}",
"subject": "Your trial was extended",
"text": "You have two more weeks. Reply to this email if you need anything."
}
]
}
] A tool runs only when the level and the route gate both admit the caller, so a message cannot widen them.
Each run is a thread in your inbox, and each tool call, model, and cost is stored in your database.
Anyone on your team can take over a thread with one click and read the full history.