#DHSeaDev — Chrome MV3 — Side Panel Extension
MTG Cart Companion
MTG Cart Companion is a Chrome extension that turns any card name on any web page into a Magic: The Gathering deck list, then hands that list to a marketplace in one step. Read a decklist on Reddit, right-click the names, and check out — without retyping anything.
Available now on the Chrome Web Store. Free, no account, and it works on any page.
How it works
Select a card name anywhere — a forum post, an article, a video description — and right-click to add it. The side panel holds what you have collected, with art, set, printing and an estimated price. When you are done, one button copies everything in TCGplayer Mass Entry format and opens the page so you paste once.
Partial names are handled properly. Selecting “Bolt” matches 41 real printings, and rather than guessing, the extension shows the actual art so you pick the one you meant. That same picture-first search runs from the panel: a few letters, a grid of printings, one click.
Works off-site
Every other tool of this kind decorates a marketplace page. This one runs where the lists actually live.
Pictures, not spelling
Browse and pick by card art. Click anything to enlarge it and read the rules text.
Whole-page import
Scan a page and pull an entire list in one pass, with per-line reporting for anything unmatched.
Yours to move
Export to Mass Entry, Moxfield, Archidekt, MTG Arena, plain text or CSV. Share by link or file.
Built on measurements, not assumptions
Two examples of why this took the shape it did.
“It didn’t find the card.” Scryfall’s lookup returns the same 404 for “no such card” and for “too many matches” — the only difference is prose in the response body. Collapsing both into “not found” meant that selecting Bolt (41 matches), Jace (28), Ring (620) or Force (119) all reported the card did not exist. The fix was to separate the two states and turn the ambiguous one into a picker, which is also the nicer answer.
Sharing without a server. A shared list travels inside the URL fragment, which browsers never transmit. A real 100-card Commander deck compresses to a 1,291-character fragment — measured before the feature was written, not after. That is why there is no account and no database.
Privacy
Plain version: it talks to one place, stores nothing off your machine, and has no way to identify you.
| What | Answer |
|---|---|
| Accounts or sign-in | None. There is nothing to sign into. |
| Analytics or telemetry | None. No events, no page views, no crash reporting, no third-party scripts. |
| Network requests | One host: api.scryfall.com, for card names, printings, prices and legality. Card images load from Scryfall’s image servers. |
| Where your lists live | chrome.storage.local — this browser only. Nothing syncs to a Google account or to any server. |
| Browsing history | Never read or stored. When you ask to scan a page, the site’s origin is used to request permission for that one site and is not retained. |
| Page content | A scan runs only when you start it. It reads the page in memory, keeps the card names, and discards the rest. |
| Share links | The list is encoded in the URL fragment, which browsers do not send to servers. A shared link is never uploaded or written to a web log — not even ours. |
| Remote code | None. No eval, no remotely-hosted scripts, no CDN, no remote fonts. Everything executable ships inside the package. |
| Selling or sharing data | There is no data to sell. Nothing is transferred to anyone, for any purpose. |
| Deleting your data | Remove the extension, or clear its storage from chrome://extensions. Export first if you want to keep anything. |
Permissions, and exactly why each one exists
| Permission | Why |
|---|---|
storage | Saves your lists, theme and settings in this browser. |
contextMenus | Adds the right-click entries. |
sidePanel | The panel itself. |
activeTab + scripting | Used only when you ask to scan a page, to read that one tab at that moment. |
host: api.scryfall.com | The only server contacted. Without it nothing resolves. |
| Optional page access | Not granted at install. Requested per-site the first time you scan, and revocable any time in chrome://extensions. |
Removed rather than justified: an earlier build declared clipboardWrite. A pre-submission audit found zero uses of it, so it was deleted from the manifest. An unused permission is a liability, not a convenience.
Questions about any of this: dhseadev@gmail.com
Credits
Card data and imagery from Scryfall. Magic: The Gathering is © Wizards of the Coast. This is an unofficial tool and is not affiliated with, endorsed by, or sponsored by Wizards of the Coast or TCGplayer.
Built by #DHSeaDev — dhseadev@gmail.com