One easy way to end up with an AI agent that deletes things nobody approved: build the delete as the wrong kind of MCP building block.
There are only three kinds, and what tells them apart is who gets to press go: the model, the app, or you.
MCP (Model Context Protocol) is an open standard that lets an AI app plug into outside programs called servers, like a GitHub server or a calendar server. A server can offer three kinds of thing.
1) Tools: the model decides. A tool is a function with a typed input schema (a description of exactly which arguments it takes, like a departure city, an arrival city and a date for searchFlights). The model reads the conversation and chooses to call it.
2) Resources: the app decides. A resource is read-only data with an address, like file:///path/to/document.md. The app you're chatting in picks which ones to load into the model's context (the text it can see while it answers). Loading one only reads data, so nothing changes.
3) Prompts: you decide. A prompt is a reusable template with blanks to fill in, like "plan-vacation". You trigger it by name, often by typing it as a slash command: /plan-vacation.
So the rule of thumb: if the model should choose when it runs, build a tool. If the app should choose what context to load, build a resource. If a person should kick it off by name, build a prompt.
Tools are the block that can change things, so that's where the care goes. They can carry labels such as a read-only hint or a destructive hint, but the MCP spec says the app must treat those labels as untrusted unless they come from a trusted server. A label tells you what the server claims, not what the code does. For anything that writes or deletes, I'd keep the confirmation step whatever the label says.
Quick check before you scroll: A server has a read-only database schema, a "summarize my meetings" template, and a function that sends an email. Which building block fits each one, and who triggers it?
Full breakdown + the answer: frankduah.me/learnings/2026-10-26-mcp-building-blocks-tools-resources-prompts
Before you open the breakdown, drop your three picks in the comments: which block fits the database schema, the meeting template and the email function, and who presses go on each?
New here? I post a bite-size AI / ML concept like this every day. Follow me for the daily drop, and it compounds fast. Why I do it: https://lnkd.in/gK8knHDH
#MCP #ModelContextProtocol #AgenticAI #AI #LLM #AIAgents #MachineLearning
The answer
The schema is a resource (the application decides to load it), the summary template is a prompt (the user invokes it), and the email sender is a tool (the model decides to call it, ideally after the user approves).