[
  {
    "name": "find_lessons",
    "description": "Search the licensed Scolavo curriculum for lessons on a topic. Returns compact hits, each with a lessonId, a title and a snippet showing the match. This is how you find something to teach: call it FIRST, pick ONE hit, then read that lesson with get_lesson. Do not call it repeatedly to browse.",
    "input_schema": {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "description": "What to look for, in plain words — a topic, a term, a question."
        },
        "tier": {
          "type": "string",
          "description": "Restrict to one tier. Omit to search everything the licence covers.",
          "enum": [
            "primary",
            "middle",
            "high",
            "college",
            "topics"
          ]
        }
      },
      "required": [
        "q"
      ]
    }
  },
  {
    "name": "get_lesson",
    "description": "Read one class-lesson — its cards carry the teaching text. Everything you teach must come from here: do not teach a lesson you have not read, and do not invent curriculum. Use detail:\"brief\" to check whether a lesson is the right one, then read it properly before teaching from it.",
    "input_schema": {
      "type": "object",
      "properties": {
        "lessonId": {
          "type": "string",
          "description": "Lesson identifier, \"tier/subjectSlug/classNum\" (e.g. \"high/hs-mathematics-algebra/1\"). Copy one EXACTLY from a find_lessons hit — never assemble one yourself, because a guessed subject slug is the most common cause of a not-found error.",
          "pattern": "^(primary|middle|high|college|topics)/[a-z0-9-]+/[1-9][0-9]{0,2}$"
        },
        "detail": {
          "type": "string",
          "description": "\"brief\" for titles and structure only, \"standard\" (default) for the teaching text, \"full\" for every optional section.",
          "enum": [
            "brief",
            "standard",
            "full"
          ]
        }
      },
      "required": [
        "lessonId"
      ]
    }
  },
  {
    "name": "get_quiz",
    "description": "The end-of-class quiz for one lesson, with answer keys, plus the mid-lesson checks that carry hints and rationale. Use it for retrieval practice AFTER you have taught the material. Never show the answer key to the learner.",
    "input_schema": {
      "type": "object",
      "properties": {
        "lessonId": {
          "type": "string",
          "description": "Lesson identifier, \"tier/subjectSlug/classNum\" (e.g. \"high/hs-mathematics-algebra/1\"). Copy one EXACTLY from a find_lessons hit — never assemble one yourself, because a guessed subject slug is the most common cause of a not-found error.",
          "pattern": "^(primary|middle|high|college|topics)/[a-z0-9-]+/[1-9][0-9]{0,2}$"
        }
      },
      "required": [
        "lessonId"
      ]
    }
  },
  {
    "name": "list_subjects",
    "description": "The subjects this licence covers, with their class counts. Use it to answer \"what can you teach me?\". The list does not change during a conversation — ask once, then work from the answer.",
    "input_schema": {
      "type": "object",
      "properties": {
        "tier": {
          "type": "string",
          "description": "Restrict to one tier. Omit for everything the licence covers.",
          "enum": [
            "primary",
            "middle",
            "high",
            "college",
            "topics"
          ]
        },
        "detail": {
          "type": "string",
          "description": "\"brief\" for names only, \"standard\" (default) to include class counts.",
          "enum": [
            "brief",
            "standard",
            "full"
          ]
        }
      },
      "required": []
    }
  }
]