function consentGatesFigure(host) {
ensureStyles();
var shell = document.createElement('div');
shell.className = 'mf-shell';
shell.innerHTML = [
'
Consent and Least Privilege one tools/call, two independent gates before it runs
',
'
',
'',
'
',
'
A tools/call meets the scope gate first: insufficient scope comes back as HTTP 403, and the client retries with the union of its old and newly challenged scopes, capped at a few attempts. Only once scope clears does the call meet the consent gate: a tool needing approval comes back input_required, and the client retries after an elicitation round trip. Either gate can turn a call away on its own.