Midpoint Card Prices
Trading card prices and grading ROI for 1.5M+ Pokémon, Magic, Yu-Gi-Oh! and sports cards. Read-only.
Links
README
From the repo.
Midpoint MCP server
Trading-card market prices and grading ROI as Model Context Protocol tools. Read-only, no account, no API key. Powers the Midpoint Card Prices plugin in ChatGPT and works with Claude, Claude Code, Cursor and any MCP client.
- Endpoint:
https://mcp.cardcenteringtool.com/mcp(Streamable HTTP) - Docs and connect instructions: https://www.cardcenteringtool.com/mcp
- Official MCP Registry:
com.cardcenteringtool/card-prices(https://registry.modelcontextprotocol.io/v0.1/servers?search=com.cardcenteringtool) - Data: 1.5M+ Pokémon, Magic, Yu-Gi-Oh!, One Piece, Lorcana, Gundam, sports and entertainment cards; USD market values from real sold listings, refreshed daily. Same data as https://www.cardcenteringtool.com/prices.
What you can ask
Plain questions in a collector's words. The assistant picks the tool, finds the card and answers with prices, the capture date and a link to the card page.
- "What is a PSA 10 Base Set Charizard worth?" · "Is my Umbreon VMAX alt art worth grading?"
- "1986 Fleer Michael Jordan raw and PSA 10 price" · "Luka Doncic Prizm Silver rookie value"
- "1952 Topps Mickey Mantle PSA 10 price history" · "Is my Shohei Ohtani rookie worth grading?"
- "Alpha Black Lotus price" · "LOB-001 Blue-Eyes White Dragon 1st edition" · "OP-01 Manga Luffy"
- "Which Pokémon cards jumped the most this month?" · "Which rising cards actually sell?"
- "Most valuable cards in Evolving Skies" · "Best basketball cards to grade"
Every answer can include raw prices by condition (NM/LP/MP/HP), the graded ladder for PSA, CGC, BGS, SGC and TAG, the PSA 9 and PSA 10 premium over raw, net profit after $25/$50/$150 fees, expected value by gem rate, the break-even gem rate, 7–180 days of price history, 30-day movers, liquid movers, best cards to grade, and priced set checklists.
Coverage: Pokémon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Disney Lorcana, Riftbound, Gundam, Dragon Ball, Digimon; baseball, basketball, football, hockey, soccer, wrestling, UFC, racing, tennis, golf, boxing; Marvel, Star Wars, Garbage Pail Kids and other entertainment and TCG sets.
Installation
Remote server, nothing to install. Add it to any MCP client that supports HTTP servers:
{
"mcpServers": {
"midpoint": {
"url": "https://mcp.cardcenteringtool.com/mcp"
}
}
}
Clients that only speak stdio (Claude Desktop, some IDE plugins) can bridge with mcp-remote:
{
"mcpServers": {
"midpoint": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.cardcenteringtool.com/mcp"]
}
}
}
- ChatGPT: install Midpoint Card Prices from the plugin directory, or in Developer Mode add a connector with the endpoint.
- Claude (web, desktop, mobile): Customize → Connectors → Add custom connector → paste the endpoint.
- Claude Code:
claude mcp add --transport http midpoint https://mcp.cardcenteringtool.com/mcp - Cursor / Windsurf / others: paste the JSON above into the client's MCP settings.
- MCP Inspector:
npx @modelcontextprotocol/inspectorand connect to the endpoint.
No authentication. Streamable HTTP transport. Rate limited per client IP.
Tools
search_cards
Find cards by name, set, number or year and return raw and PSA 10 USD prices with the card id.
Inputs: query, game?, set_id?, limit?
get_card_prices
Full price ladder for one card: raw by condition (NM/LP/MP/HP) and graded prices for PSA, CGC, BGS, SGC and TAG by grade.
The ladder is for the card's primary printing (variant, e.g. "holofoil"); other printings of the same id
(reverse holo, 1st edition…) come back separately under other_variants and are never mixed in. raw_note is
set when the raw ladder is out of condition order (thin data).
Inputs: card_id
grading_roi
Is this card worth grading? Raw vs PSA 9 vs PSA 10, gem premium, net profit after $25/$50/$150 fees, expected value by gem rate, break-even gem rate, which company pays most, and a plain verdict.
Inputs: card_id, grading_fee_usd?
get_price_history
Dated market values over 7 to 180 days for the raw series or a PSA grade (1–10, half grades allowed). The series
follows one printing (variant). coverage says how many of the days have a capture and how to read repeated or
sparse values: a value repeated on consecutive days is an unchanged market estimate, not a frozen market.
Inputs: card_id, days?, grade?
best_cards_to_grade
Cards with the biggest expected net profit from grading in a game or set (half PSA 10, half PSA 9, minus raw and the fee; both graded prices required).
Inputs: game, set_slug?, grading_fee_usd?, limit?
trending_cards
Biggest 30-day gainers or drops, one game or all.
Inputs: game?, direction?, min_market_usd?, limit?
liquid_movers
Rising cards (30-day change > 0) with a recorded sales count of 25+ in the last year. Each candidate's own 40-day
series is checked first (enough captures, stable baseline, no one-capture jump); unstable ones are dropped and
counted in excluded_unstable. trending_cards applies the same check. Cards whose source does not
track yearly volume are excluded unless include_unknown_volume is set.
Inputs: game?, include_unknown_volume?, limit?
list_sets
Sets and expansions for a game, newest first, with ids.
Inputs: game, query?, limit?
get_set_cards
Priced checklist or most valuable cards in a set.
Inputs: game, set_id, sort?, limit?
Every tool is read-only (readOnlyHint: true, destructiveHint: false, openWorldHint: false), returns
structuredContent with an output schema, and links back to the matching page on cardcenteringtool.com.
Card ids are the public URL keys (swsh7-215, pricecharting-1821843).
Game keys: pokemon magicthegathering yugioh onepiece lorcana riftbound gundam dragonball digimon baseball basketball football hockey soccer wrestling ufc racing tennis golf boxing marvel starwars gpk entertainment othertcg.
Discord bot
The same nine tools as slash commands (/price, /grade, /history, /trending, /movers,
/set), answered as embeds. Source in src/discord/, built by the same npm run build, run
with npm run start:discord (or Dockerfile.discord as a second Coolify app). It is a plain
HTTP client of the public server: no database, no secrets beyond the bot token. The server
labels its calls and links as client discord.
Environment: DISCORD_BOT_TOKEN, DISCORD_CLIENT_ID (both from the Discord Developer Portal →
your application → Bot / General Information), optional MCP_URL (defaults to production) and
APP_LINK (defaults to https://www.cardcenteringtool.com/go/discord). Invite URL:
https://discord.com/oauth2/authorize?client_id=<CLIENT_ID>&scope=bot%20applications.commands&permissions=2048
(Send Messages). Commands are registered globally on boot; Discord can take up to an hour to
show them in every server after the first registration.
Data handling
Requests carry only the tool arguments (card names, ids, filters) and the caller's IP for rate limiting. Privacy policy: https://www.cardcenteringtool.com/privacy. Support: https://www.cardcenteringtool.com/contact.
Config for your environment
Use the endpoint URL below in your config. No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "https://mcp.cardcenteringtool.com/mcp"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.