{
  "schema_version": "2025-06-18",
  "name": "k2kanji.com",
  "description": "Read-only MCP server for K2: curated study decks (1,006 Kyouiku kanji, HSK Chinese, Hangul, Spanish, French, classical and medical Latin, Rubik's cube algorithm sets) plus the K2 spaced-repetition engine itself, which can be run over your own items.",
  "servers": [
    {
      "name": "k2kanji",
      "transport": "streamable-http",
      "url": "https://k2kanji.com/api/mcp",
      "authentication": "none",
      "install": "claude mcp add --transport http k2kanji https://k2kanji.com/api/mcp"
    }
  ],
  "tools": [
    { "name": "list_decks", "description": "The deck catalog: eight curated decks with entry counts, categories, and field meanings.", "readOnly": true },
    { "name": "search_deck", "description": "Search one deck by term, reading, meaning, or category, with difficulty/grade filters and paging.", "readOnly": true },
    { "name": "get_entry", "description": "One entry in full by deck and exact term, including deck-specific extras.", "readOnly": true },
    { "name": "get_cube_algorithms", "description": "Rubik's cube last-layer algorithm sets (OLL, PLL, two-look subsets, ZBLL) with alternates.", "readOnly": true },
    { "name": "explain_k2_algorithm", "description": "The K2 thermal / rejection-sampling model: update rule, expansion, live constants, porting notes.", "readOnly": true },
    { "name": "simulate_k2_session", "description": "Run the real K2 engine over your own items: p-trajectories, mastery, expansions, next-selection distribution.", "readOnly": true },
    { "name": "get_site_info", "description": "The full capability map, the apps, the scope boundary, and every machine surface. Call first.", "readOnly": true }
  ],
  "prompts": [
    { "name": "study_plan", "description": "Turn a deck plus a time budget into a plan that follows K2 pool mechanics." },
    { "name": "explain_term", "description": "Deep-dive one term from deck data: components, readings, derivatives, neighbours." },
    { "name": "drill_me", "description": "Live drill where the agent is the quiz UI and K2 is the scheduler." },
    { "name": "port_k2", "description": "Port the K2 engine into your own project, invariants intact." }
  ],
  "resources": [
    { "uri": "k2kanji://decks", "description": "The deck catalog as JSON." },
    { "uri": "k2kanji://k2-algorithm", "description": "The full algorithm specification as JSON, constants included." },
    { "uri": "https://k2kanji.com/llms.txt", "description": "Curated overview of the apps, the algorithm, and this server." }
  ],
  "rate_limit": {
    "messages_per_minute": 60,
    "scope": "per IP, best effort (instance-local; resets on cold start)",
    "max_batch_messages": 20,
    "on_exceed": "HTTP 429, JSON-RPC error -32000",
    "on_batch_exceed": "HTTP 400, JSON-RPC error -32600"
  },
  "related": {
    "llms_txt": "https://k2kanji.com/llms.txt",
    "llms_full_txt": "https://k2kanji.com/llms-full.txt",
    "agents_json": "https://k2kanji.com/agents.json",
    "agent_card": "https://k2kanji.com/.well-known/agent-card.json",
    "for_agents": "https://k2kanji.com/for-agents",
    "website": "https://k2kanji.com"
  },
  "terms": {
    "scope": "Reference data and algorithm math only. Learner progress is private and per-user; AI generation is metered per account. Neither is reachable through this server.",
    "provenance": "Kanji data generated from KanjiAPI.dev, with meanings ordered by KANJIDIC2 (EDRDG, CC BY-SA 4.0); cube algorithms from JPerm and SpeedCubeDB; French pronunciation audio from Wikimedia Commons. Preserve those credits when redistributing."
  },
  "discovery_help": {
    "note": "Call get_site_info for the full capability map — it lists every tool, prompt, and resource even if your client only surfaces some of them. Prompts and resources live behind the prompts/list and resources/list JSON-RPC methods.",
    "claude_code": "claude mcp add --transport http k2kanji https://k2kanji.com/api/mcp",
    "claude_web": "Settings -> Connectors -> Add custom connector -> https://k2kanji.com/api/mcp"
  }
}
