Overview
Perfect for educators, game developers, and puzzle enthusiasts. Includes solution images and HTML preview for easy printing.
Live Test Word Search Generator Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as WordSearchGeneratorSkill. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "WordSearchGeneratorSkill",
"arguments": {
"words": "[\"HELLO\", \"WORLD\", \"PUZZLE\"]"
}
}You do not name the tool yourself; the model picks it. Asking about ["HELLO", "WORLD", "PUZZLE"] in the terms this skill covers is enough for it to reach for WordSearchGeneratorSkill on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every skill in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
wordsRequired | array | Array of words to hide in the puzzle (3-20 words) |
sizeOptional | integer | Grid size default 15 · range 10–30 |
difficultyOptional | string | Difficulty level (affects word directions)easymediumharddefault medium |
imageOptionalPremium | boolean | Set to true to generate a downloadable puzzle image |
solutionImageOptionalPremium | boolean | Set to true to generate a downloadable solution image |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"grid": [
[
"P",
"C",
"R",
"J",
"W",
"R",
"D",
"K",
"G",
"D",
"V",
"F",
"J",
"B",
"Q"
],
[
"J",
"F",
"O",
"J",
"E",
"B",
"X",
"I",
"A",
"A",
"S",
"S",
"H",
"X",
"G"
],
[
"L",
"N",
"N",
"Q",
"L",
"X",
"G",
"E",
"M",
"X",
"F",
"Q",
"X",
"V",
"B"
],
[
"S",
"J",
"Y",
"L",
"X",
"Z",
"T",
"X",
"E",
"A",
"K",
"M",
"X",
"C",
"Y"
],
[
"S",
"G",
"F",
"O",
"E",
"J",
"F",
"X",
"M",
"W",
"V",
"E",
"I",
"M",
"X"
],
[
"W",
"D",
"V",
"Y",
"D",
"T",
"T",
"N",
"F",
"U",
"K",
"L",
"P",
"C",
"T"
],
[
"E",
"R",
"H",
"M",
"B",
"N",
"T",
"B",
"M",
"A",
"D",
"Z",
"X",
"A",
"D"
],
[
"D",
"O",
"G",
"S",
"Y",
"E",
"B",
"E",
"T",
"H",
"I",
"Z",
"K",
"D",
"P"
],
[
"F",
"W",
"S",
"E",
"A",
"R",
"C",
"H",
"R",
"G",
"X",
"U",
"B",
"Y",
"D"
],
[
"H",
"C",
"G",
"E",
"N",
"B",
"K",
"E",
"L",
"S",
"E",
"P",
"O",
"E",
"N"
],
[
"P",
"A",
"D",
"W",
"D",
"D",
"K",
"A",
"T",
"E",
"A",
"A",
"G",
"R",
"I"
],
[
"C",
"T",
"C",
"E",
"Q",
"W",
"S",
"Q",
"O",
"W",
"X",
"R",
"O",
"E",
"F"
],
[
"P",
"E",
"S",
"I",
"F",
"L",
"G",
"E",
"N",
"V",
"X",
"I",
"V",
"K",
"I"
],
[
"T",
"G",
"G",
"Z",
"X",
"A",
"D",
"A",
"F",
"S",
"U",
"D",
"N",
"S",
"P"
],
[
"Z",
"J",
"T",
"L",
"N",
"E",
"D",
"D",
"I",
"H",
"Z",
"O",
"A",
"A",
"A"
]
],
"words": [
{
"word": "LETTERS",
"start": {
"row": 3,
"col": 3
},
"direction": "diagonal-down-right"
},
{
"word": "PUZZLE",
"start": {
"row": 9,
"col": 11
},
"direction": "up"
},
{
"word": "SEARCH",
"start": {
"row": 8,
"col": 2
},
"direction": "right"
},
{
"word": "HIDDEN",
"start": {
"row": 14,
"col": 9
},
"direction": "left"
},
{
"word": "WORD",
"start": {
"row": 8,
"col": 1
},
"direction": "up"
},
{
"word": "GAME",
"start": {
"row": 0,
"col": 8
},
"direction": "down"
},
{
"word": "FIND",
"start": {
"row": 11,
"col": 14
},
"direction": "up"
}
],
"wordCount": 7,
"size": 15,
"difficulty": "medium",
"html": "<html><head><title>Word Search Puzzle</title><style>body {font-family: Arial, sans-serif; padding: 20px;}.container {display: flex; gap: 40px;}table {border-collapse: collapse;}td {width: 30px; height: 30px; text-align: center; font-size: 18px; font-weight: bold; border: 1px solid #ccc;}.word-list {font-size: 16px;}.word-list h3 {margin-bottom: 10px;}.word-list ul {list-style: none; padding: 0;}.word-list li {margin: 5px 0;}</style></head><body><div class='container'><div><table><tr><td>P</td><td>C</td><td>R</td><td>J</td><td>W</td><td>R</td><td>D</td><td>K</td><td>G</td><td>D</td><td>V</td><td>F</td><td>J</td><td>B</td><td>Q</td></tr><tr><td>J</td><td>F</td><td>O</td><td>J</td><td>E</td><td>B</td><td>X</td><td>I</td><td>A</td><td>A</td><td>S</td><td>S</td><td>H</td><td>X</td><td>G</td></tr><tr><td>L</td><td>N</td><td>N</td><td>Q</td><td>L</td><td>X</td><td>G</td><td>E</td><td>M</td><td>X</td><td>F</td><td>Q</td><td>X</td><td>V</td><td>B</td></tr><tr><td>S</td><td>J</td><td>Y</td><td>L</td><td>X</td><td>Z</td><td>T</td><td>X</td><td>E</td><td>A</td><td>K</td><td>M</td><td>X</td><td>C</td><td>Y</td></tr><tr><td>S</td><td>G</td><td>F</td><td>O</td><td>E</td><td>J</td><td>F</td><td>X</td><td>M</td><td>W</td><td>V</td><td>E</td><td>I</td><td>M</td><td>X</td></tr><tr><td>W</td><td>D</td><td>V</td><td>Y</td><td>D</td><td>T</td><td>T</td><td>N</td><td>F</td><td>U</td><td>K</td><td>L</td><td>P</td><td>C</td><td>T</td></tr><tr><td>E</td><td>R</td><td>H</td><td>M</td><td>B</td><td>N</td><td>T</td><td>B</td><td>M</td><td>A</td><td>D</td><td>Z</td><td>X</td><td>A</td><td>D</td></tr><tr><td>D</td><td>O</td><td>G</td><td>S</td><td>Y</td><td>E</td><td>B</td><td>E</td><td>T</td><td>H</td><td>I</td><td>Z</td><td>K</td><td>D</td><td>P</td></tr><tr><td>F</td><td>W</td><td>S</td><td>E</td><td>A</td><td>R</td><td>C</td><td>H</td><td>R</td><td>G</td><td>X</td><td>U</td><td>B</td><td>Y</td><td>D</td></tr><tr><td>H</td><td>C</td><td>G</td><td>E</td><td>N</td><td>B</td><td>K</td><td>E</td><td>L</td><td>S</td><td>E</td><td>P</td><td>O</td><td>E</td><td>N</td></tr><tr><td>P</td><td>A</td><td>D</td><td>W</td><td>D</td><td>D</td><td>K</td><td>A</td><td>T</td><td>E</td><td>A</td><td>A</td><td>G</td><td>R</td><td>I</td></tr><tr><td>C</td><td>T</td><td>C</td><td>E</td><td>Q</td><td>W</td><td>S</td><td>Q</td><td>O</td><td>W</td><td>X</td><td>R</td><td>O</td><td>E</td><td>F</td></tr><tr><td>P</td><td>E</td><td>S</td><td>I</td><td>F</td><td>L</td><td>G</td><td>E</td><td>N</td><td>V</td><td>X</td><td>I</td><td>V</td><td>K</td><td>I</td></tr><tr><td>T</td><td>G</td><td>G</td><td>Z</td><td>X</td><td>A</td><td>D</td><td>A</td><td>F</td><td>S</td><td>U</td><td>D</td><td>N</td><td>S</td><td>P</td></tr><tr><td>Z</td><td>J</td><td>T</td><td>L</td><td>N</td><td>E</td><td>D</td><td>D</td><td>I</td><td>H</td><td>Z</td><td>O</td><td>A</td><td>A</td><td>A</td></tr></table></div><div class='word-list'><h3>Find these words:</h3><ul><li>LETTERS</li><li>PUZZLE</li><li>SEARCH</li><li>HIDDEN</li><li>WORD</li><li>GAME</li><li>FIND</li></ul></div></div></body></html>",
"image": {
"imageName": "0ce84c70-c791-40f9-adfa-2ad3823667f7_puzzle.png",
"format": ".png",
"downloadURL": "https://storage.googleapis.com/apiverve/APIData/wordsearch/0ce84c70-c791-40f9-adfa-2ad3823667f7_puzzle.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1766010772&Signature=QOHSnr40T1DxKtie7xCSTwnqNwfgaur%2BUZDwPf8xhgiaynJPDQjvrVJwZBlkuSFXQFyd212HYyui%2BMUjHIVhMvL8TaGUucqOvXhsaXXl9p5vzQhGsGP2crtP8U94NpXonrL0GjnmFmFFaQOJELbcCqMLfTl5XjArtNsMTp0%2Bj3b8DeL6ljMZe09sRgL5i7cslA%2BLljRRX20Dbd2%2BuqR1r2aGY6pMZEqr7djDDF3uLNnyPq8M2wKPX243FASrcl3URyXZMkVduPYvkwIxvGkcOoeE7GrZo%2FnpOElZgbwevDCklXJ3fS6Ij2ffkLlYSrDNM11VSYUrU1fzgfHX2w%2F5ew%3D%3D",
"expires": 1766010772936
},
"solutionImage": {
"imageName": "b4dc1d71-86e4-4331-af3b-01295373b772_solution.png",
"format": ".png",
"downloadURL": "https://storage.googleapis.com/apiverve/APIData/wordsearch/b4dc1d71-86e4-4331-af3b-01295373b772_solution.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1766010773&Signature=j8897QcmWY1g4fKyE4JUEL4RZ6OCXJCCRmB04DFCpjFOW4vUDfgc62cwJDIBZsCcnbFzTfShMekQJFvrie8MHR59VtbYD58XXI7RPRbxjjEdfZ6exdiRgN%2BXZ%2B%2Ff5L7DksaYC%2Bf6FL80REs4Vb7C%2B0PBlRa%2FBpqo%2FcHXL4An5dIsUKyzXLNrDE6AvYXIyiKNYRcsfTN8g7ekXxqM4uI5XYYF3Kl4KlORrVs395S421Bk1j9Qpet04lI7vTe7dwQIDimuOshA56LfhjN5OK%2FGCxyC0IAJ4cTZcN52ggkeEQSX%2BOgX8Sy%2B6%2BsM7YmkBOVeB%2FKlO7CIX1rKcO5oFOzN8Q%3D%3D",
"expires": 1766010773937
}
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
grid | array | list of lists | 2D array of puzzle grid characters arranged in rows |
wordsPremium | array[7] | Array of hidden words with positions and directions | |
words.0.wordPremium | string | LETTERS | The hidden word text in uppercase |
words.0.startPremium | object | {…} | Starting position of word in grid |
words.0.start.rowPremium | number | 3 | Row number where word starts (0-indexed) |
words.0.start.colPremium | number | 3 | Column number where word starts (0-indexed) |
words.0.directionPremium | string | diagonal-down-right | Direction word is oriented (up, down, left, right, diagonal) |
wordCount | number | 7 | Total number of hidden words in puzzle |
size | number | 15 | Grid size dimension (rows x columns) |
difficulty | string | medium | Puzzle difficulty level (easy, medium, hard) |
htmlPremium | string | <html><head><title>Word Search Puzzle</title><style>body {font-family: Arial, sans-serif; padding: 20px;}.container {display: flex; gap: 40px;}table {border-collapse: collapse;}td {width: 30px; height: 30px; text-align: center; font-size: 18px; font-weight: bold; border: 1px solid #ccc;}.word-list {font-size: 16px;}.word-list h3 {margin-bottom: 10px;}.word-list ul {list-style: none; padding: 0;}.word-list li {margin: 5px 0;}</style></head><body><div class='container'><div><table><tr><td>P</td><td>C</td><td>R</td><td>J</td><td>W</td><td>R</td><td>D</td><td>K</td><td>G</td><td>D</td><td>V</td><td>F</td><td>J</td><td>B</td><td>Q</td></tr><tr><td>J</td><td>F</td><td>O</td><td>J</td><td>E</td><td>B</td><td>X</td><td>I</td><td>A</td><td>A</td><td>S</td><td>S</td><td>H</td><td>X</td><td>G</td></tr><tr><td>L</td><td>N</td><td>N</td><td>Q</td><td>L</td><td>X</td><td>G</td><td>E</td><td>M</td><td>X</td><td>F</td><td>Q</td><td>X</td><td>V</td><td>B</td></tr><tr><td>S</td><td>J</td><td>Y</td><td>L</td><td>X</td><td>Z</td><td>T</td><td>X</td><td>E</td><td>A</td><td>K</td><td>M</td><td>X</td><td>C</td><td>Y</td></tr><tr><td>S</td><td>G</td><td>F</td><td>O</td><td>E</td><td>J</td><td>F</td><td>X</td><td>M</td><td>W</td><td>V</td><td>E</td><td>I</td><td>M</td><td>X</td></tr><tr><td>W</td><td>D</td><td>V</td><td>Y</td><td>D</td><td>T</td><td>T</td><td>N</td><td>F</td><td>U</td><td>K</td><td>L</td><td>P</td><td>C</td><td>T</td></tr><tr><td>E</td><td>R</td><td>H</td><td>M</td><td>B</td><td>N</td><td>T</td><td>B</td><td>M</td><td>A</td><td>D</td><td>Z</td><td>X</td><td>A</td><td>D</td></tr><tr><td>D</td><td>O</td><td>G</td><td>S</td><td>Y</td><td>E</td><td>B</td><td>E</td><td>T</td><td>H</td><td>I</td><td>Z</td><td>K</td><td>D</td><td>P</td></tr><tr><td>F</td><td>W</td><td>S</td><td>E</td><td>A</td><td>R</td><td>C</td><td>H</td><td>R</td><td>G</td><td>X</td><td>U</td><td>B</td><td>Y</td><td>D</td></tr><tr><td>H</td><td>C</td><td>G</td><td>E</td><td>N</td><td>B</td><td>K</td><td>E</td><td>L</td><td>S</td><td>E</td><td>P</td><td>O</td><td>E</td><td>N</td></tr><tr><td>P</td><td>A</td><td>D</td><td>W</td><td>D</td><td>D</td><td>K</td><td>A</td><td>T</td><td>E</td><td>A</td><td>A</td><td>G</td><td>R</td><td>I</td></tr><tr><td>C</td><td>T</td><td>C</td><td>E</td><td>Q</td><td>W</td><td>S</td><td>Q</td><td>O</td><td>W</td><td>X</td><td>R</td><td>O</td><td>E</td><td>F</td></tr><tr><td>P</td><td>E</td><td>S</td><td>I</td><td>F</td><td>L</td><td>G</td><td>E</td><td>N</td><td>V</td><td>X</td><td>I</td><td>V</td><td>K</td><td>I</td></tr><tr><td>T</td><td>G</td><td>G</td><td>Z</td><td>X</td><td>A</td><td>D</td><td>A</td><td>F</td><td>S</td><td>U</td><td>D</td><td>N</td><td>S</td><td>P</td></tr><tr><td>Z</td><td>J</td><td>T</td><td>L</td><td>N</td><td>E</td><td>D</td><td>D</td><td>I</td><td>H</td><td>Z</td><td>O</td><td>A</td><td>A</td><td>A</td></tr></table></div><div class='word-list'><h3>Find these words:</h3><ul><li>LETTERS</li><li>PUZZLE</li><li>SEARCH</li><li>HIDDEN</li><li>WORD</li><li>GAME</li><li>FIND</li></ul></div></div></body></html> | Complete HTML rendering of puzzle with styling |
imagePremium | object | {…} | Puzzle image object with URL and expiration |
image.imageNamePremium | string | 0ce84c70-c791-40f9-adfa-2ad3823667f7_puzzle.png | Unique filename of puzzle image PNG |
image.formatPremium | string | .png | Image file format (typically .png) |
image.downloadURLPremium | string | https://storage.googleapis.com/apiverve/APIData/wordsearch/0ce84c70-c791-40f9-adfa-2ad3823667f7_puzzle.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1766010772&Signature=QOHSnr40T1DxKtie7xCSTwnqNwfgaur%2BUZDwPf8xhgiaynJPDQjvrVJwZBlkuSFXQFyd212HYyui%2BMUjHIVhMvL8TaGUucqOvXhsaXXl9p5vzQhGsGP2crtP8U94NpXonrL0GjnmFmFFaQOJELbcCqMLfTl5XjArtNsMTp0%2Bj3b8DeL6ljMZe09sRgL5i7cslA%2BLljRRX20Dbd2%2BuqR1r2aGY6pMZEqr7djDDF3uLNnyPq8M2wKPX243FASrcl3URyXZMkVduPYvkwIxvGkcOoeE7GrZo%2FnpOElZgbwevDCklXJ3fS6Ij2ffkLlYSrDNM11VSYUrU1fzgfHX2w%2F5ew%3D%3D | Signed URL for downloading puzzle image |
image.expiresPremium | number | 1766010772936 | Expiration timestamp for download URL |
solutionImagePremium | object | {…} | Solution image object with highlighted word locations |
solutionImage.imageNamePremium | string | b4dc1d71-86e4-4331-af3b-01295373b772_solution.png | Unique filename of solution image PNG |
solutionImage.formatPremium | string | .png | Solution image file format (typically .png) |
solutionImage.downloadURLPremium | string | https://storage.googleapis.com/apiverve/APIData/wordsearch/b4dc1d71-86e4-4331-af3b-01295373b772_solution.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1766010773&Signature=j8897QcmWY1g4fKyE4JUEL4RZ6OCXJCCRmB04DFCpjFOW4vUDfgc62cwJDIBZsCcnbFzTfShMekQJFvrie8MHR59VtbYD58XXI7RPRbxjjEdfZ6exdiRgN%2BXZ%2B%2Ff5L7DksaYC%2Bf6FL80REs4Vb7C%2B0PBlRa%2FBpqo%2FcHXL4An5dIsUKyzXLNrDE6AvYXIyiKNYRcsfTN8g7ekXxqM4uI5XYYF3Kl4KlORrVs395S421Bk1j9Qpet04lI7vTe7dwQIDimuOshA56LfhjN5OK%2FGCxyC0IAJ4cTZcN52ggkeEQSX%2BOgX8Sy%2B6%2BsM7YmkBOVeB%2FKlO7CIX1rKcO5oFOzN8Q%3D%3D | Signed URL for downloading solution image |
solutionImage.expiresPremium | number | 1766010773937 | Expiration timestamp for solution download URL |
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This skill is not part of VerveKit. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 2 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Educational Content
- Create word search puzzles for classroom vocabulary and spelling practice
- Printable Activities
- Generate puzzles for activity books, worksheets, and entertainment
- Game Development
- Add word search puzzles to mobile apps and games
- Event Entertainment
- Create themed puzzles for parties, events, and team building
Other ways to use Word Search Generator Skill
Set up Word Search Generator Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Related
More in Games: