CourseModel Context Protocol · Module 3: Tools · part 21 of 83
Part 21 · Module 3: Tools

Topic 7: Module 3 milestone and interview questions

8 min read·22 Sept 2026

Project Milestone

At the end of this module your working copy contains the Module 3 prototype and its measurement scripts:

text
notes-assistant/
  notes/                          unchanged: every demo writes to a temporary copy
  notes_assistant/                unchanged: store.py and llm.py (Module 1) are imported; host.py (Module 6) is previewed for needs_approval
  examples/
    __init__.py
    m03_first_attempt.py          the careless tool and what it teaches the model
    m03_server.py                 build_m03_server: search_notes and create_note (canonical design)
    m03_inspect_tools.py          prints the wire definition and both result channels
    m03_tool_names.py             spec and provider name checks
    m03_annotations.py            annotations as untrusted claims
    m03_tool_variants.py          vague, disambiguated, and merged tool sets
    m03_tool_selection_eval.py    20 labelled questions, stand-in and --llm selectors, statistics
    m03_payload_size.py           inline versus snippet-plus-URI versus resource links
    m03_errors.py                 validation, ToolError, crash, leak, MCPError
    m03_tool_cost.py              definition cost of 2 versus 12 tools
    m03_idempotency.py            retries of create_note versus a create-or-confirm tool
    m03_dynamic_tools.py          add_tool plus notify_tools_changed, client.listen, HTTP serve mode
    m03_wire/listen.json          raw subscriptions/listen request
    m03_wire/call.json            raw tools/call request
    m03_lab.py                    the Module Lab
  tests/
    test_m03_tools.py             the tool contract as tests

Code explained

The rest of this course is yours to keep

This course is bought on its own, once, and stays readable afterwards, including the parts added to it later.