VOOZH about

URL: https://glama.ai/mcp/servers/sailorpepe/litvm-tcg-oracle-mcp

⇱ litvm-tcg-oracle by sailorpepe | Glama


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 market_price > 0

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_cards but will return a 404 from get_merkle_proof because 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-oracle

For 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:

  1. Call get_merkle_proof(product_id) β†’ receive proof + leaf data

  2. Submit to MerklePriceOracle.verifyPrice() on LiteForge (Chain 4441)

  3. Contract checks the leaf against the committed Merkle root

  4. Returns true if 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 metrics

Why 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Β·dW

Standard 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Β·dN

Extends 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

k

Drift compensator

E[eα΄Ά] - 1 (ensures fair pricing)

dW

Brownian motion

Standard Wiener process

dN

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 history

  • param_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

LITVM_ORACLE_URL

https://oracle.the-undesirables.com

Override the API base URL

Local Development

export LITVM_ORACLE_URL=http://localhost:8402
litvm-tcg-oracle

On-Chain Contracts

Contract

Address

Purpose

MerklePriceOracle

0x96B124...170Cd

Daily Merkle root for 276K products

TCGPriceOracleV2

0x04a128...203072

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

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.

Report Bug Β· Request Feature

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

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