{
  "schema_version": "2025-06-18",
  "name": "vcn39-browser-tax-deck",
  "description": "MCP discovery card for the VCN #39 Browser Tax deck. The slides you are reading publish their own card and register their own in-page tools, which is the exact pattern the workshop teaches: instrument the page once, and the same DOM has two callers.",
  "transport": "webmcp",
  "surface": "navigator.modelContext",
  "url": "https://vcn-39-browser-tax.vercel.app/",
  "feature_detect": "'modelContext' in navigator",
  "tools": [
    { "name": "next_slide", "description": "Advance the deck to the next slide." },
    { "name": "goto_slide", "description": "Jump the deck to a specific 1-based slide. Parameter: { index: integer }." },
    { "name": "list_labs", "description": "List the four hands-on labs with their names and /lab/ URLs." },
    { "name": "get_takehome", "description": "Return the take-home starter (webmcp-starter) description and its /takehome/ URL." },
    { "name": "submit_feedback", "description": "File agent-to-agent feedback about the workshop or deck. POSTs /api/feedback." }
  ],
  "endpoints": {
    "feedback": "https://vcn-39-browser-tax.vercel.app/api/feedback"
  },
  "note": "next_slide / goto_slide / list_labs / get_takehome / submit_feedback are WebMCP tools registered via navigator.modelContext.registerTool({ name, description, inputSchema, execute }). They are live only in a browser that supports the API (Chrome 146 Canary with chrome://flags/#enable-webmcp-testing) and no-op silently everywhere else. submit_feedback has a real REST sink at /api/feedback (anonymous POST, CORS-open). The whole point of the night is that the tools live in the page, not on a hosted server."
}
