VOOZH about

URL: https://apify.com/mowell_labs/card-grader

โ‡ฑ Card Grader MCP ยท Apify


Pricing

from $30.00 / 1,000 card identification (single photo)s

Go to Apify Store

Vision-based trading card identification, centering analysis, and grading assessment. Supports Pokรฉmon, Magic: The Gathering, Yu-Gi-Oh!, and sports cards.

Pricing

from $30.00 / 1,000 card identification (single photo)s

Rating

0.0

(0)

Developer

๐Ÿ‘ Brian Mowell

Brian Mowell

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 months ago

Last modified

Share

Vision-based trading card identification, centering analysis, and grading assessment.

Supported card types: Pokรฉmon TCG, Magic: The Gathering, Yu-Gi-Oh!, sports cards (Topps, Panini, Upper Deck, Bowman, etc.)

Grading services: CGC, PSA, BGS, SGC, TAG


Tools

ToolDescriptionPPE
identify_cardSingle front photo โ†’ name, set, rarity, centering, value$0.03
identify_card_both_sidesFront + back โ†’ full centering both sides + damage$0.05
analyze_centeringCentering-only analysis โ†’ L/R, T/B ratios, CGC/PSA/BGS sub-grades$0.03
estimate_card_valueText-only value lookup (no image needed)$0.02
grade_assessmentFull submission assessment โ†’ submit/borderline/skip + reasoning$0.04

Setup

Environment Variables

$exportANTHROPIC_API_KEY="sk-ant-..."

Set in Apify Console โ†’ Source โ†’ Environment Variables (mark as secret).

Local Development

cd card-grader
python3 -m venv venv
source venv/bin/activate
pip install-r requirements.txt
exportANTHROPIC_API_KEY="sk-ant-..."
python run_server.py

Server starts on http://localhost:4321/mcp


Testing

Encode a test image

$BASE64=$(base64 -w0 /path/to/card.jpg)

Test identify_card

from server import identify_card
import base64
withopen("card.jpg","rb")as f:
b64 = base64.b64encode(f.read()).decode()
result = identify_card(image_data=b64, mime_type="image/jpeg")
print(result)

Test analyze_centering

from server import analyze_centering
import base64
withopen("card.jpg","rb")as f:
b64 = base64.b64encode(f.read()).decode()
result = analyze_centering(image_data=b64)
print(result["centering"])

Test estimate_card_value (no image)

from server import estimate_card_value
result = estimate_card_value(
card_name="Charizard",
card_set="Base Set",
card_number="4/102",
year=1999,
rarity="holo rare",
card_variant="shadowless",
condition="near mint raw",
)
print(result)

Test grade_assessment

from server import grade_assessment
import base64
withopen("card.jpg","rb")as f:
b64 = base64.b64encode(f.read()).decode()
result = grade_assessment(
image_data=b64,
target_grade="10",
grading_service="CGC",
)
print(result["assessment"]["submission_recommendation"])
print(result["assessment"]["cgc_summary"])

Test identify_card_both_sides

from server import identify_card_both_sides
import base64
withopen("front.jpg","rb")as f:
front_b64 = base64.b64encode(f.read()).decode()
withopen("back.jpg","rb")as f:
back_b64 = base64.b64encode(f.read()).decode()
result = identify_card_both_sides(
front_image_data=front_b64,
back_image_data=back_b64,
)
print(result["card"]["cgc_summary"])

Deploy to Apify

rm-rf venv
apify push

After push: re-enable Actor Standby in Apify Console โ†’ Settings.

Claude Desktop config

{
"mcpServers":{
"card-grader":{
"command":"npx",
"args":["-y","mcp-remote","https://YOUR_USERNAME--card-grader.apify.actor/mcp?token=apify_api_XXXXX"]
}
}
}

CGC Centering Scale Reference

Sub-GradeL/R & T/B
10 (Pristine)55/45 or better
9.5 (Gem Mint)60/40 or better
9 (Mint)65/35 or better
8.5 (NM/Mint+)65/35โ€“70/30
8 (NM/Mint)70/30โ€“75/25
7.5 and belowWorse than 75/25

Note: Centering is measured from photos. Corners, edges, and surface require hands-on inspection for accurate sub-grades.


License

MIT โ€” Mowell Labs 2025

You might also like

Yu-Gi-Oh! Card Database Scraper

crawlerbros/yugioh-card-scraper

Scrape Yu-Gi-Oh! card data including stats, prices, and set information from YGOPRODeck - the largest free Yu-Gi-Oh! card database. Search by name, type, attribute, archetype, or card set. No API key required.

TCGPlayer Scraper - Trading Card Prices

lulzasaur/tcgplayer-scraper

Scrape TCGPlayer marketplace for trading card prices across Pokemon, Magic: The Gathering, Yu-Gi-Oh, and more. Extract market prices, median prices, lowest prices, seller listings, card attributes, rarity, set info, and custom attributes via TCGPlayer's search API.

TCGplayer Scraper

solidcode/tcgplayer-scraper

[๐Ÿ’ฐ $3.0 / 1K] Extract trading card prices and seller listings from TCGplayer โ€” market, median, and lowest prices plus seller offers and optional sales history for Magic, Pokรฉmon, Yu-Gi-Oh!, Lorcana, and more.

Cardmarket Yu-Gi-Oh! Trend Scraper

scrap_them_all/cardmarket-yugioh-trend-scraper

Track Yu-Gi-Oh! TCG prices on Cardmarket โ€” Europe's largest trading-card marketplace. Scrape Weekly Top Cards and Best Bargains. Returns ranked cards with stable productId, expansion, current EUR price, thumbnail and product URL. Built for arbitrage, price alerts and BI dashboards.

๐Ÿ‘ User avatar

scrap_them_all

2

Yu-Gi-Oh! Card Database Scraper

parseforge/yugioh-card-database-scraper

Pull Yu-Gi-Oh! card data from YGOProDeck. Returns card name, type, description, ATK/DEF, level/rank/link, attribute, race, archetype, ban list status (TCG/OCG/Goat), card images, sets, prices on TCGPlayer/CardMarket/eBay. Search by name, type, race, attribute, or archetype.

TCG Card Scraper โ€” Magic, Pokรฉmon & More with Prices

crawlergang/tcgplayer-scraper

Scrape trading card data and prices from Scryfall (MTG) and the Pokรฉmon TCG API. Search cards by name, browse by set, or look up by ID. Returns card details, rarity, set info, market prices (USD/EUR), legalities, and TCGplayer purchase links.

2

5.0

TCG Card Scraper โ€” Magic, Pokรฉmon & More with Prices

crawlerbros/tcgplayer-scraper

Scrape trading card data and prices from Scryfall (MTG) and the Pokรฉmon TCG API. Search cards by name, browse by set, or look up by ID. Returns card details, rarity, set info, market prices (USD/EUR), legalities, and TCGplayer purchase links.