# Quickdraw: Yu-Gi-Oh! card effects and synergies > Read-only tools for LLMs and scripts over the Quickdraw deck builder's card database (about 14,600 Yu-Gi-Oh! cards with > effect tags): find cards by what their effects do, asked in plain English; see one card's effects, synergies, threats > and materials; find cards by printed facts; check a deck list. Answers name cards (no passcodes, images or links), give > the top results with a cursor for more, and are suggestions worked out from effect tags, not rulings. The same answers come two ways: an MCP server, and plain JSON over GET. Both are free, need no key, and are rate limited: about 60 requests a minute per address (an IPv6 /64 counts as one), approximate because each server instance counts on its own; every tool call in an MCP batch counts. A 429 answer says how long to wait in Retry-After. GET answers are cached at the edge for a day; the data only changes with a site update. A search that would take more than a few seconds answers with the best matches found so far and `"partial": true`; a more specific question answers in full. ## MCP - Endpoint: `https://www.quickdraw.cards/api/mcp` (POST, Streamable HTTP, stateless: plain JSON answers, no session, no event stream) - Protocol versions: 2025-06-18, 2025-03-26, 2024-11-05 - Tools (all read-only): - `search_effects(query, limit?, cursor?, include_ocg?)`: cards by effect, e.g. "search a DARK Spellcaster from the Deck", "special summon Zombies from the GY", "negate monster effects", "cards like Dark Hole", "hand traps". Returns how the question was read (`read_as`, `parsed`), then cards best match first, each with what its matching effect does (`does`), `match` ("made for it" or "can do it, among other cards"), and `control`, who picks the card it brings out: `chosen` (you), `random` (top of the Deck, excavating, a coin or die), `theirs` (your opponent or each player), `copy` (a copy of a card already there) or `cond` (only if something else happens first). - `card(name_or_passcode, per_group?, groups?)`: one card's text, what it does, synergies (cards that work with it, grouped by what they do and why they reach it), threats, materials (made from / material for) and banlist status. Nicknames ("ash", "imperm", "BEWD") and small slips in longer names ("Dark Magican") are fine; the start of a name in two or more words ("blue eyes") is its best-known card. A single broad word ("dragon") is a 404 with suggestions. Defaults: 8 groups of 3 names; ask for more with `groups` and `per_group`. - `find_cards(query?, name?, text_contains?, kind?, types?, attributes?, monster_types?, spell_types?, trap_types?, level?, rank?, link?, atk?, def?, scale?, archetype?, banlist?, include_ocg?, sort?, limit?, cursor?)`: cards by printed facts. Ranges: `4`, `"3-6"`, `"<=1500"`, `">=2000"`, `"7+"` or `[min, max]`. Lists hold 20 values at most. - `analyse_deck(list, banlist?, threats?)`: a YDK file, ydke:// link or "3 Card Name" lines under Main Deck / Extra Deck / Side Deck: legality (TCG, Traditional or none), roles (searchers, extenders, draw, removal, negation, hand traps, recovery, protection), gaps with a `search_effects` question to fill each, the engine (cards that work with the most others in it) and threats (the opponent's cards that hit the most of it). One deck per call: up to 150 different cards and 200 copies, 20,000 characters (a longer list is refused, not cut). - Batches (2025-03-26 and older): up to 10 messages and 3 tool calls each. 2025-06-18 has no batches: one message per POST. Claude Code: `claude mcp add --transport http quickdraw https://www.quickdraw.cards/api/mcp` ## JSON (GET) - [Effect search](https://www.quickdraw.cards/api/search?q=special+summon+zombies+from+the+gy&limit=10): `/api/search?q=…&limit=&cursor=&include_ocg=1` - [One card](https://www.quickdraw.cards/api/cards/ash-blossom-joyous-spring): `/api/cards/?per_group=&groups=` - [Printed facts](https://www.quickdraw.cards/api/find?kind=monster&attributes=WATER&level=%3C%3D4&sort=atk): `/api/find?…` with the find_cards arguments as query parameters (lists comma-separated; ranges as text, `[min,max]` included, e.g. `level=[null,4]`) - [Deck check](https://www.quickdraw.cards/api/deck?list=3+Ash+Blossom+%26+Joyous+Spring): `/api/deck?list=…&banlist=tcg`, or POST `{"list": "…"}` for long lists - Errors: `{ "error": "…" }` with 400 (a bad argument, saying what to send), 404 (no such card, with close names), 429 or 500. ## Notes - Every answer carries `note`: these are suggestions from effect tags, not rulings. Check the card text and current rulings. - Paging: pass an answer's `next_cursor` back as `cursor`; `null` means that was the last page. - Arguments a tool doesn't take are refused (400). A number past its range is used at the nearest end, and the answer says so in `adjusted` (`"limit": "limit is at most 50; 50 used."`). - OCG-only cards are left out unless `include_ocg` is set. Banlist status is the current TCG Forbidden & Limited List. - Card text and names are © Konami; Quickdraw is not affiliated with Konami.