Add tools when needed
A ticket-search tool has a clear contract and limits.
Connect one small tool and test its failures
Start with one tool that reads synthetic data. Bound its input and returned fields. A successful connection does not prove correct access; test unknown tools, invalid data and disconnection.
A connected phone does not authorize every call.
A connection still needs access checks
MCP connects tools. Each tool still needs input checks, bounded output and clear failure results. Returned text does not become an instruction.
A connected phone does not authorize listening to every call.
Practice
Complete one local search tool without a live AI/MCP connection.
Edit only runTool in model.mjs according to its contract. Use findTickets, allowlist search_tickets, validate query/extra keys and return only id/title/status. Preserve tests and run tool checks. Add no MCP server, API key, shell or network access.
Check your work
Unknown names and invalid arguments are rejected.
Local tool checks are not presented as live-agent evaluation.
References
- Building effective agents — Anthropic Engineering
- Writing effective tools for agents — Anthropic Engineering
- Introduction to MCP — Claude Academy
- Claude MCP — Claude Code Docs
- Codex MCP — OpenAI Docs
- MCP security practices — Model Context Protocol
- MCP reference servers — Model Context Protocol maintainers