{
  "$comment": "Static manifest of the WebMCP agent tools registered by samiolearning.com pages (src/lib/webmcp.ts + src/lib/webmcpDashboard.ts). `tools` are the read-only public-page tools every page registers; nothing there submits forms or starts trials. `dashboardTools` are registered ONLY while a teacher is signed in on a schools dashboard page (/schools/dashboard/*) and run with that teacher's session — they carry the same names and input schemas as the Tier B tools of the remote MCP server (https://mcp.samiolearning.com/mcp), which reach the same capabilities through OAuth 2.1 instead of a browser session. Documentation: https://samiolearning.com/developers#webmcp and https://samiolearning.com/developers#mcp-teacher. Curriculum tools (no login) live on the remote MCP server, not in the page — see related.remoteMcp. dashboardTools is a copy of src/data/dashboardToolSchemas.ts; keep both in sync.",
  "site": "https://samiolearning.com",
  "version": "2026-09-21",
  "status": "experimental",
  "registration": "navigator.modelContext (registerTool / provideContext), feature-detected. Public tools: registered at browser idle after the app mounts on every page. Dashboard tools: registered when the schools dashboard mounts with a signed-in teacher and unregistered on logout / leaving the dashboard.",
  "tools": [
    {
      "name": "samio_get_pricing_for_country",
      "description": "Samio for Schools price for a country. Returns the equity-pricing tier (World Bank income group), discount, and the monthly USD price of the Homeschool, Classroom and School plans. Read-only; does not start a trial.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code, e.g. NL, MX, IN"
          }
        },
        "required": [
          "country"
        ]
      },
      "backing": "GET https://api.samiolearning.com/v1/schools/pricing/resolve?country=XX (public), with a static World Bank tier table as fallback"
    },
    {
      "name": "samio_find_page",
      "description": "Find the samiolearning.com page that answers a question (pricing, LMS integration, privacy, Askimo, reading or math guides, legal documents). Returns up to 5 URLs with titles and descriptions.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "language": {
            "type": "string",
            "default": "en"
          },
          "audience": {
            "type": "string",
            "enum": [
              "parents",
              "schools",
              "developers"
            ]
          }
        },
        "required": [
          "query"
        ]
      },
      "backing": "in-page index of public routes"
    },
    {
      "name": "samio_get_product_facts",
      "description": "Canonical facts about Samio Learning, Samio for Schools or Askimo from /facts.json, plus entity disambiguation for the names \"Samio\" and \"Askimo\".",
      "inputSchema": {
        "type": "object",
        "properties": {
          "product": {
            "type": "string",
            "enum": [
              "samio",
              "schools",
              "askimo"
            ]
          }
        }
      },
      "backing": "GET https://samiolearning.com/facts.json"
    },
    {
      "name": "samio_get_app_links",
      "description": "Official App Store, Google Play and web links for the Askimo or Samio Learning apps, with price and age range.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "app": {
            "type": "string",
            "enum": [
              "askimo",
              "samio"
            ],
            "default": "askimo"
          }
        }
      },
      "backing": "static"
    }
  ],
  "dashboardTools": [
    {
      "name": "list_my_classes",
      "description": "Your classes on Samio for Schools: id, name, grade and student count. Never student names. Call this first to get a classId for the other tools.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "list_material_types",
      "description": "The teaching-material types Samio can generate (mind map, presentation, didactic material, study cards) with a short description of each.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "generate_teaching_material",
      "description": "Start generating a teaching material (mind map, presentation, didactic material or study cards) on a topic for one of your classes. Asynchronous: returns the materialId with status \"generating\"; poll get_teaching_material until \"ready\" (typically 1–5 minutes).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "materialType": {
            "type": "string",
            "enum": [
              "mindmap",
              "presentation",
              "didactic_material",
              "study_cards"
            ],
            "description": "Material type (see list_material_types)."
          },
          "topic": {
            "type": "string",
            "minLength": 2,
            "maxLength": 200,
            "description": "Topic of the material, e.g. \"fractions\", \"the water cycle\"."
          },
          "classId": {
            "type": "string",
            "minLength": 1,
            "description": "Class to create it for (from list_my_classes). Give classId OR subject + gradeLevel."
          },
          "subject": {
            "type": "string",
            "enum": [
              "math",
              "reading",
              "grammar",
              "clock",
              "science",
              "physics",
              "history",
              "computing"
            ],
            "description": "Subject."
          },
          "gradeLevel": {
            "type": "integer",
            "minimum": 1,
            "maximum": 7,
            "description": "Samio stage 1–7 when no classId is given."
          },
          "language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Language of the material (defaults to the school's)."
          },
          "unitId": {
            "type": "string",
            "minLength": 1,
            "description": "Curriculum unit to ground on (from search_curriculum_standards)."
          },
          "standardId": {
            "type": "string",
            "minLength": 1,
            "description": "Curriculum standard the unit belongs to."
          },
          "options": {
            "type": "object",
            "additionalProperties": true,
            "description": "Type-specific options as in the dashboard: slideCount + theme (presentation), branches (mindmap), cardCount (study_cards), materialKind + includeAnswerKey (didactic_material), includeImages."
          }
        },
        "required": [
          "materialType",
          "topic"
        ],
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "get_teaching_material",
      "description": "Status and content of one teaching material. Poll this after generate_teaching_material until status is \"ready\" or \"failed\".",
      "inputSchema": {
        "type": "object",
        "properties": {
          "materialId": {
            "type": "string",
            "minLength": 1,
            "description": "materialId from generate_teaching_material or list_teaching_materials."
          }
        },
        "required": [
          "materialId"
        ],
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "list_teaching_materials",
      "description": "Your teaching materials, newest first (max 50), optionally for one class.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "classId": {
            "type": "string",
            "minLength": 1,
            "description": "Only materials of this class."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Max results (default 20)."
          }
        },
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "create_topic_plan",
      "description": "Start a curriculum-grounded topic plan for a class and subject on the school's active academic calendar. mode \"plan\" creates the week-by-week plan; mode \"auto\" also generates lessons and challenges for every week. Asynchronous: returns the planId with status \"generating\"; poll get_topic_plan (typically 1–5 minutes).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "classId": {
            "type": "string",
            "minLength": 1,
            "description": "Class (from list_my_classes)."
          },
          "subject": {
            "type": "string",
            "enum": [
              "math",
              "reading",
              "grammar",
              "clock",
              "science",
              "physics",
              "history",
              "computing"
            ],
            "description": "Subject."
          },
          "mode": {
            "type": "string",
            "enum": [
              "plan",
              "auto"
            ],
            "default": "plan",
            "description": "\"plan\" = topic plan only; \"auto\" = plan + lessons + challenges per week."
          },
          "weeks": {
            "type": "integer",
            "minimum": 1,
            "maximum": 52,
            "description": "Requested number of weeks. The school's academic calendar decides the real span; this is advisory."
          },
          "classProfile": {
            "type": "object",
            "properties": {
              "studentCount": {
                "type": "integer",
                "minimum": 1,
                "maximum": 60
              },
              "energyLevel": {
                "type": "string",
                "enum": [
                  "calm",
                  "balanced",
                  "energetic"
                ]
              },
              "traits": {
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 60
                },
                "maxItems": 10
              },
              "notes": {
                "type": "string",
                "maxLength": 500
              }
            },
            "additionalProperties": false,
            "description": "Optional group profile that steers activity formats."
          },
          "language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Language of the generated content (defaults to the school's)."
          }
        },
        "required": [
          "classId",
          "subject"
        ],
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "get_topic_plan",
      "description": "Status, progress and week list of one topic plan. Poll this after create_topic_plan.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "planId": {
            "type": "string",
            "minLength": 1,
            "description": "planId from create_topic_plan or list_topic_plans."
          }
        },
        "required": [
          "planId"
        ],
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "get_topic_plan_week",
      "description": "One week of a topic plan in full: topics, objectives, the lesson (if generated) and the materials and challenges linked to it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "planId": {
            "type": "string",
            "minLength": 1
          },
          "weekNumber": {
            "type": "integer",
            "minimum": 1,
            "maximum": 60,
            "description": "1-based week number."
          }
        },
        "required": [
          "planId",
          "weekNumber"
        ],
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "list_topic_plans",
      "description": "Your topic plans, optionally for one class.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "classId": {
            "type": "string",
            "minLength": 1,
            "description": "Only plans of this class."
          }
        },
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "generate_challenge",
      "description": "Create a quiz challenge with generated exercises for a class and subject. Saved as a draft the teacher reviews in the dashboard unless publish is true.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "classId": {
            "type": "string",
            "minLength": 1,
            "description": "Class (from list_my_classes)."
          },
          "subject": {
            "type": "string",
            "enum": [
              "math",
              "reading",
              "grammar",
              "clock",
              "science",
              "physics",
              "history",
              "computing"
            ],
            "description": "Subject."
          },
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 5,
            "description": "Number of exercises (1–10)."
          },
          "exerciseTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "description": "Optional exercise types of the subject, e.g. [\"fractions\", \"word_problems\"]."
          },
          "difficulty": {
            "type": "string",
            "description": "easy, medium or hard (default: medium)."
          },
          "unitId": {
            "type": "string",
            "minLength": 1,
            "description": "Curriculum unit to target (from search_curriculum_standards)."
          },
          "topic": {
            "type": "string",
            "maxLength": 200,
            "description": "Free-text topic to steer the exercises."
          },
          "publish": {
            "type": "boolean",
            "default": false,
            "description": "Publish to students right away. Default false: the teacher publishes from the dashboard."
          }
        },
        "required": [
          "classId",
          "subject"
        ],
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "search_knowledge_facts",
      "description": "Samio's verified, sourced knowledge facts on a topic — the same facts that ground generated lessons and materials (max 20).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "enum": [
              "math",
              "reading",
              "grammar",
              "clock",
              "science",
              "physics",
              "history",
              "computing"
            ]
          },
          "topic": {
            "type": "string",
            "minLength": 2,
            "maxLength": 120,
            "description": "Topic, e.g. \"photosynthesis\"."
          },
          "language": {
            "type": "string",
            "minLength": 2,
            "maxLength": 5,
            "description": "Language of the facts (defaults to the school's)."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Max facts (default 10)."
          }
        },
        "required": [
          "subject",
          "topic"
        ],
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    },
    {
      "name": "get_class_curriculum_progress",
      "description": "Class-level curriculum coverage for a subject: which official curriculum units the class has mastered, is working on or has not started. A class rollup only — never per-student results.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "classId": {
            "type": "string",
            "minLength": 1,
            "description": "Class (from list_my_classes)."
          },
          "subject": {
            "type": "string",
            "enum": [
              "math",
              "reading",
              "grammar",
              "clock",
              "science",
              "physics",
              "history",
              "computing"
            ]
          }
        },
        "required": [
          "classId",
          "subject"
        ],
        "additionalProperties": false
      },
      "requires": "a signed-in teacher on schools dashboard pages (/schools/dashboard/*); executes with that teacher's dashboard session",
      "backing": "the same dashboard endpoints the pages use (see /developers#webmcp)",
      "mcpEquivalent": "https://mcp.samiolearning.com/mcp (Tier B, OAuth 2.1)"
    }
  ],
  "related": {
    "llms": "https://samiolearning.com/llms.txt",
    "facts": "https://samiolearning.com/facts.json",
    "developers": "https://samiolearning.com/developers",
    "remoteMcp": "https://mcp.samiolearning.com/mcp",
    "remoteMcpDocs": "https://samiolearning.com/developers#mcp",
    "agentGatewayOpenApi": "https://api.samiolearning.com/v1/agent/openapi.json",
    "remoteMcpTeacherDocs": "https://samiolearning.com/developers#mcp-teacher",
    "oauthAuthorizationServer": "https://api.samiolearning.com/oauth/.well-known/oauth-authorization-server",
    "oauthProtectedResource": "https://mcp.samiolearning.com/.well-known/oauth-protected-resource"
  }
}
