What it is
Every plugin declares amanifest of type PluginManifest. It is not human documentation — it is structured metadata the LLM reads. The runtime uses it three ways:
- The Tier-1 prompt block — the “Available Capabilities” list rendered for
alwaysplugins on every turn. list_capabilities— the meta-tool the agent calls to enumerate what it can load.load_capability— the meta-tool that returns a manifest in full when the agent activates a plugin mid-conversation.
What each field is for
| Field | Purpose |
|---|---|
title | Human-readable label. Distinct from name (kebab-case unique ID). |
summary | One-line description. Heads each Tier-1 entry for always plugins as - **{name}** — {summary}. |
whenToUse | Trigger phrases. The single most important field — quality here determines whether the LLM picks the plugin when it should. Required when visibility !== 'silent'. The first two render into Tier-1 as a When to use: sub-bullet. |
whenNotToUse | Anti-pattern phrases. Use to disambiguate from overlapping plugins. The first renders into Tier-1 as an Avoid for: sub-bullet. |
examples | Few-shot user-message → tool-call bindings. Cross-checked at boot — every example’s tool must reference a tool this plugin registers. The first renders into Tier-1 as an Example: sub-bullet. |
tags | Lowercase labels for search. |
category | One of: data, communication, automation, memory, integration, ui, auth, observability, core. |
visibility | always / on-demand / silent. See Visibility tiers. |
stability | stable / beta / experimental. Surfaced as a hint to the agent. |
Where the agent sees it
Tier-1 plugins pay token cost on every turn forever — and not just the summary: each entry also renderswhenToUse, whenNotToUse, and the first example as sub-bullets, so manifest length is prompt length. on-demand plugins cost nothing in the prompt until the agent loads them. silent plugins are never listed in Tier-1 and can’t be loaded through the meta-tools (note: a silent plugin’s tools, if it ships any, are still bound and callable — silent is not a security boundary).
Writing a good manifest
- Be specific in
whenToUse. “Weather questions” is too vague. “User asks about current weather, temperature, precipitation, or wind in any city” is precise. - Use
whenNotToUseto disambiguate when your plugin conceptually overlaps with another (Firecrawl vs Sandbox vs Domain Indexer is the canonical case). - Examples should cover the typical patterns, not just the obvious one.
- Keep
tagslowercase. They’re for search ranking, not display. - Pick
visibilitydeliberately. Default toon-demand; promote toalwaysonly when the agent needs the plugin on nearly every turn.
Read next
Write a plugin
Where the manifest lives in code.
Manifest schema reference
Exact field types and constraints.
PluginManifest.