The Page That Gave Orders — a tool result is input, and input is not a command — cheat sheet
mcp, ai-agents
jq '.permission_denials' ~/release-notes.json # what Claude Code refused, and the arguments
claude -p … --permission-mode dontAsk --allowedTools "mcp__web__fetch_page,Write"
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"fetch_page","arguments":{"url":"…"}}}' \
| python3 /opt/mcp-web/web_mcp.py 2>/dev/null # exactly what the model would get
/etc/mcp-web/config.json: allowed_hosts, strip_hidden, label_untrusted