notifications/tools/list_changed and the harness re-fetches the list.
How a tool gets in
- A publish. When
acquirefinishes, orpublish_toolsucceeds, the tool is promoted for the agent that asked. - The agent asks.
promote { vendor, name }brings a tool from the toolbox into the list.find_toolsays what exists.
How a tool gets out
Expansion has an author. Contraction has two.- The agent asks.
demote { vendor, name }takes a tool out when the agent no longer needs it. The skill tells it to. - The rule. Each agent has a cap and an idle window, set when the agent is created and editable on its page under Name, cap and idle window. A scheduled sweep applies them: a tool unused for longer than the idle window is demoted, and when more tools are promoted than the cap allows, the least recently used beyond it go first.
Nothing is deleted
A demoted tool is still in your toolbox, every version of it. It is onefind_tool and one promote from coming back, and run_tool runs it by name without promoting it at all. The monthly job whose tool was demoted after 21 idle days degrades to two extra calls, not to a failure.
The turn after a publish
The harness re-reads the list on the notification, but the turn in which a tool was just published may still be running against the old list.run_tool { vendor, name, input } runs the new tool by name in that turn. Hermes re-fetches on the notification; OpenClaw re-lists at the start of its next turn; a client that ignores the notification altogether still works through run_tool and find_tool.