Developers
A read-only API and an MCP server over the same catalog and marketplace data the site shows.
Public read API
No API key for reads. Rate limited to 60 requests per minute per IP, CORS-open, and every response carries an ETag so a repeat fetch of unchanged data can be a 304.
| Endpoint | Returns |
|---|---|
GET /api/v1/cards/{slug} | One oracle card and every printing. |
GET /api/v1/sets/{code} | One set. |
GET /api/v1/sets/{code}/checklist | Every printing in a set, checklist order. |
GET /api/v1/printings/{set}-{number} | The raw card object for one printing. |
GET /api/v1/printings/{set}-{number}/offers | Every live seller offering it. |
GET /api/v1/printings/{set}-{number}/worth | Market price, best offer, best buylist offer. |
GET /api/v1/search?q= | The site's Scryfall-syntax search, JSON out. |
GET /api/v1/suggest?q= | Name autocomplete. |
Public MCP server
Connect MagicGuru to Claude, ChatGPT or any MCP client. No authentication, throttled the same as the API. Endpoint: https://magicguru.co.za/mcp/public
find_card: name (+ optional set) -> printings with ids and imagescard_worth: printing + finish + condition -> market, best offer, best buylist, currencywhere_to_buy: printing -> live offers with seller, price, condition, urlset_checklist: set code -> the checklist rowsmerchant_offers: merchant slug -> listingscoming_soon: upcoming set and product releases
Claude
{
"mcpServers": {
"magicguru": {
"url": "https://magicguru.co.za/mcp/public"
}
}
}
ChatGPT
Add a connector with the same URL, https://magicguru.co.za/mcp/public, no auth.
Data
Every figure traces back to Scryfall or MTGJSON, see where our data comes from.