Provides on-chain verification of trading card prices against the LitecoinVM blockchain, enabling AI agents to cryptographically prove price integrity via Merkle proofs.
Browse 433K+ cards with on-chain verified prices
π Table of Contents
Related MCP server: safeagent-token-safety
Why This Exists
AI agents are making decisions with market data β but how do they know the data is real?
Regular APIs require trust. You call an endpoint, you get a number, and you hope it's accurate. There's no way to verify it. For AI agents managing portfolios, executing trades, or assessing collateral, this is a problem.
This MCP server solves it. Every actively-priced product in the oracle is committed to a Merkle root on-chain daily. Any agent can request a Merkle proof for any card and independently verify the price against the LitecoinVM blockchain β no trust required.
What Makes This Different
Feature | Regular Price API | LitVM TCG Oracle |
Data source | Opaque server | 13.5M+ verified market observations |
Verification | Trust the server | Merkle proof β on-chain verification |
Simulation | None | Monte Carlo with calibrated parameters |
Coverage | Limited | 433K products, 276K actively priced |
For AI agents | Manual integration | MCP β works in Claude, GPT, Cursor |
Blockchain | None | LitecoinVM (LiteForge, Chain 4441) |
Data Coverage
The oracle indexes the full TCGPlayer catalog and tracks live market prices:
Metric | Count | Description |
Total catalog | 433,671 | All products across 13 games and 85 categories |
Actively priced | 276,788 | Products with a current |
Price observations | 13.5M+ | Daily snapshots collected over months |
Merkle-provable | 276,788 | Only actively-priced products are committed on-chain |
Zero-price entries | ~157K | Tokens, promos, bundles, foreign-market-only β searchable but not provable |
Transparency note: Not every product in the catalog has a market price. ~157K entries are catalog metadata with no trading activity (token cards, unopened case listings, foreign-language promos, etc.). These are returned by
search_cardsbut will return a404fromget_merkle_proofbecause zero-price products are not committed to the Merkle tree. This is by design β you wouldn't commit unverifiable data on-chain.
Quick Start
Install
pip install litvm-tcg-oracleFor live on-chain contract reads (optional):
pip install litvm-tcg-oracle[chain]Claude Desktop
Add to ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"litvm-tcg-oracle": {
"command": "litvm-tcg-oracle"
}
}
}Cursor / VS Code
Add to your MCP settings:
{
"litvm-tcg-oracle": {
"command": "litvm-tcg-oracle"
}
}Then ask your AI: "Search for Charizard Base Set and simulate the price over 90 days"
Tools
1. search_cards β Full-Text Search
Search the full 433K product catalog using FTS5 full-text search.
β search_cards(query="black lotus", game="Magic", limit=5)Covers 13 games: PokΓ©mon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Disney Lorcana, Flesh & Blood, Dragon Ball Super, Digimon, Star Wars, Union Arena, MetaZoo, Cardfight Vanguard, My Hero Academia.
Returns product IDs needed for get_price and get_merkle_proof.
2. get_price β Price + History
Get current market price and daily price history for any card.
β get_price(card_name="Charizard Base Set Holo", days=90)Returns market price, low (buy-it-now) price, and a daily price array. This history is what powers the Monte Carlo calibration β the same data the simulation engine uses to calculate drift and volatility.
3. get_merkle_proof β On-Chain Verification
This is the key differentiator. Get a cryptographic proof that a card's price was committed to the LitecoinVM blockchain.
β get_merkle_proof(product_id=84198)Returns a bytes32[] proof array (19 hashes for the current tree) that can be submitted to the MerklePriceOracle contract on LiteForge to verify the price without trusting any server.
Verification flow:
Call
get_merkle_proof(product_id)β receive proof + leaf dataSubmit to
MerklePriceOracle.verifyPrice()on LiteForge (Chain 4441)Contract checks the leaf against the committed Merkle root
Returns
trueif and only if the price matches exactly
Leaf encoding (matches Solidity):
keccak256(bytes.concat(keccak256(abi.encode(
productId, categoryId, name, marketPrice, lowPrice
))))Standard: OpenZeppelin MerkleProof (double-hash, sorted pairs)
Only the 276K actively-priced products are in the Merkle tree. Zero-price catalog entries return a
404β this is correct behavior.
4. oracle_status β Live On-Chain Status
Reads directly from the LiteForge blockchain via Caldera RPC β not cached data.
β oracle_status()Returns:
MerklePriceOracle: Merkle root, total products, freshness, total root updates
TCGPriceOracleV2: Total TWAP updates, last update timestamp, 660+ confirmed updates
Database: Card count, price rows, latest data date
5. simulate_price β Monte Carlo Simulation
Stochastic price simulations calibrated from real market data.
β simulate_price(card_name="Charizard Base Set", days=90, model="merton")How the Simulation Works
This is not placeholder math. Every simulation parameter is calibrated from real price observations stored in the oracle database.
Calibration Pipeline:
Card name β FTS5 search β product_id β price_history (up to 365 days)
β weekly resampling (ISO week buckets)
β log-returns between weekly closing prices
β annualized drift (ΞΌ) and volatility (Ο)
β jump detection via 2Ο threshold on time-scaled returns
β 10,000 vectorized numpy simulation paths
β percentile forecast bands + VaR/CVaR risk metricsWhy weekly resampling? Daily TCG prices have irregular gaps (weekends, holidays, no sales). Weekly resampling produces stable drift estimates by collapsing daily observations into ISO-week buckets and computing log-returns between weekly closing prices. This eliminates the βΞt scaling problem that plagues irregularly-spaced data.
Models:
Geometric Brownian Motion (GBM)
dS = ΞΌΒ·SΒ·dt + ΟΒ·SΒ·dWStandard log-normal diffusion β the foundation of Black-Scholes option pricing. Assumes continuous price movements with no sudden jumps.
Merton Jump-Diffusion (default)
dS = (ΞΌ β Ξ»k)Β·SΒ·dt + ΟΒ·SΒ·dW + JΒ·SΒ·dNExtends GBM by adding Poisson-distributed price jumps to capture sudden market events β buyouts, influencer videos, ban lists, set reprints, tournament results.
Symbol | Meaning | Calibration |
| Drift (annualized return) | Weekly log-return mean Γ 52 |
| Volatility | Weekly log-return stdev Γ β52 |
| Jump intensity (jumps/year) | Count of returns > 2Ο, annualized |
| Jump mean | Average of detected jump returns |
| Jump volatility | Stdev of detected jump returns |
| Drift compensator |
|
| Brownian motion | Standard Wiener process |
| Jump arrival | Poisson(λ·dt) |
Risk Metrics:
VaR 95%: "There is a 5% chance the price drops below $X over N days"
CVaR 95% (Expected Shortfall): "If that tail event occurs, the average loss lands at $Y"
Transparency:
param_source: "calibrated_from_market_data"β real parameters from this card's historyparam_source: "default_tcg_priors"β insufficient data (<5 points), using conservative priors (3% drift, 40% vol)Standard errors reported for ΞΌ, Ο, Ξ» to quantify parameter uncertainty
Mean-reversion detection via lag-1 autocorrelation
References:
Merton, R.C. (1976). Option pricing when underlying stock returns are discontinuous. Journal of Financial Economics, 3(1-2), 125-144.
Black, F. & Scholes, M. (1973). The Pricing of Options and Corporate Liabilities. Journal of Political Economy, 81(3), 637-654.
6. get_market_snapshot β Market Overview
Top cards by value for any game.
β get_market_snapshot(game="Pokemon", limit=25)Architecture
ββββββββββββββββββββ MCP (stdio) ββββββββββββββββββββββββ
β β βββββββββββββββββββββββΊ β β
β AI Agent β β litvm-tcg-oracle β
β (Claude, GPT, β β MCP Server β
β Cursor, etc.) β β (pip install) β
β β β β
ββββββββββββββββββββ ββββββββ¬ββββββββ¬ββββββββ
β β
HTTPS β β RPC
β β
βΌ βΌ
ββββββββββββββββββββ βββββββββββββββ
β Oracle REST API β β LiteForge β
β (Mac Mini) β β Chain 4441 β
β β β β
β 433K products β β Merkle + β
β 13.5M prices β β V2 Oracle β
β FTS5 search β β contracts β
ββββββββββββββββββββ βββββββββββββββOff-chain layer (REST API): Search, prices, market data, simulation calibration
On-chain layer (LiteForge RPC): Merkle root verification, oracle contract status, TWAP feeds
The Mac Mini runs the daily pipeline (scrape β price update β Merkle root β on-chain push) and serves the REST API. The MCP server is a thin client that any developer can pip install and connect to Claude, GPT, or Cursor.
Configuration
Variable | Default | Description |
|
| Override the API base URL |
Local Development
export LITVM_ORACLE_URL=http://localhost:8402
litvm-tcg-oracleOn-Chain Contracts
Contract | Address | Purpose |
MerklePriceOracle | Daily Merkle root for 276K products | |
TCGPriceOracleV2 | Hourly TWAP for top 50 blue-chip cards |
Both contracts are deployed on LiteForge Testnet (Chain ID 4441) via the Caldera RPC.
π License & Commercial Use
This project is licensed under the Business Source License 1.1 (BUSL-1.1).
We build in public and support the developer ecosystem β but we also protect the infrastructure and IP of The Undesirables LLC.
β What You CAN Do (Free)
Personal & Educational Use β Download, modify, and run locally for learning, research, or personal projects.
Non-Competing Applications β Integrate this MCP server into your app, provided your app does not offer TCG market intelligence, pricing aggregation, AI card grading, or on-chain price oracle services as its primary function.
MCP / Agent Integration β Connect your AI agent to this server for non-commercial use.
Community Contributions β Security audits, bug fixes, and PRs are always welcome.
π« What You CANNOT Do (Use Limitation)
Competing Oracle β You may not use this code to operate a competing price oracle service on LitecoinVM or any compatible chain.
Commercial Resale β You may not wrap our API, data pipelines, or AI models into a paid service without a commercial license.
Hosted SaaS β You may not host this software as a service for third parties without written permission.
π Open-Source Conversion
On June 1, 2030 (or 4 years after the first public release of each version), this code automatically converts to the MIT License β fully open source, forever.
π€ Commercial Licensing
Building a commercial product? Want guaranteed API access or white-label integration? Contact us:
π§ theundesirables7@gmail.com Β· π¦ @undesirables_ai
Β© 2026 The Undesirables LLC
Links
Website: the-undesirables.com
Oracle API: oracle.the-undesirables.com
LitecoinVM: litvm.com
Block Explorer: liteforge.explorer.caldera.xyz
Built by The Undesirables LLC β the first and only oracle on LitecoinVM.
β If this project helped you, please star this repo β it helps others find it.
This server cannot be installed
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sailorpepe/litvm-tcg-oracle-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
