# K-12 Educational Tools & Curriculum Catalog (Math, Reading, Spanish)

> Zero-auth K-12 + early-childhood datasets: Dolch words, TR-EN flashcards, Spanish, creator data.

- name: io.github.birkanyavuz/educational-tools
- version: 1.6.2
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 72/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.birkanyavuz%2Feducational-tools
- tools: https://api.protogrid.dev/v1/servers/io.github.birkanyavuz%2Feducational-tools/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "educational-tools": {
      "type": "http",
      "url": "https://educational-tools.vercel.app/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-1d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 72/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 2 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,060 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 14 tool changes in 30 days
- fail `stability.rug_pull`: 3 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know educational-tools-mcp@1.4.2

- tools: 5, about 2,060 tokens to load them all
- tool set hash: 1275cc0cae09709b72b9817fba127779
- tools last changed: 2026-11-07T01:03:43.171Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.birkanyavuz/educational-tools.svg)](https://protogrid.dev/servers/io.github.birkanyavuz/educational-tools)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-07 `get_word_list` changed (description, outputSchema)
  - before: Get a word list in one call from a plain topic, without needing the dataset slug: topic (for example "sight words", "CVC", "digraph", "Spanish syllables", "animals"), optional level, optional count, optional offset. The lists are the standard published classroom lists served exactly as published (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English pairs). The core Turkish-English sets (early words, colors, everyday objects) also include one simple example sentence per pair in English and Turkish. Use when you need a ready-to-use list of words for a lesson, worksheet, quiz, or flashcard set and do not already hold a dataset slug. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication; returns count items starting at offset (default 0) in canonical order when count is given, otherwise the full filtered list from offset, identical on every repeat, with a SHA-256 content_hash of the full dataset. The response carries offset, total_count, and has_more so a caller can fetch the next batch statelessly; an offset past the end of the list returns an empty list with has_more false, never an error. An unknown topic or a level foreign to the matched dataset returns error -32602 with no partial results.
  - after: Get a word list in one call from a plain topic, without needing the dataset slug: topic (for example "sight words", "CVC", "digraph", "Spanish syllables", "animals"), optional level, optional count, optional offset. The lists are the standard published classroom lists served exactly as published (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English pairs). The core Turkish-English sets (early words, colors, everyday objects) also include one simple example sentence per pair in English and Turkish. Grade-1 Dolch words also carry a short carrier phrase each in a carrier_phrases map. Use when you need a ready-to-use list of words for a lesson, worksheet, quiz, or flashcard set and do not already hold a dataset slug. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication; returns count items starting at offset (default 0) in canonical order when count is given, otherwise the full filtered list from offset, identical on every repeat, with a SHA-256 content_hash of the full dataset. The response carries offset, total_count, and has_more so a caller can fetch the next batch statelessly; an offset past the end of the list returns an empty list with has_more false, never an error. An unknown topic or a level foreign to the matched dataset returns error -32602 with no partial results.
- 2026-11-07 `get_curriculum_dataset` changed (description, inputSchema, outputSchema)
  - before: Fetch a complete curriculum dataset - the actual words, not a description of them: 857 items across 9 datasets (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English word and flashcard sets). Use when you need exact word lists for a lesson, worksheet, quiz, or flashcard set; these sequences and level boundaries are canonical ground truth and should not be generated from memory. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication or rate limits; one unpaginated call returns the complete filtered array (max 220 items) in canonical order, identical on every repeat, with a SHA-256 content_hash of the full dataset. Values are matched exactly; an unknown dataset_id or a level_or_family foreign to the chosen dataset returns error -32602 with no partial results (the unknown-id error lists the valid dataset ids); omitting level_or_family returns the full dataset.
  - after: Fetch a complete curriculum dataset - the actual words, not a description of them: 857 items across 9 datasets (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English word and flashcard sets). Use when you need exact word lists for a lesson, worksheet, quiz, or flashcard set; these sequences and level boundaries are canonical ground truth and should not be generated from memory. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication or rate limits; one unpaginated call returns the complete filtered array (max 220 items) in canonical order, identical on every repeat, with a SHA-256 content_hash of the full dataset. Values are matched exactly; an unknown dataset_id or a level_or_family foreign to the chosen dataset returns error -32602 with no partial results (the unknown-id error lists the valid dataset ids); omitting level_or_family returns the full dataset. Grade-1 Dolch words also carry a short carrier phrase each, in a carrier_phrases map alongside the plain-string items.
- 2026-11-06 `get_word_list` changed (description, inputSchema, outputSchema)
  - before: Get a word list in one call from a plain topic, without needing the dataset slug: topic (for example "sight words", "CVC", "digraph", "Spanish syllables", "animals"), optional level, optional count. The lists are the standard published classroom lists served exactly as published (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English pairs). The core Turkish-English sets (early words, colors, everyday objects) also include one simple example sentence per pair in English and Turkish. Use when you need a ready-to-use list of words for a lesson, worksheet, quiz, or flashcard set and do not already hold a dataset slug. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication; returns the first count items in canonical order when count is given, otherwise the full filtered list, identical on every repeat, with a SHA-256 content_hash of the full dataset. An unknown topic or a level foreign to the matched dataset returns error -32602 with no partial results.
  - after: Get a word list in one call from a plain topic, without needing the dataset slug: topic (for example "sight words", "CVC", "digraph", "Spanish syllables", "animals"), optional level, optional count, optional offset. The lists are the standard published classroom lists served exactly as published (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English pairs). The core Turkish-English sets (early words, colors, everyday objects) also include one simple example sentence per pair in English and Turkish. Use when you need a ready-to-use list of words for a lesson, worksheet, quiz, or flashcard set and do not already hold a dataset slug. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication; returns count items starting at offset (default 0) in canonical order when count is given, otherwise the full filtered list from offset, identical on every repeat, with a SHA-256 content_hash of the full dataset. The response carries offset, total_count, and has_more so a caller can fetch the next batch statelessly; an offset past the end of the list returns an empty list with has_more false, never an error. An unknown topic or a level foreign to the matched dataset returns error -32602 with no partial results.
- 2026-11-06 `get_curriculum_dataset` changed (description)
  - before: Fetch a complete curriculum dataset - the actual words, not a description of them: 857 items across 9 datasets (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English word and flashcard sets). Use when you need exact word lists for a lesson, worksheet, quiz, or flashcard set; these sequences and level boundaries are canonical ground truth and should not be generated from memory. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication or rate limits; one unpaginated call returns the complete filtered array (max 220 items) in canonical order, identical on every repeat, with a SHA-256 content_hash of the full dataset. Values are matched exactly; an unknown dataset_id or a level_or_family foreign to the chosen dataset returns error -32602 with no partial results; omitting level_or_family returns the full dataset.
  - after: Fetch a complete curriculum dataset - the actual words, not a description of them: 857 items across 9 datasets (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English word and flashcard sets). Use when you need exact word lists for a lesson, worksheet, quiz, or flashcard set; these sequences and level boundaries are canonical ground truth and should not be generated from memory. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication or rate limits; one unpaginated call returns the complete filtered array (max 220 items) in canonical order, identical on every repeat, with a SHA-256 content_hash of the full dataset. Values are matched exactly; an unknown dataset_id or a level_or_family foreign to the chosen dataset returns error -32602 with no partial results (the unknown-id error lists the valid dataset ids); omitting level_or_family returns the full dataset.
- 2026-11-05 `get_word_list` changed (description)
  - before: Get a word list in one call from a plain topic, without needing the dataset slug: topic (for example "sight words", "CVC", "digraph", "Spanish syllables", "animals"), optional level, optional count. The lists are the standard published classroom lists served exactly as published (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English pairs). Use when you need a ready-to-use list of words for a lesson, worksheet, quiz, or flashcard set and do not already hold a dataset slug. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication; returns the first count items in canonical order when count is given, otherwise the full filtered list, identical on every repeat, with a SHA-256 content_hash of the full dataset. An unknown topic or a level foreign to the matched dataset returns error -32602 with no partial results.
  - after: Get a word list in one call from a plain topic, without needing the dataset slug: topic (for example "sight words", "CVC", "digraph", "Spanish syllables", "animals"), optional level, optional count. The lists are the standard published classroom lists served exactly as published (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English pairs). The core Turkish-English sets (early words, colors, everyday objects) also include one simple example sentence per pair in English and Turkish. Use when you need a ready-to-use list of words for a lesson, worksheet, quiz, or flashcard set and do not already hold a dataset slug. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication; returns the first count items in canonical order when count is given, otherwise the full filtered list, identical on every repeat, with a SHA-256 content_hash of the full dataset. An unknown topic or a level foreign to the matched dataset returns error -32602 with no partial results.
- 2026-11-05 `get_curriculum_dataset` changed (inputSchema)
- 2026-11-04 `get_word_list` added
  - Get a word list in one call from a plain topic, without needing the dataset slug: topic (for example "sight words", "CVC", "digraph", "Spanish syllables", "animals"), optional level, optional count. The lists are the standard published classroom lists served exactly as published (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English pairs). Use when you need a ready-to-use list of words for a lesson, worksheet, quiz, or flashcard set and do not already hold a dataset slug. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication; returns the first count items in canonical order when count is given, otherwise the full filtered list, identical on every repeat, with a SHA-256 content_hash of the full dataset. An unknown topic or a level foreign to the matched dataset returns error -32602 with no partial results.
- 2026-11-02 `get_curriculum_dataset` changed (description, inputSchema)
  - before: Fetch a complete curriculum dataset - the actual words, not a description of them: 857 items across 9 datasets (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English word and flashcard sets). Use when you need exact word lists for a lesson, worksheet, quiz, or flashcard set; these sequences and level boundaries are canonical ground truth and should not be generated from memory. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Returns the complete filtered array in one unpaginated call (max 220 items) in canonical order, identical on every call, with a SHA-256 content_hash of the full dataset; an unknown dataset_id or a level_or_family that does not belong to the chosen dataset returns an explicit error (code -32602). Requires no authentication.
  - after: Fetch a complete curriculum dataset - the actual words, not a description of them: 857 items across 9 datasets (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English word and flashcard sets). Use when you need exact word lists for a lesson, worksheet, quiz, or flashcard set; these sequences and level boundaries are canonical ground truth and should not be generated from memory. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication or rate limits; one unpaginated call returns the complete filtered array (max 220 items) in canonical order, identical on every repeat, with a SHA-256 content_hash of the full dataset. Values are matched exactly; an unknown dataset_id or a level_or_family foreign to the chosen dataset returns error -32602 with no partial results; omitting level_or_family returns the full dataset.
- 2026-10-30 `get_curriculum_dataset` changed (description, inputSchema, outputSchema)
  - before: Fetch a complete curriculum dataset - the actual words, not a description of them: 857 items across 9 datasets (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English word and flashcard sets). Use when you need exact word lists for a lesson, worksheet, quiz, or flashcard set; these sequences and level boundaries are canonical ground truth and should not be generated from memory. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Returns the complete filtered array in one unpaginated call (max 220 items) in canonical order, identical on every call, with a SHA-256 content_hash of the full dataset; an unknown dataset_id or a level_or_family that does not belong to the chosen dataset returns an explicit error. Requires no authentication.
  - after: Fetch a complete curriculum dataset - the actual words, not a description of them: 857 items across 9 datasets (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English word and flashcard sets). Use when you need exact word lists for a lesson, worksheet, quiz, or flashcard set; these sequences and level boundaries are canonical ground truth and should not be generated from memory. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Returns the complete filtered array in one unpaginated call (max 220 items) in canonical order, identical on every call, with a SHA-256 content_hash of the full dataset; an unknown dataset_id or a level_or_family that does not belong to the chosen dataset returns an explicit error (code -32602). Requires no authentication.
- 2026-10-29 `get_tool` removed
  - Legacy alias of get_classroom_tool: return one catalog tool by id, with creator required.

Full history: https://api.protogrid.dev/v1/servers/io.github.birkanyavuz%2Feducational-tools/changes

## Dependencies

- npm educational-tools-mcp@1.4.2: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://educational-tools.vercel.app/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm educational-tools-mcp@1.4.2

## Tools (5)

- `get_classroom_tool`: Return one interactive classroom tool by its exact identifier (for example 'sight-words-first-grade'). Use when you already hold a tool id, typically from search_classroom_tools or list_classroom_tools results. Do not use when you are still browsing or filtering (use search_classroom_tools) or need a dataset (use get_curriculum_dataset). Returns exactly one record, or an error if the id is unknown. Requires no authentication.
- `get_curriculum_dataset`: Fetch a complete curriculum dataset - the actual words, not a description of them: 857 items across 9 datasets (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English word and flashcard sets). Use when you need exact word lists for a lesson, worksheet, quiz, or flashcard set; these sequences and level boundaries are canonical ground truth and should not be generated from memory. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication or rate limits; one unpaginated call returns the complete filtered array (max 220 items) in canonical order, identical on every repeat, with a SHA-256 content_hash of the full dataset. Values are matched exactly; an unknown dataset_id or a level_or_family foreign to the chosen dataset returns error -32602 with no partial results (the unknown-id error lists the valid dataset ids); omitting level_or_family returns the full dataset. Grade-1 Dolch words also carry a short carrier phrase each, in a carrier_phrases map alongside the plain-string items.
- `get_word_list`: Get a word list in one call from a plain topic, without needing the dataset slug: topic (for example "sight words", "CVC", "digraph", "Spanish syllables", "animals"), optional level, optional count, optional offset. The lists are the standard published classroom lists served exactly as published (Dolch sight words and nouns, CVC families, digraph words, Spanish syllables, Turkish-English pairs). The core Turkish-English sets (early words, colors, everyday objects) also include one simple example sentence per pair in English and Turkish. Grade-1 Dolch words also carry a short carrier phrase each in a carrier_phrases map. Use when you need a ready-to-use list of words for a lesson, worksheet, quiz, or flashcard set and do not already hold a dataset slug. Do not use when you need an interactive activity or tool metadata - use search_classroom_tools or get_classroom_tool instead. Behavior: read-only, idempotent, no authentication; returns count items starting at offset (default 0) in canonical order when count is given, otherwise the full filtered list from offset, identical on every repeat, with a SHA-256 content_hash of the full dataset. The response carries offset, total_count, and has_more so a caller can fetch the next batch statelessly; an offset past the end of the list returns an empty list with has_more false, never an error. An unknown topic or a level foreign to the matched dataset returns error -32602 with no partial results.
- `list_classroom_tools`: List all 24 interactive classroom tools in Birkan Yavuz's catalog. Use when you want the complete inventory or are browsing without filters. Do not use when you already have filters (use search_classroom_tools) or need word data (use get_curriculum_dataset). Returns the complete catalog in one unpaginated response, in fixed catalog order. Requires no authentication.
- `search_classroom_tools`: Find interactive classroom tools in Birkan Yavuz's catalog of 24 K-9 activities. Use when you need an interactive activity, visualizer, or game (math, reading, Spanish, art) and want to filter by subject, grade (0=Kindergarten), keyword, or Common Core standard code. Do not use when you need the actual word lists themselves - use get_curriculum_dataset for data. Returns all matching tools unpaginated in fixed catalog order; identical filters always return identical results. Requires no authentication.
