function discoverCapabilityFigure(host) { ensureStyles(); var shell = document.createElement('div'); shell.className = 'mf-shell'; var svg = [ '', '', '', '', 'discover: optional, once', 'client', 'server', '', 'server/discover', 'supportedVersions + capabilities + ttlMs', 'every tools/call: declare capabilities again', 'client', 'server', '', 'clientCapabilities: {}', '-32021 missing elicitation', 'client', 'server', '', 'clientCapabilities: {elicitation:{form:{}}}', 'result: complete', '' ].join(''); shell.innerHTML = [ '
Discovery and Capability Negotiation discover once; declare capabilities on every call
', '
', svg, '
', '
server/discover is optional and cacheable, a one-time summary of what a server can do. Every tools/call still carries its own clientCapabilities in _meta, checked fresh: missing elicitation gets -32021 naming it, declaring it lets the call complete.
' ].join(''); host.appendChild(shell); } // register as: mcpa-07-discover