The split you draw between resources being safe to read and tools needing care is the part most MCP intros skip. In practice that boundary is only as good as the server's honesty about which calls mutate state, and I have seen a "read" tool quietly write. Do you gate tool invocation behind an approval step, or trust the server's own tool-vs-resource labeling?