Word searches, crosswords, sudoku and Unicode text styles in 6 languages, accents kept.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Lays out a crossword from words with clues. Returns two matrices of the same size: puzzle (the game position: "-" is a blank cell, a word's number is on its first cell, "0" marks the other cells where a letter goes, and "a/d" such as "3/4" appears when an across word and a down word start in the same cell) and solution (the same matrix with the correct letters, one grapheme per cell). placements lists every word with its number, clue, direction (across/down) and start cell; unplaced lists words that did not fit. Offer more words than you need: the engine keeps the best layout it finds. Native letters (Ñ, Ç, ẞ…) stay one cell each. Free, no usage limit. The same seed gives the same crossword.
Largest height; the result is cropped to what it uses.
Words with their clues.
Largest width. Default: rows.
Marker of letter cells that do not start a word in puzzle. Default "0".
Repeatable crossword.
Marker of blank cells. Default "-".
Layouts to try (default 30); more attempts, denser crossword.
Strip accents (ñ becomes N).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Lays out a crossword from words with clues. Returns two matrices of the same size: puzzle (the game position: "-" is a blank cell, a word's number is on its first cell, "0" marks the other cells where a letter goes, and "a/d" such as "3/4" appears when an across word and a down word start in the same cell) and solution (the same matrix with the correct letters, one grapheme per cell). placements lists every word with its number, clue, direction (across/down) and start cell; unplaced lists words that did not fit. Offer more words than you need: the engine keeps the best layout it finds. Native letters (Ñ, Ç, ẞ…) stay one cell each. Free, no usage limit. The same seed gives the same crossword.
| Argument | Type | Description |
|---|---|---|
| cols | integer | Largest width. Default: rows. |
| open | string | Marker of letter cells that do not start a word in puzzle. Default "0". |
| rows* | integer | Largest height; the result is cropped to what it uses. |
| seed | integer | Repeatable crossword. |
| block | string | Marker of blank cells. Default "-". |
| entries* | array | Words with their clues. |
| attempts | integer | Layouts to try (default 30); more attempts, denser crossword. |
| classicMode | boolean | Strip accents (ñ becomes N). |
{
"type": "object",
"required": [
"entries",
"rows"
],
"properties": {
"cols": {
"type": "integer",
"maximum": 30,
"minimum": 5,
"description": "Largest width. Default: rows."
},
"open": {
"type": "string",
"maxLength": 4,
"description": "Marker of letter cells that do not start a word in puzzle. Default \"0\"."
},
"rows": {
"type": "integer",
"maximum": 30,
"minimum": 5,
"description": "Largest height; the result is cropped to what it uses."
},
"seed": {
"type": "integer",
"minimum": 0,
"description": "Repeatable crossword."
},
"block": {
"type": "string",
"maxLength": 4,
"description": "Marker of blank cells. Default \"-\"."
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"word"
],
"properties": {
"clue": {
"type": "string",
"maxLength": 200
},
"word": {
"type": "string",
"maxLength": 30,
"minLength": 2
}
},
"additionalProperties": false
},
"maxItems": 60,
"minItems": 2,
"description": "Words with their clues."
},
"attempts": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Layouts to try (default 30); more attempts, denser crossword."
},
"classicMode": {
"type": "boolean",
"description": "Strip accents (ñ becomes N)."
}
},
"additionalProperties": false
}Completes a word search: takes the grid from generate_word_search (empty cells are "-") and fills them with random letters in the chosen language, with accents on or off. Letters follow how common they are in that language. Pass the puzzle's words so the filler never creates an extra copy of one.
| Argument | Type | Description |
|---|---|---|
| grid* | array | The grid from generate_word_search: rows of one-letter strings, "-" for empty cells. |
| lang | string | Language of the letters. Default es. |
| seed | integer | Repeatable filler. Omit for a different filler every time. |
| empty | string | What marks an empty cell. Default "-". |
| words | array | The hidden words, so the filler cannot create an extra copy of one. |
| accents | boolean | true (default): use the language's accented/native letters (Ñ, Ç, Ã, Ä, ẞ…). false: plain A-Z only. |
{
"type": "object",
"required": [
"grid"
],
"properties": {
"grid": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string",
"maxLength": 4,
"minLength": 1
},
"maxItems": 30,
"minItems": 1
},
"maxItems": 30,
"minItems": 1,
"description": "The grid from generate_word_search: rows of one-letter strings, \"-\" for empty cells."
},
"lang": {
"enum": [
"es",
"en",
"pt",
"fr",
"de",
"it"
],
"type": "string",
"description": "Language of the letters. Default es."
},
"seed": {
"type": "integer",
"minimum": 0,
"description": "Repeatable filler. Omit for a different filler every time."
},
"empty": {
"type": "string",
"maxLength": 4,
"description": "What marks an empty cell. Default \"-\"."
},
"words": {
"type": "array",
"items": {
"type": "string",
"maxLength": 30,
"minLength": 1
},
"maxItems": 60,
"description": "The hidden words, so the filler cannot create an extra copy of one."
},
"accents": {
"type": "boolean",
"description": "true (default): use the language's accented/native letters (Ñ, Ç, Ã, Ä, ẞ…). false: plain A-Z only."
}
},
"additionalProperties": false
}Create a word-search puzzle (sopa de letras) from a list of words. Puzzles up to 10x10 with at most 10 words are free and unlimited; bigger ones use the free puzzles each client gets. Keeps native letters (Ñ, Ç, Ã, Ä, ẞ, È…) as one cell each. Returns the grid, where every word is hidden, and any words that did not fit. Empty cells are marked "-": call fill_word_search with the grid to complete it with random letters. The same seed always gives the same puzzle.
| Argument | Type | Description |
|---|---|---|
| cols* | integer | Grid width. May differ from rows for a rectangular grid. |
| lang | string | Language of the words. Default es. |
| rows* | integer | Grid height. |
| seed | integer | Repeatable puzzles: same input and seed, same grid. |
| words* | array | Words to hide, in their normal spelling (accents kept). |
| position | string | horizontal = left to right only, vertical = top to bottom only, mixed = all 8 directions including diagonals. |
| clustering | number | 0 keeps words apart, 1 makes them cross. Default 0.5. |
| difficulty | integer |
Languages Lettras supports, with the native letters each one adds to its grid alphabet.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}The Unicode text styles stylize_text offers, with the id to pass, an English name and a category (bold-italic, sans, script, gothic, mono, enclosed, decoration, other).
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Solves a sudoku grid (0 = empty cell; sizes 4, 6, 9, 12, 16) and says whether the solution is the only one. Free, no usage limit.
| Argument | Type | Description |
|---|---|---|
| puzzle* | array | Rows of numbers, 0 for empty cells. |
{
"type": "object",
"required": [
"puzzle"
],
"properties": {
"puzzle": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer",
"maximum": 16,
"minimum": 0
},
"maxItems": 16,
"minItems": 4
},
"maxItems": 16,
"minItems": 4,
"description": "Rows of numbers, 0 for empty cells."
}
},
"additionalProperties": false
}Turns text into Unicode styles for social media bios and posts: bold, italic, script, fraktur, monospace, circled, squared, fullwidth, small caps, strikethrough, underline and more (22 styles). Accents are kept: an accented letter becomes its styled base letter plus the combining accent (ñ, ç, ü, ß work). Not every style can draw every character: letters such as ß, Æ, Œ, Ø or non-Latin scripts stay plain, and accented letters rely on a combining mark that some fonts draw badly. Those characters are listed in notNative for each style, and parts with missing: true mark them, so you can warn the user or show an empty box. Set classic to strip accents first. Pass one style id, several, or none for all styles (see list_styles). Runs locally and has no usage limit.
| Argument | Type | Description |
|---|---|---|
| text* | string | The text to style, in its normal spelling (accents kept). |
| style | any | Which style(s) to use. Omit for all 22. Ids come from list_styles. |
| classic | boolean | Strip accents first (ñ becomes n), for places that render combining accents badly. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The text to style, in its normal spelling (accents kept)."
},
"style": {
"oneOf": [
{
"type": "string",
"description": "One style id, for example bold."
},
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 22,
"minItems": 1,
"description": "Several style ids."
}
],
"description": "Which style(s) to use. Omit for all 22. Ids come from list_styles."
},
"classic": {
"type": "boolean",
"description": "Strip accents first (ñ becomes n), for places that render combining accents badly."
}
},
"additionalProperties": false
}Creates a sudoku with exactly one solution. Returns puzzle (0 = empty cell) and solution. Sizes 4, 6, 9 (default), 12 and 16; difficulty 1 easy (most clues) to 4 expert. Free, no usage limit. The same seed gives the same sudoku.
| Argument | Type | Description |
|---|---|---|
| seed | integer | Repeatable sudoku. |
| size | integer | Side of the grid. Default 9. |
| difficulty | integer | 1 easy to 4 expert. Default 2. |
{
"type": "object",
"properties": {
"seed": {
"type": "integer",
"minimum": 0,
"description": "Repeatable sudoku."
},
"size": {
"enum": [
4,
6,
9,
12,
16
],
"type": "integer",
"description": "Side of the grid. Default 9."
},
"difficulty": {
"type": "integer",
"maximum": 4,
"minimum": 1,
"description": "1 easy to 4 expert. Default 2."
}
},
"additionalProperties": false
}| Used when position is not set: 1 easy (right, down) to 4 expert (all 8 directions). |
| classicMode | boolean | Strip accents in the grid (ñ becomes N). |
{
"type": "object",
"required": [
"words",
"rows",
"cols"
],
"properties": {
"cols": {
"type": "integer",
"maximum": 30,
"minimum": 6,
"description": "Grid width. May differ from rows for a rectangular grid."
},
"lang": {
"enum": [
"es",
"en",
"pt",
"fr",
"de",
"it"
],
"type": "string",
"description": "Language of the words. Default es."
},
"rows": {
"type": "integer",
"maximum": 30,
"minimum": 6,
"description": "Grid height."
},
"seed": {
"type": "integer",
"minimum": 0,
"description": "Repeatable puzzles: same input and seed, same grid."
},
"words": {
"type": "array",
"items": {
"type": "string",
"maxLength": 30,
"minLength": 1
},
"maxItems": 60,
"minItems": 1,
"description": "Words to hide, in their normal spelling (accents kept)."
},
"position": {
"enum": [
"horizontal",
"vertical",
"mixed"
],
"type": "string",
"description": "horizontal = left to right only, vertical = top to bottom only, mixed = all 8 directions including diagonals."
},
"clustering": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "0 keeps words apart, 1 makes them cross. Default 0.5."
},
"difficulty": {
"type": "integer",
"maximum": 4,
"minimum": 1,
"description": "Used when position is not set: 1 easy (right, down) to 4 expert (all 8 directions)."
},
"classicMode": {
"type": "boolean",
"description": "Strip accents in the grid (ñ becomes N)."
}
},
"additionalProperties": false
}