Overview
A deck of cards API for card games and simulations. Card Deck Shuffler works by generating standard 52-card decks and applying shuffling algorithms. Supports up to 10 decks, optional jokers, and returns the complete shuffled deck with card details, plus the bottom card and a sample hand on paid plans.
Live Test Card Deck Shuffler Skill Skill →
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as CardDeckShufflerSkill. 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": "CardDeckShufflerSkill",
"arguments": {}
}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 |
|---|---|---|
decksOptional | integer | Number of decks to shuffle default 1 · range 1–10 |
jokersOptional | boolean | Include jokers in the deck |
methodOptional | string | Shuffling methodfisher-yatesriffledefault fisher-yates |
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": {
"total_cards": 52,
"decks_used": 1,
"includes_jokers": false,
"shuffle_method": "fisher-yates",
"cards": [
{
"rank": "8",
"suit": "Spades",
"card": "8 of Spades",
"short": "8♠"
},
{
"rank": "2",
"suit": "Spades",
"card": "2 of Spades",
"short": "2♠"
},
{
"rank": "Queen",
"suit": "Hearts",
"card": "Queen of Hearts",
"short": "Q♥"
},
{
"rank": "7",
"suit": "Clubs",
"card": "7 of Clubs",
"short": "7♣"
},
{
"rank": "Queen",
"suit": "Spades",
"card": "Queen of Spades",
"short": "Q♠"
},
{
"rank": "King",
"suit": "Hearts",
"card": "King of Hearts",
"short": "K♥"
},
{
"rank": "6",
"suit": "Spades",
"card": "6 of Spades",
"short": "6♠"
},
{
"rank": "Queen",
"suit": "Diamonds",
"card": "Queen of Diamonds",
"short": "Q♦"
},
{
"rank": "King",
"suit": "Diamonds",
"card": "King of Diamonds",
"short": "K♦"
},
{
"rank": "4",
"suit": "Hearts",
"card": "4 of Hearts",
"short": "4♥"
},
{
"rank": "7",
"suit": "Hearts",
"card": "7 of Hearts",
"short": "7♥"
},
{
"rank": "8",
"suit": "Clubs",
"card": "8 of Clubs",
"short": "8♣"
},
{
"rank": "4",
"suit": "Spades",
"card": "4 of Spades",
"short": "4♠"
},
{
"rank": "9",
"suit": "Hearts",
"card": "9 of Hearts",
"short": "9♥"
},
{
"rank": "Ace",
"suit": "Diamonds",
"card": "Ace of Diamonds",
"short": "A♦"
},
{
"rank": "Jack",
"suit": "Diamonds",
"card": "Jack of Diamonds",
"short": "J♦"
},
{
"rank": "Jack",
"suit": "Hearts",
"card": "Jack of Hearts",
"short": "J♥"
},
{
"rank": "2",
"suit": "Clubs",
"card": "2 of Clubs",
"short": "2♣"
},
{
"rank": "Jack",
"suit": "Clubs",
"card": "Jack of Clubs",
"short": "J♣"
},
{
"rank": "Queen",
"suit": "Clubs",
"card": "Queen of Clubs",
"short": "Q♣"
},
{
"rank": "9",
"suit": "Spades",
"card": "9 of Spades",
"short": "9♠"
},
{
"rank": "8",
"suit": "Diamonds",
"card": "8 of Diamonds",
"short": "8♦"
},
{
"rank": "10",
"suit": "Spades",
"card": "10 of Spades",
"short": "10♠"
},
{
"rank": "9",
"suit": "Clubs",
"card": "9 of Clubs",
"short": "9♣"
},
{
"rank": "4",
"suit": "Clubs",
"card": "4 of Clubs",
"short": "4♣"
},
{
"rank": "Ace",
"suit": "Clubs",
"card": "Ace of Clubs",
"short": "A♣"
},
{
"rank": "7",
"suit": "Diamonds",
"card": "7 of Diamonds",
"short": "7♦"
},
{
"rank": "7",
"suit": "Spades",
"card": "7 of Spades",
"short": "7♠"
},
{
"rank": "5",
"suit": "Diamonds",
"card": "5 of Diamonds",
"short": "5♦"
},
{
"rank": "10",
"suit": "Clubs",
"card": "10 of Clubs",
"short": "10♣"
},
{
"rank": "10",
"suit": "Diamonds",
"card": "10 of Diamonds",
"short": "10♦"
},
{
"rank": "6",
"suit": "Hearts",
"card": "6 of Hearts",
"short": "6♥"
},
{
"rank": "King",
"suit": "Spades",
"card": "King of Spades",
"short": "K♠"
},
{
"rank": "Jack",
"suit": "Spades",
"card": "Jack of Spades",
"short": "J♠"
},
{
"rank": "Ace",
"suit": "Hearts",
"card": "Ace of Hearts",
"short": "A♥"
},
{
"rank": "5",
"suit": "Hearts",
"card": "5 of Hearts",
"short": "5♥"
},
{
"rank": "King",
"suit": "Clubs",
"card": "King of Clubs",
"short": "K♣"
},
{
"rank": "10",
"suit": "Hearts",
"card": "10 of Hearts",
"short": "10♥"
},
{
"rank": "2",
"suit": "Diamonds",
"card": "2 of Diamonds",
"short": "2♦"
},
{
"rank": "Ace",
"suit": "Spades",
"card": "Ace of Spades",
"short": "A♠"
},
{
"rank": "3",
"suit": "Clubs",
"card": "3 of Clubs",
"short": "3♣"
},
{
"rank": "5",
"suit": "Clubs",
"card": "5 of Clubs",
"short": "5♣"
},
{
"rank": "8",
"suit": "Hearts",
"card": "8 of Hearts",
"short": "8♥"
},
{
"rank": "3",
"suit": "Spades",
"card": "3 of Spades",
"short": "3♠"
},
{
"rank": "6",
"suit": "Clubs",
"card": "6 of Clubs",
"short": "6♣"
},
{
"rank": "4",
"suit": "Diamonds",
"card": "4 of Diamonds",
"short": "4♦"
},
{
"rank": "2",
"suit": "Hearts",
"card": "2 of Hearts",
"short": "2♥"
},
{
"rank": "3",
"suit": "Diamonds",
"card": "3 of Diamonds",
"short": "3♦"
},
{
"rank": "9",
"suit": "Diamonds",
"card": "9 of Diamonds",
"short": "9♦"
},
{
"rank": "5",
"suit": "Spades",
"card": "5 of Spades",
"short": "5♠"
},
{
"rank": "3",
"suit": "Hearts",
"card": "3 of Hearts",
"short": "3♥"
},
{
"rank": "6",
"suit": "Diamonds",
"card": "6 of Diamonds",
"short": "6♦"
}
],
"top_card": {
"rank": "8",
"suit": "Spades",
"card": "8 of Spades",
"short": "8♠"
},
"bottom_card": {
"rank": "6",
"suit": "Diamonds",
"card": "6 of Diamonds",
"short": "6♦"
},
"sample_hand": [
{
"rank": "8",
"suit": "Spades",
"card": "8 of Spades",
"short": "8♠"
},
{
"rank": "2",
"suit": "Spades",
"card": "2 of Spades",
"short": "2♠"
},
{
"rank": "Queen",
"suit": "Hearts",
"card": "Queen of Hearts",
"short": "Q♥"
},
{
"rank": "7",
"suit": "Clubs",
"card": "7 of Clubs",
"short": "7♣"
},
{
"rank": "Queen",
"suit": "Spades",
"card": "Queen of Spades",
"short": "Q♠"
}
]
}
}
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 |
|---|---|---|---|
total_cards | number | 52 | Total number of cards in the shuffled deck |
decks_used | number | 1 | Number of decks combined for this shuffle |
includes_jokers | boolean | false | Whether jokers are included in this deck |
shuffle_method | string | fisher-yates | Shuffling algorithm used for randomization |
cards | array[52] | Complete shuffled deck with all card details | |
cards.0.rank | string | 8 | Card rank value like Ace, King, or number |
cards.0.suit | string | Spades | Card suit: Spades, Hearts, Diamonds, or Clubs |
cards.0.card | string | 8 of Spades | Full card name like King of Hearts |
cards.0.short | string | 8♠ | Abbreviated card notation with suit symbols |
top_card | object | {…} | First card in the shuffled deck sequence |
top_card.rank | string | 8 | Top card rank value |
top_card.suit | string | Spades | Top card suit |
top_card.card | string | 8 of Spades | Top card full name |
top_card.short | string | 8♠ | Top card abbreviated notation |
bottom_cardPremium | object | {…} | Last card in the shuffled deck sequence |
bottom_card.rankPremium | string | 6 | Bottom card rank value |
bottom_card.suitPremium | string | Diamonds | Bottom card suit |
bottom_card.cardPremium | string | 6 of Diamonds | Bottom card full name |
bottom_card.shortPremium | string | 6♦ | Bottom card abbreviated notation |
sample_handPremium | array[5] | First five cards as example hand from deck | |
sample_hand.0.rankPremium | string | 8 | Sample hand card rank value |
sample_hand.0.suitPremium | string | Spades | Sample hand card suit |
sample_hand.0.cardPremium | string | 8 of Spades | Sample hand card full name |
sample_hand.0.shortPremium | string | 8♠ | Sample hand card abbreviated notation |
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
- Card Games
- Generate shuffled decks for online card games, poker, and blackjack applications
- Simulations
- Simulate card distributions and test card game probabilities with random shuffles
- Game Development
- Implement card shuffling functionality in gaming applications and virtual casinos
- Teaching Tools
- Demonstrate shuffling algorithms and randomization concepts in educational applications
Other ways to use Card Deck Shuffler Skill
Set up Card Deck Shuffler 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: