deck2hand help
Which cards fetch which other cards, written down by players.
What deck2hand does
Type a card name, then ask it either way round:
- Who searches this? Every card that can fetch it, best first.
- What does this search? Everything one searcher can pull.
Players write the entries. The community checks each one before it goes live. Coverage is patchy in places, and anyone with a Discord account can write a missing one.
Destination sets where the card has to end up. Hand is the default; GY, banished, field and face-up Extra Deck are there too. Your settings go into the URL, so links are shareable.
Reading the results
A row is one entry: a searcher, and what it can grab.
- The sentence under the name is the rule spelled out, like "any Warrior monster with Level 4 or lower".
- Italics are the trigger or cost, like "If this card is Tributed".
- HOPT is hard once per turn: once, however many copies you draw. SOFT is once per copy.
- The letter is a grade. Hover or tab to it for the numbers.
List and Gallery are the same data laid out differently. Clicking a name opens the card.
Signed in, you can vote a row up or down. Votes are per pairing rather than per card, so Sangan can rate well for one target and badly for another.
What the grades mean
A grade is a total out of four parts.
Specificity (0 to 50)
How precisely the effect finds what you want.
| Scope | Base | With extra conditions |
|---|---|---|
| Exact name | 50 | n/a |
| Archetype | 40 | +7 each, capped at 45 |
| Field filter | 5 | +7 each, capped at 45 |
Two exceptions. A filter entry whose searcher shares an archetype with the target scores from 40, not 5. And an OR counts as its loosest half, so "Level 4 or Level 8" scores like the broader one.
Breadth (0 to −20)
The other half of specificity: how much else the effect would have found. Specificity cannot see that on its own, since one condition scores 12 whether it reads "Warrior" or "Monster".
The measure is the share of your card's own kind the effect can reach, counting only the zones it works in, and it costs a point per 5% of them.
| Effect | Reaches | Costs |
|---|---|---|
| Foolish Burial — any monster | 100% | −20 |
| Mathematician — Level 4 or lower | 74% | −15 |
| Sangan — ATK 1500 or less | 63% | −13 |
| Summoner Monk — a Level 4 monster | 31% | −6 |
| Reinforcement of the Army | 8% | −2 |
| Anything naming one card | — | 0 |
Kind is what makes this fair between frames: Terraforming loses 2 for finding Field Spells, while Foolish Burial Goods loses 20 for finding any Spell at all. Counting both against all 14,000 cards would have let every Spell and Trap searcher off.
This catches a few good cards along with the bad ones. Vote them back up.
Speed (5 to 30)
Read off the frame: 30 for Normal and Quick-Play Spells, 25 for other Spells, 15 for monsters, 5 for Traps. The community can override it where the frame lies.
Votes
Added straight on, uncapped either way. They are there because the formula cannot see bad costs, dead modes, or targets nobody would actually fetch.
Grades
| Grade | From | Looks like |
|---|---|---|
| S | 70 | Named target on a fast Spell |
| A | 55 | Named target on a monster |
| B | 40 | Reinforcement of the Army |
| C | 25 | Summoner Monk |
| D | 15 | Sangan, and most generic dumps |
| F | under 15 | Heavily downvoted |
Ranking uses the raw total, not the letter.
Steps: longer lines
Steps sets how many actions a line may use. Raising it adds longer lines without dropping the short ones.
Everything starts in the Deck, so Steps 1 shows only effects that pull straight out of it. Monster Reborn turns up at Steps 2, paired with something that gets the card to the GY first.
A step either moves your card or sets up a tool. Foolish Burial into The White Stone of Legend is setup; White Stone adding Blue-Eyes is the part you wanted.
A tool only works from the zone it was put in, which is why Sangan into White Stone is not a line: White Stone lands in your hand, where its GY trigger is dead. Hand is the generous case, since a card there can also use its field effects.
Lines assume the cards they name are in your hand and your Normal Summon is up. Nothing charges you for getting there, so read a long line as a sketch.
A line scores as its weakest action, minus 5 per extra step and 3 per extra zone. Short usually wins.
Multi-step rows vote as a whole. At net -3 a line folds into a section at the bottom. Downvoting asks why, that answer goes to the community, and if it agrees the line moves to a flagged section. Nothing is deleted either way.
Lock effects like "you can only Special Summon Fiends this turn" vary too much to write down, so those actions just say "restriction applies". Hover it.
Adding and fixing entries
- Open the Workbench and pick the searcher.
- Add a scope per search effect.
- Fill in condition and restriction text if there is a trigger, a cost, or a once-per-turn clause.
- Submit.
The preview lists what your scopes match. If that list is wrong, the entry is wrong.
My submissions holds your pending and rejected work with any review notes. To fix a live entry, load it and submit an edit; the old one stays up until yours is approved.
Missing entries lists cards that read like searchers with nobody covering them. Good place to start.
Entries describe cards moving between zones. Replacement effects and continuous stat changes are out of scope.
Writing scopes
One scope per effect, so a card with two searches gets two.
Exact name
The card names its target. Pick it and you are done.
Field filter
Conditions on stats and text, joined with AND.
- Fields: name, type, race, attribute, ATK, DEF, level, Link rating, Pendulum scale, archetype, card text
- Operators: equals, not equals, contains, less than, greater than
- Case-sensitive is off by default. Turn it on for things like HERO in caps.
- Exclude self is on by default.
race is what the game calls Type (Warrior, Fiend, Spellcaster). type is the frame (Effect Monster, Normal Spell).
Write what the card text demands and nothing else. Each condition adds specificity up to the cap.
Archetype
The database's own tag. Kept for old entries, but it often disagrees with what players mean by an archetype, so name contains is usually better. New entries do not offer it.
Examples
| Card text | Scope |
|---|---|
| "Add 1 'Blue-Eyes White Dragon'" | Exact name |
| "Add 1 Level 4 or lower Warrior monster" | level <= 4 and race == Warrior |
| "Add 1 monster with 1500 or less ATK" | atk <= 1500 |
| "Add 1 'Fire Fist' monster" | name contains "Fire Fist" |
Zones
Three dropdowns per scope, defaulting to Deck, Hand, and usable from Hand, so a plain tutor needs no clicks.
| Dropdown | What it means |
|---|---|
| Target from | Where the fetched card comes from. |
| Target to | Where it lands. |
| Usable from | Where the searcher itself has to be. |
The zones are Deck, Hand, Field, GY, Banished, and the Extra Deck face-down or face-up.
Usable from is the one people get wrong:
- The White Stone of Legend fires on being sent to the GY, so GY.
- Angelechy Disturbance banishes itself from the GY, so GY.
- Abyss Actor - Trendy Understudy fires from the Pendulum Zone, so Field, with target from set to the face-up Extra Deck.
Skip anything the game already forbids. Extra Deck monsters cannot sit in your hand, tokens only exist on the field, and the engine knows both.
Expressions
Filters cover most cards. When they do not, switch the scope to advanced mode. Alice, Lady of Lament wants ATK and DEF adding to exactly 2000, which no filter can say:
| Expression | Matches |
|---|---|
atk + def == 2000 |
The Alice case. |
atk == def |
Equal ATK and DEF. |
(level == 4 or level == 8) and attribute == "DARK" |
Level 4 or 8 DARK monsters. The builder only joins with AND, so any OR needs an expression. |
Typos are rejected as you type, and the preview runs the same code the search does.
Fields
| Field | Holds |
|---|---|
name | The full card name. |
type | The frame: Effect Monster, Normal Spell, XYZ Monster. |
race | What the game calls Type. For Spells and Traps, the subtype: Quick-Play, Field, Counter. |
attribute | DARK, LIGHT, WATER. Monsters only. |
atk, def | Absent on Spells and Traps. Link monsters have no def. |
level | Level, or Rank for Xyz. Absent on Link monsters. |
linkval | Link rating. |
scale | Pendulum scale. |
archetype | The official tag, with the caveats above. |
desc | The full card text. |
id | The passcode. Rarely useful. |
Operators
| Operator | Does |
|---|---|
+ - * / | Arithmetic on numbers. |
== != | Equal and not equal. Different types never match. |
< <= > >= | Numeric, or alphabetical when both sides are text. |
includes | Substring, case-sensitive: desc includes "cannot attack". |
and or not | Boolean logic. |
( ) | Grouping. |
A missing field compares false, so atk <= 1500 skips Spells and Traps on its own.
Cards that name other cards
The database indexes card names quoted inside card text, which is how Fusion and Ritual support gets written:
mentions(expr)is true when this card quotes something matching expr.isMentionedBy(expr)is true when something matching expr quotes this card.
| To find | Write |
|---|---|
| Cards named as Fusion Material | isMentionedBy(type includes "Fusion") |
| Ritual Monsters named by a Ritual Spell | type includes "Ritual" and isMentionedBy(race == "Ritual") |
| Ritual Spells for a Ritual Monster | race == "Ritual" and mentions(type includes "Ritual") |
| Cards that name Yubel | mentions(name == "Yubel") |
Neither one nests, and there are no other functions. The index is as literal as the card text, so "1 'Blue-Eyes' monster" quotes an archetype rather than a card and links nothing.
An expression counts as one condition however long it gets. Pair it with plain conditions when you want specificity.