Professor Otter
Free printable kids activities: word searches, mazes, color by number, sudoku and more.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"activities": {
"url": "https://professorotter.com/mcp"
}
}
}Remote endpoints
https://professorotter.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢list_activities
List the Professor Otter printable activities (word searches, color by number, coloring pages, mazes, dot-to-dot, drawing practice, criss-cross, word scrambles, spot the difference, sudoku, games, secret codes, bingo, nonograms) with how many puzzles each has, its levels and its topics. Start here to see what the site offers.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"activities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"available",
"coming_soon"
]
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"levels": {
"type": "array",
"items": {
"type": "string",
"enum": [
"easy",
"challenge",
"expert"
]
}
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": [
"string",
"null"
]
},
"markdownUrl": {
"type": [
"string",
"null"
]
}
},
"required": [
"slug",
"name",
"description",
"status",
"count",
"levels",
"topics",
"url",
"markdownUrl"
],
"additionalProperties": false
}
},
"levels": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"easy",
"challenge",
"expert"
]
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"additionalProperties": false
}
}
},
"required": [
"activities",
"levels"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢search_activities(query, activity, level)
Search every printable activity by title, topic or a word in the puzzle, like the site's search box. Each query word must start a word in the puzzle ("ant" finds Ants, not Elephant). Narrow by activity or level if you like. Each hit includes the printable PDF and the play URL, plus slugs for get_activity and show_word_search. Puzzle PDFs include an answer key. Game and drawing practice PDFs do not.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Topic, title or word, for example \"farm\" or \"space\"."
},
"activity": {
"description": "Only this activity.",
"type": "string",
"enum": [
"word-searches",
"mazes",
"color-by-number",
"coloring-pages",
"dot-to-dot",
"drawing-practice",
"criss-cross",
"word-scrambles",
"spot-the-difference",
"sudoku",
"games",
"seek-and-count",
"color-by-math",
"secret-codes",
"crosswords",
"nonograms",
"bingo",
"logic-puzzles"
]
},
"level": {
"description": "Only this level.",
"type": "string",
"enum": [
"easy",
"challenge",
"expert"
]
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"hits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"activity": {
"type": "string",
"enum": [
"word-searches",
"mazes",
"color-by-number",
"coloring-pages",
"dot-to-dot",
"drawing-practice",
"criss-cross",
"word-scrambles",
"spot-the-difference",
"sudoku",
"games",
"seek-and-count",
"color-by-math",
"secret-codes",
"crosswords",
"nonograms",
"bingo",
"logic-puzzles"
]
},
"slug": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"easy",
"challenge",
"expert"
]
},
"topic": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
},
"pdfUrl": {
"type": "string"
}
},
"required": [
"title",
"activity",
"slug",
"level",
"topic",
"url",
"pdfUrl"
],
"additionalProperties": false
}
},
"moreUrl": {
"type": "string"
}
},
"required": [
"query",
"total",
"hits",
"moreUrl"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_activity(activity, slug)
Get one printable puzzle as Markdown (description, level, word list or color key) with its play URL and its PDF URL. A puzzle PDF has an answer key. A game or drawing practice PDF does not. Use an activity and slug from search_activities.
Input Schema
{
"type": "object",
"properties": {
"activity": {
"type": "string",
"enum": [
"word-searches",
"mazes",
"color-by-number",
"coloring-pages",
"dot-to-dot",
"drawing-practice",
"criss-cross",
"word-scrambles",
"spot-the-difference",
"sudoku",
"games",
"seek-and-count",
"color-by-math",
"secret-codes",
"crosswords",
"nonograms",
"bingo",
"logic-puzzles"
]
},
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Puzzle slug, for example \"farm-friends\"."
}
},
"required": [
"activity",
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"activity": {
"type": "string",
"enum": [
"word-searches",
"mazes",
"color-by-number",
"coloring-pages",
"dot-to-dot",
"drawing-practice",
"criss-cross",
"word-scrambles",
"spot-the-difference",
"sudoku",
"games",
"seek-and-count",
"color-by-math",
"secret-codes",
"crosswords",
"nonograms",
"bingo",
"logic-puzzles"
]
},
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"easy",
"challenge",
"expert"
]
},
"playUrl": {
"type": "string"
},
"pdfUrl": {
"type": "string"
},
"markdownUrl": {
"type": "string"
}
},
"required": [
"activity",
"slug",
"title",
"level",
"playUrl",
"pdfUrl",
"markdownUrl"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢show_word_search(slug, seed)
Show a word search a child can play in the chat: drag across the letters to find each word, and found words cross off the list. Also returns the grid as text and a link to print the PDF. Pass a seed for a new grid; a slug and seed always give the same grid here, on the site and in the PDF.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Word search slug, for example \"farm-friends\"."
},
"seed": {
"description": "Grid layout. Leave out for the site's default grid.",
"type": "integer",
"minimum": 0,
"maximum": 2147483647
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"easy",
"challenge",
"expert"
]
},
"levelName": {
"type": "string"
},
"size": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"directions": {
"type": "string"
},
"seed": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"words": {
"type": "array",
"items": {
"type": "string"
}
},
"grid": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"playUrl": {
"type": "string"
},
"pdfUrl": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"title",
"level",
"levelName",
"size",
"directions",
"seed",
"words",
"grid",
"playUrl",
"pdfUrl",
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢make_word_search(words, title, level, seed)
Turn a list of 4 to 20 words, like a child's spelling list, into a word search they can play in the chat, with a link to print it as a PDF with an answer key. Paste the list as one string or pass the words as an array. A word longer than the level's grid makes the grid grow to fit it. If the list breaks a rule (too few words, a word over 20 letters, a word inside another), the error says what to fix.
Input Schema
{
"type": "object",
"properties": {
"words": {
"anyOf": [
{
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
},
{
"type": "string",
"maxLength": 4000
}
],
"description": "The spelling words, 4 to 20, letters only: an array, or one string with the words separated by commas or new lines."
},
"title": {
"description": "Title printed on the sheet, up to 80 characters. Defaults to \"Custom Word Search\".",
"type": "string",
"maxLength": 80
},
"level": {
"description": "easy: 12×12, words run right, down or diagonally down. challenge: 15×15, every direction. expert: 18×18, every direction. A longer word grows the grid to fit, up to 20×20. Defaults to easy.",
"type": "string",
"enum": [
"easy",
"challenge",
"expert"
]
},
"seed": {
"description": "Grid layout. The same words and seed give the same grid. Leave out for a new layout.",
"type": "integer",
"minimum": 0,
"maximum": 2147483647
}
},
"required": [
"words"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"easy",
"challenge",
"expert"
]
},
"levelName": {
"type": "string"
},
"size": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"directions": {
"type": "string"
},
"seed": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"words": {
"type": "array",
"items": {
"type": "string"
}
},
"grid": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"playUrl": {
"type": "string"
},
"pdfUrl": {
"type": "string"
}
},
"required": [
"title",
"level",
"levelName",
"size",
"directions",
"seed",
"words",
"grid",
"playUrl",
"pdfUrl"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢list_products
List the Professor Otter shop: printable PDF books, topic packs and the Everything Bundle, with prices and availability. Checkout is a browser page on the shop. Send the person there; never collect payment details or try to buy for them.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"shopUrl": {
"type": "string"
},
"checkout": {
"type": "string"
},
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"digital",
"print"
]
},
"activity": {
"type": "string"
},
"level": {
"anyOf": [
{
"type": "string",
"enum": [
"easy",
"challenge",
"expert"
]
},
{
"type": "null"
}
]
},
"price": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"formatted": {
"type": "string"
}
},
"required": [
"currency",
"cents",
"formatted"
],
"additionalProperties": false
},
"availability": {
"type": "string",
"enum": [
"in_stock",
"coming_soon"
]
},
"url": {
"type": "string"
}
},
"required": [
"id",
"name",
"description",
"kind",
"activity",
"level",
"price",
"availability",
"url"
],
"additionalProperties": false
}
}
},
"required": [
"shopUrl",
"checkout",
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence