Spreadsheet
cards.xlsx Per-tag sections, thumbnails inline, market price and your 80 / 85 / 90 / 95 % comps on every row β with a totals row at the bottom.
Now shipping 1.4.0
mgz-pkmn turns a list of cards you want into a printable binder with thumbnails, market prices, and your negotiation floor. Built for collectors who'd rather show up informed than wing it on convention center Wi-Fi.
One pipeline, three open data sources, every output format that's useful for prepping a card show.
Layered lookup across pokemontcg.io (TCGPlayer + Cardmarket), TCGdex for international cards, and PriceCharting for region-exclusive products. Always negotiating from the same data the seller sees.
Bulk syntax like top:5 Charizard cards or all Pikachu prints, inline price filters, language tokens. Describe what you're hunting, not every card name.
Every row carries 80, 85, 90, and 95 percent of market. Your floor and ceiling are on the page when you sit down at the table.
Thumbnails embedded directly in the spreadsheet and PDF binder. Recognize the right printing across a glass case at ten feet.
xlsx with totals and per-tag sections, PDF binder pages (3Γ3 standard or 6Γ4 condensed), set-completion checklist, structured JSON report. Take the formats you actually use.
Japanese, Korean, Simplified and Traditional Chinese, German, French, Spanish, Italian, Portuguese, and more β automatic fallback when a card isn't indexed in English-only sources.
Designed for the buyer's workflow first β but the same pipeline produces a seller's inventory sheet when you bring binders to the table.
Plain text. One card per line. Use shortcuts like top 5 Mew | base set under $50 or all charizard cards | japanese β the parser does the rest.
pkmn lookup input.txt -o cards.xlsx --pdf binder.pdf --checklist checklist.pdf. Or open the web UI and paste your list β same pipeline, no install.
Open the xlsx for live reference, hand the printable binder to the vendor, tick cards off the checklist as you find them. Negotiate from facts.
Every run produces the same three artifacts β pick the format that fits the
moment. Screenshots below are rendered from the tracked sample outputs in
output/.
cards.xlsx Per-tag sections, thumbnails inline, market price and your 80 / 85 / 90 / 95 % comps on every row β with a totals row at the bottom.
binder.pdf Printable 3Γ3 binder page β thumb, set, number, price. Hand it across the table.
checklist.pdf Tick boxes by set, in collector-number order. Drop it in your binder and shop.
Newsletter
Occasional, no-pressure updates when a new version ships β and the odd Pokemon-TCG-meets-open-source note from @mgzwarrior. No spam, unsubscribe anytime.
MIT-licensed, public roadmap, first-time contributors welcome. The same tool you're trying β shaped by anyone who wants to help.
A curated list of small, well-scoped tasks for first-time contributors. Labels for the area you want to touch β lookup, outputs, cache, web, site.
Browse starter issues βOpen questions, design proposals, and announcements live here. The right place to float an idea before it's an issue β or just say hi.
Open Discussions βThe full workflow from issue to merged PR: branch naming, sign-off, the local gate, PR conventions. Everything you need to land your first change.
Read the guide βRoadmap organized by area β lookup, outputs, cache, web, devops. Speculative ideas live in the full roadmap; the committed work is below.
Polish and on-ramp: starter-issue curation, CITATION.cff, docs troubleshooting, py.typed marker, Discussions visibility, cache subcommands. Open to first-time contributors.
View milestone βPersistence foundation and web/site polish. Bridges v1.1's devex work and v2.0's deeper architectural changes.
View milestone βStructured query DSL, eBay sold-listings, type-aware search, LRU cache with eviction, persistent run history, PyPI + Docker publishing, OpenAPI client codegen.
View milestone βFull roadmap (including post-V2 monetization and V3+ proposals) lives in the repo.
The last few releases at a glance β straight from the changelog.
oxlint-backed import guard now give agents and humans one shared visual reference./me, logout, GitHub OAuth, Google OAuth, Discord OAuth, Apple sign-in, and Buttondown magic links. The SPA exposes the provider picker, signed-in chip, magic-link flow, sign-out action, and provider-specific chips./api/v1/collections and /api/v1/wishlists trees support creating lists, adding cards from results, listing saved items, and rendering minimal SPA surfaces.cli.py became the mgz_pkmn.cli package while preserving pkmn help output; make complexity and CI now gate new high-complexity functions, with a repo-analysis skill documenting the workflow that found the hotspot.user_identities, OAuth / magic-link providers can be linked and unlinked from the Account panel, /me includes linked identities, and the last-provider safeguard is visible before a user tries to disconnect it./account, the SPA opens the Account panel on that path, and link conflicts render inline instead of marooning users on a 404.https:// behind Render's proxy./version for the new tag before rebuilding the marketing site, with a warn-and-continue fallback so slow Render rollouts do not block the release./api/v1/lookup reports X-Cache as HIT, STALE, or MISS.pkmn cache warm-card-images downloads large / small card art into the persistent cache, GET /api/v1/cards/{card_id}/image/{size} serves cached images with immutable browser caching, and lookup / set-card responses rewrite image URLs when local files exist./var/cache, points XDG_CACHE_HOME there, and warms sets at runtime behind freshness manifests instead of during Docker build.MGZ_PKMN_WARM_CARDS_ON_STARTUP=1 joins the deployed warm flags so the expensive card pass bakes once onto the persistent disk, then serves from cache until stale.docs/cache.md documents the card-image warmer plus deployment-size planning data.