MCP server
Ask your assistant what a card sold for, and have it answer from receipts instead of from memory.
This is a free, read-only MCP server over the same completed-sale data the rest of this site is built from. No key, no account, no signup.
https://palworldprices-mcp.allenjs-yi-dev.workers.dev/mcp
Why bother
A general-purpose assistant asked about a Palworld card price will usually answer. It has no sold data for a game this new, so what it produces is a plausible number with nothing behind it.
With this server connected, it answers from completed sales — and, just as importantly, it says "no verified sales yet" for the 131 printings that have never sold in a marketplace this project watches.
Install
Claude Code
claude mcp add --transport http palworldprices https://palworldprices-mcp.allenjs-yi-dev.workers.dev/mcp
Check it with claude mcp list.
Claude Desktop
Edit claude_desktop_config.json — on Windows %APPDATA%\Claude\claude_desktop_config.json, on macOS ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"palworldprices": {
"type": "http",
"url": "https://palworldprices-mcp.allenjs-yi-dev.workers.dev/mcp"
}
}
}
Restart the app. If your build predates native remote-server support, use the stdio bridge instead:
{
"mcpServers": {
"palworldprices": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://palworldprices-mcp.allenjs-yi-dev.workers.dev/mcp"]
}
}
}
Cursor
.cursor/mcp.json for one project, ~/.cursor/mcp.json for all of them:
{
"mcpServers": {
"palworldprices": {
"url": "https://palworldprices-mcp.allenjs-yi-dev.workers.dev/mcp"
}
}
}
Anything else
Point it at the URL with transport http (Streamable HTTP). There is no Authorization header to set, and CORS is open, so browser-hosted clients work without a proxy.
Then ask
- "What does the BP01-001 SSP sell for?"
- "How much is 荒ぶる溶岩竜 – アグニドラ worth?"
- "Which Palworld sets are tracked, and how much of each is actually priced?"
- "Is the OSR or the SSP of BP01-049 worth more?"
Try it without installing anything
Both headers are required — the transport answers 406 without them.
curl -s -X POST https://palworldprices-mcp.allenjs-yi-dev.workers.dev/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_card","arguments":{"cardIdOrCode":"pal-BP01-001-OSR"}}}'
The text the assistant receives:
Jormuntide Ignis – Savage Lava Dragon / 荒ぶる溶岩竜 – アグニドラ
Printing: BP01-001 · OSR
Price: $35.00 (median of completed sales)
Card page (receipts + history): https://palworldprices.com/cards/bp01/001-jormuntide-ignis-savage-lava-dragon-osr/
Other printings of BP01-001:
- Jormuntide Ignis – Savage Lava Dragon (BP01-001 base RR) — ~$39.90 (thin sample)
https://palworldprices.com/cards/bp01/001-jormuntide-ignis-savage-lava-dragon/
- Jormuntide Ignis – Savage Lava Dragon (BP01-001 RR) — $9.99
https://palworldprices.com/cards/bp01/001-jormuntide-ignis-savage-lava-dragon-rr/
- Jormuntide Ignis – Savage Lava Dragon (BP01-001 SSP) — $475.00
https://palworldprices.com/cards/bp01/001-jormuntide-ignis-savage-lava-dragon-ssp/
— Data: Palworld Prices …
Four printings of one card, $9.99 to $475. The siblings come back on every lookup so an assistant cannot quote one printing's price for another. (Response captured from the live server; the values in it move daily.)
Tools
| Tool | Arguments | Returns |
|---|---|---|
search_cards | query (EN/JP name, code, variant, rarity), limit? 1–50 | Ranked printings with price, tier, card page |
get_card | cardIdOrCode (pal-BP01-001-OSR, BP01-001, BP01-001 OSR) | One printing, its siblings, its card page |
list_sets | none | Every tracked set with per-tier coverage counts |
list_sets against the current build:
Palworld TCG sets tracked (5 sets, 257 printings):
- BP01: 172 printings — 41 priced, 66 thin-sample, 65 tracking live (no verified solds yet)
https://palworldprices.com/sets/bp01/
- EPR: 1 printing — 1 priced, 0 thin-sample, 0 tracking live (no verified solds yet)
https://palworldprices.com/sets/epr/
- ESOUL: 8 printings — 2 priced, 2 thin-sample, 4 tracking live (no verified solds yet)
https://palworldprices.com/sets/esoul/
- TD01: 38 printings — 2 priced, 6 thin-sample, 30 tracking live (no verified solds yet)
https://palworldprices.com/sets/td01/
- TD02: 38 printings — 1 priced, 5 thin-sample, 32 tracking live (no verified solds yet)
https://palworldprices.com/sets/td02/
Coverage is split by tier rather than totalled. "126 priced" would be true and misleading — 79 of those rest on one to three sales.
The honesty rules travel with the data
The reason to hand an assistant a price tool is that it will otherwise invent a price. That only helps if the tool's caveats survive the trip into chat, so they are built into the values rather than left as advice.
| Tier | The assistant sees | Sales behind it |
|---|---|---|
| Confident | $35.00 | 4 or more |
| Thin sample | ~$39.90 (thin sample) | 1 to 3 |
| Tracking live | No verified sold comps yet — tracking live | none |
Three things make this hold:
The qualifier is inside the number. There is no field holding a bare 39.9 with the caveat parked elsewhere for a model to skip. The string it is most likely to print already says "thin sample".
Unpriced means no number. A tracking-live printing returns medianUsd: null and that sentence. Asked about BP01-002, the server says it has no recorded sale — while showing that its OSR sibling is ~$35.00 and its RR sibling is $9.99, neither of which is the base's price.
The rules ship on every call. Each result carries a honesty block, and the connection handshake delivers them again as server instructions:
- Keep the qualifiers. A "~" prefix or "thin sample" means few verified solds; quote that
caveat alongside the number. Never present a thin-sample figure as a settled market price.
- If a printing is "tracking live" it has NO verified sold comps. Say so. Do not estimate a
price, interpolate from other printings, or fall back on your own training data.
- Printings of the same card (base vs OSR/SSP/SP/RR) price very differently. Never merge them.
When a lookup fails, the error text says the lookup failed and tells the model not to substitute a remembered figure. A price tool that fails quietly is worse than no price tool.
Attribution
Free to use, including commercially, with attribution. If you publish anything built on this server, publish this line verbatim:
Data: Palworld Prices (palworldprices.com) — completed-sale prices with confidence tiers
Include the card-page URL so a reader can reach the receipts. Do not imply endorsement.
Card images are not available through this server, and there is no bulk image access. Card art is hosted here under a publisher fan-content policy that does not extend to redistribution. Link to the card page.
Limits, stated plainly
- Data is rebuilt daily. Nothing here promises to be current.
- 257 printings across 5 sets. 47 confidently priced, 79 thin, 131 with no verified sale at all.
- Free service, no uptime or accuracy commitment. Liveness:
/health. - The server is read-only. It holds no account, no key and no data about you; it reads the same public files this site serves to every browser.
- Runs on
workers.devrather than this domain, deliberately. - Prices are informational. Not financial advice.
Writing a script rather than wiring an assistant? Skip MCP and read the JSON directly — see the API.
Questions
Something wrong or a tool you wish existed: contact@palworldprices.com.
Method: /methodology/. What we refuse to print: /accuracy/.