manifest.visibility sets the default for every tool the plugin ships. Individual tools can override it. Three values: 'always', 'on-demand' (default), 'silent'.
Set plugin-wide visibility on the manifest
The manifest’s Three tiers:
visibility flag is the default applied to every tool the plugin returns.'always' (bound to the agent at boot, listed in the Tier-1 prompt), 'on-demand' (default — discoverable via list_capabilities, loaded via load_capability), 'silent' (not advertised — see the warning below). Canonical source: weather.plugin.ts.Override visibility per tool
Set
visibility directly on the PluginTool when one tool needs a different tier from the rest of the plugin.PluginTool shape: see types.ts.What to know before shipping
- Default is
'on-demand'. A plugin without an explicitmanifest.visibilityis treated as on-demand. 'on-demand'plugins live in a per-threadloadedPluginsset. The set is monotonic — loading is forever for that thread; a new thread resets it.- Per-tool overrides let you ship a mixed plugin (one
'always'tool + several'on-demand'tools) without splitting it. 'silent'plugins still run their middleware and Nest modules, and any tools they return stay callable by the agent — they’re just never advertised. Use it for instrumentation, rate limiting, billing, and transports. It is not a way to hide a capability for security.- A fork with 50
'on-demand'plugins can usually keep 3–5 loaded per thread — the budget stays bounded as the catalog grows.
Where to read next
Visibility tiers concept
Costs and trade-offs for each tier.
Meta-tools
How
list_capabilities and load_capability work.