Professor Otter

Free printable kids activities: word searches, mazes, color by number, sudoku and more.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
74%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,656Tokens (tool definitions)
~3.8 KBTypical response size
Significant attention impact (2.08% of 128k context)

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-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools