LetterLab Word Solver
Word game solver & unscrambler
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": {
"word-solver": {
"url": "https://word-solver.zovo.one/mcp"
}
}
}Remote endpoints
https://word-solver.zovo.one/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢solve_anagram(letters, length, min_length, use_all_letters, starts_with, ...)
Use this when the user wants to unscramble letters or find all words that can be made from a set of letters (word unscrambler, anagram solver, letter-tile word finder), optionally with blank tiles (? or *) and filters for length, starts with, ends with, or contains. Returns dictionary matches grouped by length with counts (every match is counted; up to 25 words are listed per length) and tile points (standard letter values, no board bonuses). Does not check board placement or define words. Do not use for crossword patterns with known letter positions (use solve_word_pattern).
Input Schema
{
"type": "object",
"properties": {
"letters": {
"type": "string",
"maxLength": 60,
"description": "The letters to unscramble, e.g. RETAINS. Use ? or * for each blank (wildcard) tile, e.g. QUIZ?ES. Spaces and case are ignored; 2-20 tiles, at most 3 blanks."
},
"length": {
"description": "Only words of exactly this many letters, e.g. 5.",
"type": "integer",
"minimum": 2,
"maximum": 20
},
"min_length": {
"description": "Shortest word length to include, e.g. 3 (default 2).",
"type": "integer",
"minimum": 2,
"maximum": 20
},
"use_all_letters": {
"description": "true to list only words that use every tile (full anagrams), e.g. true for 'what words use all of LISTEN'.",
"type": "boolean"
},
"starts_with": {
"description": "Only words that start with these letters, e.g. RE.",
"type": "string",
"maxLength": 20
},
"ends_with": {
"description": "Only words that end with these letters, e.g. ING.",
"type": "string",
"maxLength": 20
},
"contains": {
"description": "Only words that contain this run of letters, e.g. QU.",
"type": "string",
"maxLength": 20
}
},
"required": [
"letters"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"mode": {
"type": "string"
},
"letters": {
"type": "string"
},
"blanks": {
"type": "number"
},
"total": {
"type": "number"
},
"common_total": {
"type": "number"
},
"filters": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"full_anagrams": {
"type": "array",
"items": {
"type": "string"
}
},
"top_scoring": {
"type": "array",
"items": {
"type": "object",
"properties": {
"word": {
"type": "string"
},
"points": {
"type": "number"
}
},
"required": [
"word",
"points"
],
"additionalProperties": false
}
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"length": {
"type": "number"
},
"count": {
"type": "number"
},
"words": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"length",
"count",
"words"
],
"additionalProperties": false
}
},
"shown": {
"type": "number"
},
"note": {
"type": "string"
}
},
"required": [
"mode",
"letters",
"blanks",
"total",
"common_total",
"filters",
"full_anagrams",
"top_scoring",
"groups",
"shown",
"note"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢solve_word_pattern(pattern, length, include_letters, exclude_letters)
Use this when the user needs words that fit a pattern of known and unknown letters, such as a crossword answer (C?T, _A_E, 7 letters ending in ING), with optional letters that must or must not appear. Counts every matching dictionary word and lists up to 120 of them, common words first. Does not solve clues by meaning or look up definitions. Do not use for unscrambling a set of letters (use solve_anagram).
Input Schema
{
"type": "object",
"properties": {
"pattern": {
"description": "Known letters with ? (or _ or .) for each unknown letter and * for any run of letters, e.g. C?T, _A_E, ??ANGE, or S*ING. Spaces are ignored.",
"type": "string",
"maxLength": 40
},
"length": {
"description": "Word length when there is no pattern, or to check it, e.g. 7 for a 7-letter crossword answer.",
"type": "integer",
"minimum": 2,
"maximum": 28
},
"include_letters": {
"description": "Letters that must appear somewhere (repeat a letter to require it twice), e.g. RS.",
"type": "string",
"maxLength": 20
},
"exclude_letters": {
"description": "Letters that must not appear anywhere, e.g. AEIO.",
"type": "string",
"maxLength": 26
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"mode": {
"type": "string"
},
"pattern": {
"type": "string"
},
"total": {
"type": "number"
},
"common_total": {
"type": "number"
},
"words": {
"type": "array",
"items": {
"type": "string"
}
},
"more": {
"type": "number"
},
"by_length": {
"type": "array",
"items": {
"type": "object",
"properties": {
"length": {
"type": "number"
},
"count": {
"type": "number"
}
},
"required": [
"length",
"count"
],
"additionalProperties": false
}
},
"filters": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"note": {
"type": "string"
}
},
"required": [
"mode",
"pattern",
"total",
"common_total",
"words",
"more",
"by_length",
"filters",
"note"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢solve_word_guess(guesses, word_length, hard_mode)
Use this when the user plays a 5-letter word guessing game with green/yellow/gray feedback and wants the remaining possible answers or a strong next guess (word game solver, guess helper). Takes previous guesses with their color feedback (G/Y/-), applies the standard repeated-letter rules, counts the words still possible and lists up to 60 of them, and ranks next guesses by expected information. Supports 4-8 letter variants and hard mode. Does not know today's answer and does not play the game. Do not use for unscrambling letters or crossword patterns.
Input Schema
{
"type": "object",
"properties": {
"guesses": {
"description": "Guesses made so far with their color feedback, in order, e.g. [{\"word\":\"CRANE\",\"feedback\":\"-Y--G\"}]. Leave empty for a suggested opening guess.",
"maxItems": 12,
"type": "array",
"items": {
"type": "object",
"properties": {
"word": {
"type": "string",
"maxLength": 12,
"description": "The guessed word, e.g. CRANE."
},
"feedback": {
"type": "string",
"maxLength": 60,
"description": "One mark per letter: G = green (right letter, right spot), Y = yellow (in the word, wrong spot), - = gray (not in the word), e.g. GY--G. Colored squares like 🟩🟨⬛ also work."
}
},
"required": [
"word",
"feedback"
]
}
},
"word_length": {
"description": "Letters in the hidden word, e.g. 5 (default: length of the guesses, else 5).",
"type": "integer",
"minimum": 4,
"maximum": 8
},
"hard_mode": {
"description": "true if every next guess must use all revealed clues (hard mode); then only words that could still be the answer are suggested.",
"type": "boolean"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"mode": {
"type": "string"
},
"word_length": {
"type": "number"
},
"guesses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"word": {
"type": "string"
},
"feedback": {
"type": "string"
}
},
"required": [
"word",
"feedback"
],
"additionalProperties": false
}
},
"solved": {
"type": "boolean"
},
"total": {
"type": "number"
},
"common_total": {
"type": "number"
},
"candidates": {
"type": "array",
"items": {
"type": "string"
}
},
"more": {
"type": "number"
},
"best_guesses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"word": {
"type": "string"
},
"bits": {
"type": "number"
},
"expected_left": {
"type": "number"
},
"worst_case": {
"type": "number"
},
"could_be_answer": {
"type": "boolean"
}
},
"required": [
"word",
"bits",
"expected_left",
"worst_case",
"could_be_answer"
],
"additionalProperties": false
}
},
"scored_against": {
"type": "number"
},
"guesses_scored": {
"type": "number"
},
"clues": {
"type": "object",
"properties": {
"known": {
"type": "string"
},
"present": {
"type": "string"
},
"absent": {
"type": "string"
}
},
"required": [
"known",
"present",
"absent"
],
"additionalProperties": false
},
"note": {
"type": "string"
}
},
"required": [
"mode",
"word_length",
"guesses",
"solved",
"total",
"common_total",
"candidates",
"more",
"best_guesses",
"scored_against",
"guesses_scored",
"clues",
"note"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Community
Evidence