Separating capability, authority, and verification is the right decomposition, and authority is the one teams under-specify. I apply the same split when I vet MCP servers before trusting them in an agent, checking what a tool is allowed to do separately from what it can do, and wrote it up here: kartiknvjk.hashnode.dev/how-i-evaluate-mcp-server…. Where do you enforce the authority boundary, inside the agent or outside it?