{"version":"2.1.209","anchor":"capabilities-display-in-tool-listings","canonical_anchor":"capabilities-display-in-tool-listings","heading":"Capabilities Display in Tool Listings","tier":null,"area":null,"scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.209\/e\/capabilities-display-in-tool-listings","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.209","markdown":"### Capabilities Display in Tool Listings\n\nTwo new helper functions add capability-aware display to Artifact publish operations. `Nkd` (`capabilitiesFromGatedInput`) safely extracts the `capabilities` field from a tool input only when the field is explicitly present \u2014 distinguishing \"not provided\" (carry the stored declaration forward) from \"provided as `{}`\" (explicitly clear the grant). `Fkd` (`frameCapabilitiesSummary`) converts a capabilities object into a compact parenthesised summary string.\n\n- For the `mcp` capability key (when config contains a non-empty `servers` array), each server entry formats as `<serverName>[N tool(s)]`, joined into a comma-separated list: e.g. `mcp: slack[3 tools], gdrive[1 tool]`.\n- Non-`mcp` capability keys render as their bare key name with no further sub-structure.\n- If more than 8 servers (or 8 capability segments) are present, the formatter prepends `[N total]` and shows only the first 8, preventing runaway output on large declarations.\n- The assembled string is hard-truncated at 400 Unicode characters with a `\u2026` ellipsis, then wrapped in parentheses and prefixed with a space: ` (mcp: slack[3 tools])`.\n- `Fkd` is consumed by the `ArtifactTool`'s `toAutoClassifierInput` method (via the `i4y()` wrapper), so the summary appears in the string the permission auto-classifier reads when deciding how to handle an Artifact publish call.\n- When `Fkd` returns empty but a non-empty capabilities object is present (e.g. capabilities stored from a prior publish), the auto-classifier input falls back to `\" (carries a stored connector grant)\"`; if capabilities were explicitly passed as `{}`, it shows `\" (clears stored connector grant)\"`; if the stored capabilities could not be read from the control plane, it appends `\" (caps: unknown)\"`.\n\n**Evidence**\n\n`Nkd` (`capabilitiesFromGatedInput`) and `Fkd` (`frameCapabilitiesSummary`) added (search for `\"capabilities\" in e ? e.capabilities : void 0`); `Fkd` consumed by `i4y()` inside `ArtifactTool.toAutoClassifierInput` (search for `frameCapabilitiesSummary`); overflow enforced by `oSo` (non-empty `servers` guard) and `qar` helper (8-item cap with `[N total]` prefix, search for `qar`)"}