Vocab Voyage

20 MCP tools + 17 widgets for SAT/ISEE/SSAT/GRE/GMAT/LSAT prep. Flashcards, quizzes & games. Hosted.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
94%
Vollständigkeit des Schemas
81%
Qualität der Benennung
95%
Risiko der Vergiftung
80%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (6)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'get_class_standing' description contains placeholder textin get_class_standing
  • LOWTool 'explain_word_in_context' description lacks action verbin explain_word_in_context
  • LOWTool 'award_game_xp' description lacks action verbin award_game_xp
  • LOWTool 'mark_word_known' description lacks action verbin mark_word_known
  • INFOTool description contains placeholder or incomplete textin get_class_standing

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~4,985Tokens (Tool-Definitionen)
~588 BTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.89% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "vocab-voyage": {
      "url": "https://gponcrussdahcdyrlhcr.supabase.co/functions/v1/mcp-server?ref=mcp_registry"
    }
  }
}

Remote-Endpunkte

https://gponcrussdahcdyrlhcr.supabase.co/functions/v1/mcp-server?ref=mcp_registrystreamable-http

Was es kann

Tool-Inventar

Tools (31)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢get_word_of_the_day(test_family)

Use this when the user asks for today's word, a daily vocabulary nudge, or a single-word warmup. Returns today's deterministic Word of the Day (definition, part of speech, example, synonyms/antonyms), optionally scoped to a test family (isee, ssat, sat, psat, gre, gmat, lsat, general). Do not use for arbitrary lookups — call get_definition instead.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "test_family": {
      "type": "string",
      "description": "Optional test family: isee, ssat, sat, psat, gre, gmat, lsat, general"
    }
  }
}
🟢get_definition(word)

Use this when the user asks what a specific word means, requests its definition, part of speech, synonyms/antonyms, or an example sentence. Returns curated dictionary data from the Vocab Voyage corpus. Do not use for sentence-level meaning disambiguation (call explain_word_in_context) or for daily word prompts (call get_word_of_the_day).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "word": {
      "type": "string",
      "description": "The word to define"
    }
  },
  "required": [
    "word"
  ]
}
🟢generate_quiz(test_family, level, count)

Use this when the user wants to practice, be quizzed, or test their knowledge across multiple words at once. Generates a 1–10 question multiple-choice quiz for a test family (isee, ssat, sat, psat, gre, gmat, lsat, general). Renders the interactive Vocab Voyage quiz widget on supporting hosts; per-answer taps persist mastery for signed-in users. Do not use for definition lookups — call get_definition instead. Do not use for spaced-repetition flashcards — call get_flashcards instead.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "test_family": {
      "type": "string"
    },
    "level": {
      "type": "string",
      "description": "Optional difficulty hint"
    },
    "count": {
      "type": "number",
      "description": "Number of questions (1–10), default 5"
    }
  },
  "required": [
    "test_family"
  ]
}
🟢get_course_word_list(course_slug, limit)

Get a sample of vocabulary words from a specific Vocab Voyage course. Use list_courses to discover slugs.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "course_slug": {
      "type": "string"
    },
    "limit": {
      "type": "number",
      "description": "1–50, default 20"
    }
  },
  "required": [
    "course_slug"
  ]
}
🟢list_courses

Lists all 13 Vocab Voyage courses with their slugs and descriptions.

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}
🟢explain_word_in_context(word, sentence)

Explain what a word means inside a specific sentence — useful when a word has multiple meanings.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "word": {
      "type": "string"
    },
    "sentence": {
      "type": "string",
      "description": "The sentence containing the word"
    }
  },
  "required": [
    "word",
    "sentence"
  ]
}
🟢study_plan_preview(test_family, target_date)

Use this when the user asks for a study plan, a multi-day prep schedule, or how to prepare for a test by date. Returns a 7-day plan (5 words/day) for a given test family. Renders the interactive Vocab Voyage study-plan widget on supporting hosts; tapping 'Start Day N' launches a flashcard session seeded with that day's words. Do not use for a single quiz session — call generate_quiz instead. Do not use for one-off lookups — call get_definition instead.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "test_family": {
      "type": "string"
    },
    "target_date": {
      "type": "string",
      "description": "Optional ISO date (YYYY-MM-DD)"
    }
  },
  "required": [
    "test_family"
  ]
}
🟢get_flashcards(test_family, count)

Use this when the user asks for flashcards, wants to drill words individually, or wants a tap-to-flip review session. Returns 1–12 cards for a test family. Renders the interactive Vocab Voyage flashcards widget on supporting hosts; per-card 'I knew it / I didn't' buttons persist mastery for signed-in users. Do not use for multiple-choice testing (call generate_quiz) or for a single word lookup (call get_definition).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "test_family": {
      "type": "string",
      "description": "isee, ssat, sat, psat, gre, gmat, lsat, general"
    },
    "count": {
      "type": "number",
      "description": "Number of cards (1–12), default 5"
    }
  }
}
🟢get_my_progress

Use this when the signed-in user asks about their own streak, XP, words mastered, recent activity, or 'how am I doing'. Auth-only personal dashboard. Renders the interactive Vocab Voyage progress widget on supporting hosts; falls back to markdown elsewhere. Anonymous callers receive a sign-in prompt. Do not use for global stats or other users' progress.

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}
⚪play_game(slug, test_family, count)

Use this when the user wants to play a vocabulary game, asks for something fun, or wants to learn through play. Launches one of 11 mini-games inside the host chat. Renders the matching ui://vocab-voyage/game/{slug} widget on supporting hosts; falls back to a deep link elsewhere. Per-question answers persist via record_word_result; round completion fires record_session_complete + award_game_xp so MCP play counts toward streaks, XP, and mastery for signed-in users. Supported slugs: word_match, spelling_bee, speed_round, synonym_showdown, word_scramble, fill_in_blank, context_clues, word_guess, picture_match, crossword, word_search. Do not use for a serious test-prep quiz — call generate_quiz instead.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Game slug: word_match | spelling_bee | speed_round | synonym_showdown | word_scramble | fill_in_blank | context_clues | word_guess | picture_match | crossword | word_search"
    },
    "test_family": {
      "type": "string",
      "description": "Optional: isee, ssat, sat, psat, gre, gmat, lsat, general"
    },
    "count": {
      "type": "number",
      "description": "Words in the round (4–12, default 8)"
    }
  },
  "required": [
    "slug"
  ]
}
⚪record_word_result(word, card_id, is_correct, quiz_attempt_id, selected_answer, ...)

Persist a single word answer (correct/incorrect) to the user's mastery progress. Mirrors the web app's word-mastery scaling so MCP study counts toward leaderboards and streaks. Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "word": {
      "type": "string",
      "description": "The word answered (preferred for human input)."
    },
    "card_id": {
      "type": "string",
      "description": "Card UUID (preferred when known from a prior tool result)."
    },
    "is_correct": {
      "type": "boolean"
    },
    "quiz_attempt_id": {
      "type": "string",
      "description": "Optional quiz_attempt UUID to record a per-question row."
    },
    "selected_answer": {
      "type": "string"
    },
    "time_taken_seconds": {
      "type": "number"
    },
    "question_type": {
      "type": "string",
      "description": "e.g. multiple_choice, fill_in_blank, flashcard."
    }
  },
  "required": [
    "is_correct"
  ]
}
⚪record_session_complete(deck_id, cards_studied, time_spent_seconds, session_type, session_title, ...)

Record a completed study session: writes study_sessions, awards study-time XP (+1/min, capped 30/day), and updates the daily streak. Use after a play_game / quiz / flashcard session ends. Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "deck_id": {
      "type": "string",
      "description": "Optional deck UUID; omit for ad-hoc MCP sessions."
    },
    "cards_studied": {
      "type": "number"
    },
    "time_spent_seconds": {
      "type": "number"
    },
    "session_type": {
      "type": "string",
      "description": "e.g. mcp_word_match, mcp_flashcard, mcp_quiz."
    },
    "session_title": {
      "type": "string"
    },
    "correct_count": {
      "type": "number"
    },
    "total_count": {
      "type": "number"
    }
  },
  "required": [
    "cards_studied",
    "time_spent_seconds"
  ]
}
⚪award_game_xp(xp, reason)

Award score-based XP from a game/activity (separate from study-time XP). Cascades to the leaderboard via DB trigger. Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "xp": {
      "type": "number",
      "description": "XP to award (>= 0)."
    },
    "reason": {
      "type": "string",
      "description": "Optional human label for analytics."
    }
  },
  "required": [
    "xp"
  ]
}
⚪mark_word_known(word, card_id)

Manually mark a word as mastered for the signed-in user (same as the flashcard 'I knew this' override). Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "word": {
      "type": "string"
    },
    "card_id": {
      "type": "string"
    }
  }
}
⚪mark_word_difficult(word, card_id)

Manually mark a word as still-learning for the signed-in user (resets mastery toward learning band). Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "word": {
      "type": "string"
    },
    "card_id": {
      "type": "string"
    }
  }
}
🟡update_adaptive_level(course_id, words_studied, correct_count, total_count)

Run the adaptive-mastery promotion logic for the signed-in user (delegates to the web app's update-adaptive-mastery function). Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "course_id": {
      "type": "string"
    },
    "words_studied": {
      "type": "number"
    },
    "correct_count": {
      "type": "number"
    },
    "total_count": {
      "type": "number"
    }
  },
  "required": [
    "words_studied",
    "correct_count",
    "total_count"
  ]
}
⚪file_support_ticket(category, summary, conversation_snippet)

File a real human-followup support ticket on behalf of the signed-in user. Use this when the user reports a bug, account lockout, complaint about a tutor, or anything Sparkle/the agent cannot resolve from data. The ticket is emailed to the support team and a confirmation is sent to the user with a 1-business-day SLA. Vocab Voyage is completely free, so there is nothing to bill — never raise pricing, plans or upgrades. Categories: billing (legacy, use account instead), bug, account, complaint, feedback, other. Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "billing",
        "bug",
        "account",
        "complaint",
        "feedback",
        "other"
      ],
      "description": "Issue category. Use 'bug' for crashes/data loss, 'account' for lockouts/access or any account/access question, 'complaint' for tutor/quality issues, 'feedback' for feature requests. 'billing' is legacy and unused — the product is free."
    },
    "summary": {
      "type": "string",
      "minLength": 4,
      "maxLength": 500,
      "description": "One-line description of the issue (what the user needs)."
    },
    "conversation_snippet": {
      "type": "string",
      "maxLength": 2000,
      "description": "Optional: last few turns of the conversation for context."
    }
  },
  "required": [
    "category",
    "summary"
  ]
}
🟢get_recent_mistakes(days, limit)

Use this when the signed-in user asks about words they've gotten wrong, missed words, words to review, or wants to revisit recent mistakes. Returns up to 25 words from the last N days (default 7) with miss-rate and last-seen timestamp, plus a link to the in-app Recent Mistakes page. SUMMARISE — never dump every row; tell the user the count, name 2–3 sample words, and recommend the page URL. Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "days": {
      "type": "number",
      "description": "Lookback window in days (1–90, default 7)"
    },
    "limit": {
      "type": "number",
      "description": "Max words to return (1–50, default 10)"
    }
  }
}
🟢get_session_detail(session_id, include_timeline)

Use this when the signed-in user asks 'what did I miss in [that session]', 'which words tripped me up', or 'what was my accuracy on session X'. Pass a session_id (study_sessions.id or adaptive_sessions.id, usually obtained from get_recent_session_results / a picker chip). Returns title, accuracy %, wrong_words[] (max 10), and a per-card timeline (truncated to first 20 events). Cite at least one wrong word and the accuracy in your reply.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "study_sessions.id or adaptive_sessions.id (UUID)"
    },
    "include_timeline": {
      "type": "boolean",
      "description": "Include per-card timeline (default true). Truncated to 20 events."
    }
  },
  "required": [
    "session_id"
  ]
}
🟢get_pending_invites

Use this when the signed-in user asks about pending parent invites, share codes, or whether their parent invite has been accepted yet. Returns each pending invite with hours_until_expiry. RULE: if any invite has hours_until_expiry < 24 (and not expired), proactively offer to resend it via the resend-parent-invite flow. If expired, offer to send a fresh invite. Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}
⚪nudge_child(child_user_id, reason, message)

Parent-only. Sends a 'check-in' push notification (and email fallback) to a linked child. Use when the parent says things like 'remind my kid to study', 'nudge my child', 'tell Sam to do their words today'. The server enforces a 24h cooldown per child — if rate-limited the response includes retry_after_hours. NEVER spoof a different parent — the calling user must already be linked to the child. Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "child_user_id": {
      "type": "string",
      "description": "user_id of the linked child to nudge"
    },
    "reason": {
      "type": "string",
      "description": "Optional short reason (≤200 chars), e.g. 'streak at risk'"
    },
    "message": {
      "type": "string",
      "description": "Optional personal message (≤280 chars) shown to the child"
    }
  },
  "required": [
    "child_user_id"
  ]
}
🟢resend_pending_invite(invite_id)

Resend a pending parent invite by id. Use after get_pending_invites surfaces an invite expiring in <24h, or when the user explicitly asks to resend. Re-emails the existing invite_token; no new code is generated. 60s per-invite cooldown. Caller must own the invite. Requires sign-in.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "invite_id": {
      "type": "string",
      "description": "The id field returned by get_pending_invites."
    }
  },
  "required": [
    "invite_id"
  ]
}
🟢get_class_standing

Use this when a signed-in student asks how they're doing in their tutor class, who's ahead, who their rival is, or who they should challenge. Auth-only. Returns weekly XP rank inside the user's tutor class plus a winnable rival suggestion (similar weekly XP). NEVER name the class leader unless the user is rank #1 — the response uses '(top student)' as a deliberate placeholder. Renders the interactive class-standing widget on supporting hosts; falls back to markdown elsewhere. Anonymous callers receive a sign-in prompt.

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}
🟢get_sparkle_guidance(persona)

Returns Vocab Voyage's lifecycle-aware guidance: the user's current phase (e.g. student.at_risk), a friendly greeting, 2–3 recommended tool calls, and an optional CTA. Renders the session-debrief widget on supporting hosts. Anonymous callers get visitor.* phase suggestions.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "persona": {
      "type": "string",
      "description": "Optional persona override: student | parent | tutor | explorer."
    }
  }
}
🟢set_persona(persona)

Bias subsequent Sparkle guidance toward a persona (student | parent | tutor | explorer). Session-scoped: the host should pass the chosen persona back to get_sparkle_guidance.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "persona": {
      "type": "string",
      "description": "student | parent | tutor | explorer"
    }
  },
  "required": [
    "persona"
  ]
}
🟢get_recommended_next_action(persona)

One-line 'do this next' hint derived from the user's current lifecycle phase. Useful when the agent wants a quick recommendation without rendering a full guidance card.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "persona": {
      "type": "string",
      "description": "Optional persona override."
    }
  }
}
🟢list_starter_prompts

Lists Vocab Voyage's MCP starter prompts (also exposed via the standard MCP prompts/list endpoint). Useful for hosts that don't yet support prompts/list.

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}
🟢get_session_trends(days)

Auth-only. Personal study trends over a window (default 14 days, max 90): session count, total minutes, accuracy trend (up/down/flat), and top-missed words. Use after a user asks 'how am I trending / am I improving / which words keep tripping me up'.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "days": {
      "type": "number",
      "description": "Window size in days (default 14, max 90)."
    }
  }
}
🟢get_class_session_trends(class_id, days)

Auth-only. Tutor-only. Aggregate class-level trends across the tutor's classes (default 14 days, max 30). Pass `class_id` to scope to one class; omit it to get a worst-first rollup across up to 25 classes plus 1–3 struggling students.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "class_id": {
      "type": "string",
      "description": "Optional class id to scope to one class."
    },
    "days": {
      "type": "number",
      "description": "Window size in days (default 14, max 30)."
    }
  }
}
🟢get_child_session_detail(child_user_id, session_id)

Auth-only. Parent-only. Detailed breakdown for a single child's study/quiz session — accuracy, missed words, duration. Defaults to the most recent session for the parent's first linked child if no `child_user_id` / `session_id` is supplied. Ownership-gated: returns an error for unlinked children.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "child_user_id": {
      "type": "string",
      "description": "Optional. Defaults to first linked child."
    },
    "session_id": {
      "type": "string",
      "description": "Optional. Defaults to the child's most recent session."
    }
  }
}
🟢get_study_plan_recommendation(horizon_days)

Auth-only. Returns a personalized N-day study plan (default 7, range 3–7) chosen from one of four focus modes (weak-topic-drill / streak-recovery / new-words / review-mastery) based on the user's recent trends. Inline only the first 3 days; full plan persists when the user clicks the Vocab Voyage start link.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "horizon_days": {
      "type": "number",
      "description": "Plan length in days (3–7, default 7)."
    }
  }
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet31 Tools
verifiziertVersion nicht aufgezeichnet31 Tools