Forty-one cards match “Bolt”

DHSeaDev — Chrome Extensions, Windows Tools, & Idle Games

MTG Cart Companion is submitted to the Chrome Web Store and in review. It turns any card name on any web page into a Magic deck list and hands that list to a marketplace — right-click a name on Reddit, build the deck in the side panel, then export the whole thing in one step.

The project page is here: MTG Cart Companion. What follows is the part worth writing down — three defects that all had the same shape.

A 404 that means two different things

The first working build kept reporting that cards did not exist. Selecting Bolt got “no match, check the spelling.” So did Jace, Ring and Force.

Scryfall’s named-card lookup returns 404 for two completely different situations: no card matched, and too many cards matched. The only thing separating them is the prose in the response body. Collapsing both into one state is an easy mistake and a bad one, because the two cases deserve opposite responses. “Bolt” is not a miss — it matches 41 real printings, and the card the user wants is definitely in that list. Telling them it does not exist is both wrong and a dead end.

Splitting the two states turned the worse case into the better feature. An ambiguous name now opens a grid of actual card art, ranked by how often each card is played, and you click the one you meant. The failure became the picker.

A screenshot that lied

Store screenshots are captured from the real extension with real data. The picker screenshot was generated with the caption “Which ‘Bolt’? 41 cards match” above six cards — and the six cards were Sol Ring, Command Tower and four others from the demo deck, reused as stand-ins because that was the quickest way to populate the grid.

Every automated check passed. The image was the right size, the right colour depth, not blank, text inside the safe zone. None of them can read a card name. A reviewer who plays the game reads that screenshot as fabricated, and they would be right. It now runs the real query and shows the real results.

Captain America, in a Magic tool

Asking a card database for a card by name gets you whichever printing it considers canonical today. For four cards in the demo deck, that was the Marvel crossover set — so the hero screenshot for a card reader was Captain America artwork, in a listing for an unofficial fan tool.

Nothing in the API flags a licensed crossover. The set type reads as an ordinary commander set; there is no boolean to filter on. There is a search operator that claims to, and it classified two perfectly ordinary Magic cards as crossovers when tested — so it is not used. The printings are pinned by hand instead, with a check that asserts on what actually came back rather than on what was asked for.

The shape all three share

Every one of these passed its automated gate. A 404 is a valid HTTP response. A fabricated screenshot is a valid PNG. Marvel artwork is a valid card image. The checks were measuring the container and the content was wrong — and in all three cases the only thing that caught it was looking at the actual output and knowing what it should say.

That is the argument for gates that assert on meaning rather than on format, and it is why the screenshot pipeline now compares the composed image against the source capture byte for byte: so no future change can quietly retouch the product pixels and still report green.

What it does when it clears review

  • Right-click any card name on any page — forums, articles, video descriptions
  • Browse and pick printings by artwork, not by spelling
  • Click any card to read its rules text at full size, without leaving the panel
  • Scan a whole page and import an entire decklist in one pass
  • Export to Mass Entry, Moxfield, Archidekt, Arena, plain text or CSV
  • Share a deck by link or file — the list rides in the URL fragment, so nothing is uploaded anywhere

No account, no tracking, no server. Card data comes from Scryfall. Full details and the privacy policy are on the project page.