Two group activities and one case. All three ask the same question in different clothes: where does your trust boundary sit, and what crosses it?
A campus-services agent is being built for the Robinson advising office. It has to reach three things — and each one is a different kind of boundary.
Your agent must work with: (1) the student-records database (owned by the registrar, holds grades and holds); (2) the room-booking API (owned by facilities, can reserve and cancel real rooms); (3) the tutoring-center agent — an existing agent, built and run by a different department, that already knows how to find and book tutoring slots.
For each of the three, decide: MCP server, A2A, or just an edge in your own graph — and say why in one sentence. Then draw a single dashed line around everything inside your trust boundary, and mark every tool that gets a human gate.
Produce: one labeled diagram (host, clients, servers, peers, the trust boundary, the gates) + one named risk per integration, each with the control you would put on it.
1 · Student-records database → MCP server. A database has no judgment to borrow; you want data. Build one server the registrar owns and every campus agent can reuse — that is the M+N payoff in a single decision. Design it as narrow tools, not raw SQL: lookup_student(id), list_holds(id). Risk: over-broad credentials and student data flooding the context window. Control: read-only role scoped to the two queries, return only the fields needed, and log every call at the protocol boundary. Reads generally do not need a gate — but they do need a reason, and that reason should be in the log.
2 · Room-booking API → MCP server, with a gate. Also a system, so also a server — but this one acts on the world, and a reservation is not free to undo. Risk: the agent books, cancels, or double-books real rooms; a mistake is visible to real people. Control: constrain the tool (only advising-office rooms, only during business hours, date range capped), gate the confirming call behind a human approval that shows room, time, and who it displaces, and prefer a reversible hold over a hard booking where the API allows it.
3 · Tutoring-center agent → A2A (with an honest alternative). Another department owns the agent, the data, and the rules; you want an outcome, not their internals; and the interaction may need a clarifying round trip. That is delegation. Risk: you cannot audit their side — you get an outcome and a claim, not a trace — and an input-required task can sit waiting forever. Control: allow-list the counterparty rather than accepting any card, log the Agent Card version and the full message trace on your side, set a timeout and a fallback path, and treat everything they return as untrusted text. The honest alternative: if it turns out that “agent” is really a thin wrapper over a booking API, the right answer is an MCP server, not A2A — and if the tutoring team is willing to merge into your codebase, a graph edge beats both.
The trust boundary. Your dashed line should enclose the host, its clients, and the servers your institution runs. The tutoring agent sits outside it. The subtle part most groups miss: an MCP server you install but did not write is inside the line even though you do not control it — which is precisely why installing one requires the same review as any production dependency.
Common mistakes: calling the room-booking API “A2A” because it is another department's system (it is a system, not an agent); drawing the boundary around the whole diagram (then it is not a boundary); and putting a gate on the read tools, which trains people to approve everything and quietly destroys the gate that matters.
Week 5’s rule, applied to somebody else’s code: every tool an agent can call belongs in one of three tiers before it goes anywhere near production.
Reversible, cheap, read-only. Let the agent run it freely. Reads, lookups, searches. Log it, do not interrupt for it.
Allowed, but narrowed in code: an allow-list of paths or tables, a row or spend cap, a dry-run first, a scoped credential. The agent may act — inside a fence.
A human approves before execution. Irreversible, costly, destructive, or outbound-to-a-human actions. Delete, send, pay, publish.
Open the MCP documentation ↗ and find one example or reference server (a filesystem server is the easiest to reason about; a database or an issue-tracker server also works). Copy its actual tool list verbatim — names and descriptions, as published, not from memory. Then, for each tool: assign auto / constrain / gate, and write the one-line control you would implement.
Then the harder half: find one tool whose description is ambiguous enough that you cannot classify it confidently, and write the question you would send its maintainer. Ambiguity in a tool description is a security finding, not a documentation nit — the model reads that description too.
Produce: the tool list with a tier and a control per tool, the name of the server and where you found it, plus your one question for the maintainer.
A file-access server of the kind described in the MCP docs might expose tools along these lines. Names and descriptions here are an illustrative teaching example, not a quotation from any specific server — your job in the exercise is to work from the real, current list.
The pattern to take away: the verb in the tool name predicts the tier better than anything else — list / read / search / get lean auto or constrain; write / move / delete / send / pay / publish lean gate. And notice how much of the reasoning is about scope rather than permission: “constrain” is usually the answer when a tool is fine in principle and terrifying in range.
Three tools from a hypothetical campus MCP server. Auto, constrain, or gate?
A university advising agent needs grade history. A vendor offers a ready-made “grades MCP server” that already speaks to the student information system — installable this afternoon, versus a quarter of internal work. The pilot team installs it on Thursday. (Fictional teaching case; any resemblance to a specific product or institution is coincidental.)
Working grade lookups in an afternoon. A maintained connector somebody else keeps current when the SIS changes. A tool list the agent discovers at runtime, so no advising-agent code changed. Every argument in this course's M+N pitch, delivered.
A process nobody at the university wrote now holds SIS credentials, runs inside the trust boundary, and returns text that flows straight into the model's context. It auto-updates. Its tool list includes update_grade, which nobody on the pilot team noticed, because discovery means the agent found the tools — not that a human read them.
update_grade. Your agent should never change a grade. Name three places that could have been stopped, and say which one you would rely on.update_grade fails at the database no matter who calls it. (2) At the host. A host can allow-list which discovered tools are exposed to the model — discovery is not obligation, and the model cannot call a tool it was never shown. (3) At the gate. If the tool must exist, it requires a named human approver, with the before-and-after values on the approval screen. Which do you rely on? The credential — it is the only one that holds when someone is careless, when a prompt injection is clever, or when a future teammate edits the allow-list to fix an unrelated bug. Layer all three (defense in depth), but put your confidence in the layer furthest from the model. The general principle: least privilege beats good intentions, and a capability that does not exist cannot be misused.Five questions an interviewer would actually ask about this material. Answer out loud first, then reveal.
Your final-project proposal is due this week — Tue Sept 29 (Wed section) / Wed Sept 30 (Thu section), 11:59 pm EST, submitted on iCollege. The official prompt and rubric live on iCollege; follow those if anything here differs. Use this as a last pass before you submit.
Add a short interface paragraph. You do not have to build an MCP server for the capstone — but write your tool interface down as if someone else would implement it: tool name, parameters and types, what comes back, what errors are possible, and which of the three tiers it lands in. Two benefits, one of them selfish: it is the artifact that makes your system explainable in a demo, and it is the difference between a project that can grow and one that has to be rewritten.
A2A Protocol — official site (Linux Foundation) ↗
Google Developers (2025) — Announcing A2A ↗
IBM Think — What is MCP? (vendor-neutral explainer) ↗
DeepLearning.AI — MCP: Build Rich-Context AI Apps (short course) ↗
Microsoft — AI Agents for Beginners (MIT licence) ↗
Hugging Face — Agents Course (Apache-2.0) ↗
If you only have twenty minutes: the two videos — IBM on remote tool calling and Google on A2A — plus the MCP docs introduction will get you through the material honestly.