{
  "name": "Agent-Native Workshop",
  "description": "A workshop on building agent-native products, which is itself an agent-native product.",
  "version": "1.0.0",
  "protocolVersion": "2025-06-18",
  "serverInfo": {
    "name": "Agent-Native Workshop",
    "version": "1.0.0",
    "description": "A workshop on building agent-native products, which is itself an agent-native product."
  },
  "url": "https://agent-native-workshop.vercel.app/api/mcp",
  "transport": "streamable-http",
  "server_card": "https://agent-native-workshop.vercel.app/.well-known/mcp/server-card.json",
  "servers": [
    {
      "name": "workshop",
      "url": "https://agent-native-workshop.vercel.app/api/mcp",
      "transport": "streamable-http",
      "protocol_version": "2025-06-18",
      "authentication": {
        "type": "oauth2",
        "flow": "device_code",
        "metadata": "https://agent-native-workshop.vercel.app/.well-known/oauth-protected-resource"
      },
      "tools": [
        {
          "name": "workshop_overview",
          "title": "Workshop overview",
          "description": "START HERE. What this workshop is, its three parts, and how you (an agent) should walk your human through it. Returns the structure plus the URL map for every other surface. No token required.",
          "requires_auth": false,
          "annotations": {
            "title": "Workshop overview",
            "readOnlyHint": true,
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false
          },
          "inputSchema": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_outline",
          "title": "Workshop outline",
          "description": "The full outline: three parts, every slide title and its one-line claim, and the seven build steps. Use this to orient before reading anything in full. No token required.",
          "requires_auth": false,
          "annotations": {
            "title": "Workshop outline",
            "readOnlyHint": true,
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false
          },
          "inputSchema": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_part",
          "title": "Read one part",
          "description": "Read one whole part in full, every slide with its body. Part 1 is what agent-native means, Part 2 is the seven layers (Layer 1 to 7) and the mechanism behind each, Part 3 is the guided build (Step 1 to 7). No token required.",
          "requires_auth": false,
          "annotations": {
            "title": "Read one part",
            "readOnlyHint": true,
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "part": {
                "type": "integer",
                "enum": [
                  1,
                  2,
                  3
                ],
                "description": "Which part, 1 to 3."
              }
            },
            "required": [
              "part"
            ],
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_slide",
          "title": "Read one slide",
          "description": "One slide in full by its number, 1 to 18. No token required.",
          "requires_auth": false,
          "annotations": {
            "title": "Read one slide",
            "readOnlyHint": true,
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "n": {
                "type": "integer",
                "minimum": 1,
                "description": "Slide number."
              }
            },
            "required": [
              "n"
            ],
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_build_step",
          "title": "Get a build step",
          "description": "THE GUIDED BUILD. One of seven steps, with its goal, why it is in this order, the files to edit, the exact commands, a checkable done-condition, a time budget in minutes, the command that verifies it, and the trap that costs people the most time. Walk your human through these in order. No token required.",
          "requires_auth": false,
          "annotations": {
            "title": "Get a build step",
            "readOnlyHint": true,
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "step": {
                "type": [
                  "integer",
                  "string"
                ],
                "description": "Step number 1 to 7, or its id such as \"deploy-first\"."
              }
            },
            "required": [
              "step"
            ],
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_check_target",
          "title": "Check a deployed site",
          "description": "VERIFY YOUR HUMAN'S BUILD. Give it their deployed https URL and it runs live readiness checks against it, returning per-check findings with the specific fix for each failure and which one to fix first. Use this after every build step. No token required.",
          "requires_auth": false,
          "annotations": {
            "title": "Check a deployed site",
            "readOnlyHint": true,
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "description": "The deployed https URL to check, e.g. https://my-product.vercel.app"
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_board",
          "title": "The room board",
          "description": "Who is in the room and how far each attendee has got. This is what is on the projector. No token required.",
          "requires_auth": false,
          "annotations": {
            "title": "The room board",
            "readOnlyHint": true,
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100,
                "description": "How many attendees to return, 1 to 100. Default 50."
              }
            },
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_report_problem",
          "title": "Report a problem",
          "description": "REPORT A PROBLEM. If anything in this workshop is wrong, missing, out of date or confusing, say so here: a step that did not work, two files that disagree, an instruction you could not follow. It goes to the facilitator and is how this workshop gets fixed. Say what you tried and what you expected. Nothing you send is made public. No token required.",
          "requires_auth": false,
          "annotations": {
            "title": "Report a problem",
            "readOnlyHint": false,
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": false
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "problem": {
                "type": "string",
                "description": "What went wrong, in a sentence or two. Max 1000 chars."
              },
              "url": {
                "type": "string",
                "description": "The address you were using when it went wrong."
              },
              "agent": {
                "type": "string",
                "description": "Your name, so the facilitator knows who to ask."
              },
              "expected": {
                "type": "string",
                "description": "What you expected to happen instead."
              }
            },
            "required": [
              "problem"
            ],
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_register",
          "title": "Register on the board",
          "description": "Register your human in the room and optionally record the URL they are building. Puts them on the board. Needs a token with scope progress:write.",
          "requires_auth": true,
          "annotations": {
            "title": "Register on the board",
            "readOnlyHint": false,
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": false
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "target_url": {
                "type": "string",
                "description": "The https URL they are building, if they have one yet."
              },
              "note": {
                "type": "string",
                "description": "What they are building, one line."
              }
            },
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_complete_step",
          "title": "Mark a build step complete",
          "description": "Mark a build step complete for your human. PROOF IS REQUIRED: give either `url` (their deployed https address, which must pass workshop_check_target with no failures) or `evidence` (the summary line from `npm run verify` on their own computer, e.g. \"PASS 40 WARN 1 FAIL 0\"). With neither, or with a failing check, the step is refused. The board records how it was proved: \"checked online\" or \"checked locally (self-reported)\". Step ids: 1 = \"deploy-first\", 2 = \"make-it-yours\", 3 = \"your-idea\", 4 = \"wire-auth\", 5 = \"durable-storage\", 6 = \"api-product\", 7 = \"verify-and-scan\". The step number (1 to 7) also works. Needs a token with scope progress:write.",
          "requires_auth": true,
          "annotations": {
            "title": "Mark a build step complete",
            "readOnlyHint": false,
            "destructiveHint": false,
            "idempotentHint": true,
            "openWorldHint": true
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "step": {
                "type": [
                  "string",
                  "integer"
                ],
                "description": "Which step: its number, 1 to 7, or its id (\"deploy-first\", \"make-it-yours\", \"your-idea\", \"wire-auth\", \"durable-storage\", \"api-product\", \"verify-and-scan\"). Same value you passed to workshop_build_step."
              },
              "step_id": {
                "type": [
                  "string",
                  "integer"
                ],
                "description": "Older name for `step`. Either works."
              },
              "url": {
                "type": "string",
                "description": "Proof, online: the deployed https address. It is checked now with workshop_check_target and must have no failures."
              },
              "evidence": {
                "type": "string",
                "description": "Proof, local: the summary line from `npm run verify`, e.g. \"PASS 40 WARN 1 FAIL 0\". FAIL must be 0."
              }
            },
            "anyOf": [
              {
                "required": [
                  "step"
                ]
              },
              {
                "required": [
                  "step_id"
                ]
              }
            ],
            "additionalProperties": false
          }
        },
        {
          "name": "workshop_ask",
          "title": "Ask the facilitator",
          "description": "Leave a question for the facilitator. It appears on the room board, so a question asked here gets answered out loud without anyone raising a hand. Needs a token with scope progress:write.",
          "requires_auth": true,
          "annotations": {
            "title": "Ask the facilitator",
            "readOnlyHint": false,
            "destructiveHint": false,
            "idempotentHint": false,
            "openWorldHint": false
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "question": {
                "type": "string",
                "description": "The question, max 300 chars."
              }
            },
            "required": [
              "question"
            ],
            "additionalProperties": false
          }
        }
      ],
      "anonymous_tools": [
        "workshop_overview",
        "workshop_outline",
        "workshop_part",
        "workshop_slide",
        "workshop_build_step",
        "workshop_check_target",
        "workshop_board",
        "workshop_report_problem"
      ],
      "server_card": "https://agent-native-workshop.vercel.app/.well-known/mcp/server-card.json"
    }
  ]
}