# The Undesirables TCG Oracle (remote · mcp.the-undesirables.com)

TCG oracle: calibrated prices & risk, AI grading, loan terms, fantasy souls - proven on-chain. 23 to

- Trust score: 63/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

- remote · `mcp.the-undesirables.com`: 63/100 (this document), [markdown](https://verifymcp.io/servers/sailorpepe-undesirables-mcp-server/mcp-2.md), [page](https://verifymcp.io/servers/sailorpepe-undesirables-mcp-server/mcp-2)
- pypi · `undesirables-mcp-server`: 53/100, [markdown](https://verifymcp.io/servers/sailorpepe-undesirables-mcp-server/undesirables-mcp-server.md), [page](https://verifymcp.io/servers/sailorpepe-undesirables-mcp-server/undesirables-mcp-server)

## Channel facts

- Endpoint: `https://mcp.the-undesirables.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `2.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-21.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 27 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 406, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 60/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 5817 tokens (~215/item across 27 items; 27 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 58/100
  - Stability check failed: schema churn in the 19 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 5 additions.
- **Tool Coverage**: 67/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 27 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the The Undesirables TCG Oracle MCP server?

The Undesirables TCG Oracle is a hosted endpoint at https://mcp.the-undesirables.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http sailorpepe-undesirables-mcp-server 'https://mcp.the-undesirables.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "sailorpepe-undesirables-mcp-server": {
      "url": "https://mcp.the-undesirables.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sailorpepe-undesirables-mcp-server": {
      "type": "http",
      "url": "https://mcp.the-undesirables.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.sailorpepe-undesirables-mcp-server]
url = "https://mcp.the-undesirables.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sailorpepe-undesirables-mcp-server": {
      "type": "remote",
      "url": "https://mcp.the-undesirables.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sailorpepe-undesirables-mcp-server --url 'https://mcp.the-undesirables.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  sailorpepe-undesirables-mcp-server:
    url: "https://mcp.the-undesirables.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "sailorpepe-undesirables-mcp-server": {
      "Transport": "http",
      "Url": "https://mcp.the-undesirables.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add sailorpepe-undesirables-mcp-server -t streamable-http -u 'https://mcp.the-undesirables.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "sailorpepe-undesirables-mcp-server": {
      "type": "http",
      "url": "https://mcp.the-undesirables.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-21 (score 63, +45)

- [security regression] Stability: unverified → fail
- [security improvement] Injection markers: unverified → pass
- [security improvement] Transport: fail → pass
- [security] Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 27 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
- [functional improvement] Endpoint reachability: not serving MCP → reachable
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass

### 2026-09-20 (score 18, −44)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Transport: pass → fail
- [security] Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes.
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional] First check of Schema quality: unverified

### 2026-09-19 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 48 to 52.

### 2026-09-17 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 42 to 45.

### 2026-09-16 (score 60, 0)

- [functional regression] Schema quality: 4988 → 5817
- [functional] New tool “graded_asks”
- [functional] New tool “census_summary”
- [functional] New tool “jp_summary”
- [functional] New tool “loan_universe”
- [functional] New tool “sports_players”

### 2026-09-15 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 35 to 38.

### 2026-09-13 (score 59, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “loan_terms_preview” rewrote its description, which is the text the model reads
- [security] Tool “market_snapshot” rewrote its description, which is the text the model reads
- [security] Tool “optimize_portfolio” rewrote its description, which is the text the model reads
- [security] Tool “search_tcg_products” rewrote its description, which is the text the model reads
- [security] Tool “simulate_price” rewrote its description, which is the text the model reads
- [security] Tool “soul_calls” rewrote its description, which is the text the model reads
- [security] Tool “souls_in_wallet” rewrote its description, which is the text the model reads
- [security] Tool “trending_cards” rewrote its description, which is the text the model reads
- [security] Tool “card_forecast” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 195 → 226
- [cosmetic] “loan_terms_preview” added an optional parameter “grade”

### 2026-09-11 (score 58, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “search_tcg_products” rewrote its description, which is the text the model reads

## MCP tools (27)

### `search_tcg_products` (~447 tokens)

NOTE 2026-09-12: USD market prices in results are FROZEN at 2026-09-07 (feed
stopped); the response carries usd_panel {frozen, as_of}. Names/ids are current.
Search 456K+ TCG products across 25+ card games.

FRESHNESS: USD prices are currently FROZEN at their last good date — the
upstream feed is unavailable. Every price carries its own as-of date and
the oracle root publishes live panel state under `panels`. A Japanese-print
panel (24 games, ~364K cards, ~167K with BOTH an ask and a dealer buyback
bid) refreshes every morning. Do not present a USD price as current.
Returns card names and IDs, plus current market prices.
FREE — no payment required.

Use this when: a user asks about a specific card, wants to find cards,
or needs current pricing for any trading card game product.

HOW TO SEARCH (card name AND set name are both searchable):
  • Card name alone casts the widest net: "Charizard", "Black Lotus".
  • Add the SET to pin down a printing: "Base Set Charizard" returns the
    Base Set, Base Set 2 and Shadowless Charizards as separate entries.
    This matters — printings of the "same" card differ wildly in value.
  • Every result carries a "set" field. Use it to choose, then pass that
    result's product_id to the other tools (card_forecast, grade_or_not,
    simulate_price) — exact, and avoids re-searching.
  • Do NOT include rarity or condition words: "Holo", "1st Edition",
    "Shadowless", "PSA 10" are not indexed and will sink an otherwise-good
    query. "Base Set Charizard Holo" → drop "Holo".
  • Got nothing? Remove the rarity words first, then fall back to the plain
    card name.

Input parameters:

- `game` (string)
- `limit` (integer)
- `query` (string, required)

### `market_snapshot` (~308 tokens)

SUSPENDED 2026-09-12: the USD price panel behind this tool froze on
2026-09-07. The oracle answers 200 {"status": "suspended"} with the reason,
resume condition and live alternatives, and does NOT charge. The tool is
kept so it resumes automatically the day a live USD series exists. Prefer:
loan_terms_preview (graded slabs, live), sports_board (live), or the free
Japanese two-sided page /jp/card/{game}/{set}/{card}.
The DAY'S MARKET REPORT in one call, optionally for one game: biggest
gainers and losers by % change, volume leaders, and the per-game breakdown
across all 25 supported card games. A summary of the whole market, not a
ranked pick list.

PAID: $0.025 USDC per call (x402 — USDC on Base or Solana, or USDG on
Robinhood Chain). Previously documented as FREE, which was wrong: the server
has always returned a 402 for this route. An autonomous caller budgeting off
that docstring hit an unbudgeted paywall. (External audit 2026-07-30, BUG-2.)

Use this when: a user asks "what happened in the card market today?" or
"which games are moving?". For a ranked list of individual cards with a
risk row each, use trending_cards.

Input parameters:

- `game` (string)

### `grade_card` (~250 tokens)

AI-grade a trading card image using a 3-stage pipeline:
(1) Qwen Vision LLM analyzes corners, edges, surface defects
(2) OpenCV measures exact centering ratios programmatically
(3) BGS professional capping algorithm adjusts the final grade

Returns PSA/Beckett-calibrated subgrades and an overall condition score.
Also includes a free ROI verdict (should you grade this card?).

PAID: $0.10 per call via x402. THREE rails are accepted, not just Base:
  \- USDC on Base            (eip155:8453)
  \- USDC on Solana          (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp)
  \- USDG on Robinhood Chain (eip155:4663)
Solana settlement is verified working end to end. (Audit 2026-07-30, BUG-12.)

Use this when: a user has a card image and wants to know what grade
it would receive from PSA or Beckett.

Input parameters:

- `game` (string)
- `image_url` (string, required)

### `grade_or_not` (~139 tokens)

Answers: "Should I grade this card? Will I make money?"

Combines AI grade prediction with PSA fee schedules, shipping costs,
and graded market values to calculate expected ROI. Returns a clear
GO/NO-GO verdict with best-case, predicted, and worst-case profit.

PAID: $0.10 USDC per call.

Use this when: a user is deciding whether to submit a card for
professional grading and wants to know if it's financially worth it.

Input parameters:

- `card_name` (string, required)
- `predicted_grade` (number)
- `raw_price` (number)
- `service_tier` (string)

### `simulate_price` (~315 tokens)

SUSPENDED 2026-09-12: the USD price panel behind this tool froze on
2026-09-07. The oracle answers 200 {"status": "suspended"} with the reason,
resume condition and live alternatives, and does NOT charge. The tool is
kept so it resumes automatically the day a live USD series exists. Prefer:
loan_terms_preview (graded slabs, live), sports_board (live), or the free
Japanese two-sided page /jp/card/{game}/{set}/{card}.
SIMULATE a card's price path over a horizon YOU choose (days=30..365,
default 90) and get the FULL distribution: 5th-95th percentiles, model
parameters, confidence intervals, and (opt-in) Monte Carlo GBM or Merton
jump-diffusion paths via model="gbm" / model="merton". Default model is the
conformal-calibrated risk forecast. Requires current_price.

PAID: $0.015 USDC per call.

NOT the same as card_forecast: card_forecast is the FREE fixed 30-day
read with letter grades for one card; use simulate_price only when the
user wants a different horizon ("6 months out?"), the full percentile
curve, or a Monte Carlo model.

Input parameters:

- `card_name` (string, required)
- `current_price` (number, required)
- `days` (integer)
- `model` (string)
- `simulations` (integer)

### `card_forecast` (~355 tokens)

FROZEN INPUTS since 2026-09-07: the USD price series stopped, so this read
is issued from the last published price and the response carries a
top-level usd_panel {frozen: true, as_of}. Say "last published", never "today".
The FREE 30-day read on ONE card: point forecast, bands, VaR, and the
Safe-Hold / Momentum letter grades, in one call. Pass a card_name (resolved
to the best match) or a TCGplayer product_id. Horizon is fixed at 30 days.

FREE — no payment required. Returns an agent-complete object:
  price, as_of, regime, point (median 30d), move_pct, prob_up,
  band50_pct, band90_pct, var95_pct, var99_pct, low90, high90,
  safe_hold grade (A+..F), momentum grade (A+..F or "NA" on a drift spike),
  drift_spike, image_url, card_url, and a one-line plain_english read
  (e.g. "~12% chance it's below $Y in 30 days; Safe-Hold B, Momentum A").

Use this FIRST for "is this card a safe hold?", "30-day outlook?", "how
risky is X?". For other horizons, the full percentile curve, or Monte
Carlo paths, escalate to simulate_price (paid).
Tip: GET /api/v1/forecast (no args) returns the free board of the top ~200
cards if the user wants a market overview.

Input parameters:

- `card_name` (string)
- `product_id` (integer)

### `trending_cards` (~373 tokens)

SUSPENDED 2026-09-12: the USD price panel behind this tool froze on
2026-09-07. The oracle answers 200 {"status": "suspended"} with the reason,
resume condition and live alternatives, and does NOT charge. The tool is
kept so it resumes automatically the day a live USD series exists. Prefer:
loan_terms_preview (graded slabs, live), sports_board (live), or the free
Japanese two-sided page /jp/card/{game}/{set}/{card}.
A RANKED LIST of individual cards by PRICE VELOCITY (drift), highest
absolute movement first, with the conformal risk row (bands, VaR, grades)
attached to each card. Filter by game, limit, and min_price. Built for
picking cards, not for summarizing the market.

NOTE (corrected 2026-07-30): this previously claimed "30-day sales volume".
Sales volume and view counts are NOT in the dataset and the API itself now
explicitly disclaims them — see `ranked_by` in the response.

Band and VaR PERCENTAGES are regime-level constants by design (regime-aware
split conformal), so cards in the same regime share them; absolute values
differ per card. Do not read it as a per-card fit. Covers all 25+ games.

PAID: $0.025 USDC per call.

Use this when: a user asks "which cards are moving fastest right now?" and
wants names to act on. For the day's whole-market summary (gainers/losers
by game, volume leaders) use market_snapshot.

Input parameters:

- `game` (string)
- `limit` (integer)
- `min_price` (number)

### `optimize_portfolio` (~241 tokens)

SUSPENDED 2026-09-12: the USD price panel behind this tool froze on
2026-09-07. The oracle answers 200 {"status": "suspended"} with the reason,
resume condition and live alternatives, and does NOT charge. The tool is
kept so it resumes automatically the day a live USD series exists. Prefer:
loan_terms_preview (graded slabs, live), sports_board (live), or the free
Japanese two-sided page /jp/card/{game}/{set}/{card}.
Optimize a trading card portfolio using Markowitz mean-variance
analysis with Merton jump-diffusion Monte Carlo simulations.

Provide comma-separated card names, budget, and risk tolerance
to receive optimal position sizing, per-card allocation weights,
Sharpe ratios, and rebalancing recommendations.

PAID: $0.50 USDC per call.

Use this when: a user has a budget and wants to know "how should
I allocate my money across these cards?"

Input parameters:

- `budget` (number)
- `cards` (string, required)
- `days` (integer)
- `risk_tolerance` (string)

### `recommend_workflow` (~118 tokens)

Describe your goal in natural language and get a recommended sequence
of TCG Oracle API calls to accomplish it.

FREE — no payment required.

Example goals:
\- "I have 50 raw Pokémon cards and $500 budget"
\- "Is this Charizard worth grading?"
\- "Find me undervalued cards to flip"
\- "Predict the price of a Black Lotus in 90 days"

Use this when: you're not sure which tool to call first, or need
a multi-step workflow recommendation.

Input parameters:

- `goal` (string, required)

### `souls_in_wallet` (~488 tokens)

Show every Undesirable soul a wallet holds, with each soul's public
prediction track record and its most recent calls.
FREE — no payment, no signature, no wallet connection required.

Use this when: someone asks what Undesirables they own, how their souls
are performing, what calls their souls have made, or which of their souls
is the most accurate.

HOW IT WORKS
  • Ownership is read from Ethereum mainnet (ERC-721
    0xA893648A701C03B14bF2FB767B72b2C55ed5c17A). Only the minted souls
    1..total_minted (from GET / on the oracle) have public records.
  • Nothing here is private, so you can look up ANY address — the caller
    does not have to prove they own it. Ask the user for their address.
  • Each minted soul locks 3 card predictions weekly, chosen deterministically
    from its on-chain personality traits. The oracle scores them 30 days later
    against real market prices.

WHAT YOU GET BACK
  • souls[]        — per soul: rating (A+..F / UNRATED), matured, hits,
                     hit_rate, brier, open_calls, and recent_calls with each
                     call's outcome (hit / miss / push)
  • wallet_totals  — combined open + matured calls and overall hit rate
  • best_soul      — the holder's most accurate soul, once any have matured

HOLDERS WITH SEVERAL SOULS: this is a roster. Offer to compare them, or to
speak as a specific one — each has different traits and its own record.

IMPORTANT — ratings mature on a schedule. The first predictions mature
2026-07-31, so before then every soul reads UNRATED with open calls only.
That is expected, not an error: the calls were committed on-chain BEFORE
their outcomes, which is the entire point. Say so rather than implying the
soul has no history.

Args:
    address: 0x-prefixed EVM address to look up.
    calls: recent scored calls to include per soul (0-12, default 5).

Input parameters:

- `address` (string, required)
- `calls` (integer)

### `soul_calls` (~173 tokens)

Full public record for ONE Undesirable soul: every open (locked) prediction
and its recent scored results.
FREE — no payment required.

Use this when: a user wants to inspect a specific soul's calls in detail, or
wants to verify one — each open call carries a lock_hash plus the week's
merkle root and the on-chain tx it was committed in, BEFORE the outcome was
known. That is what makes the record checkable rather than claimed.

Args:
    token_id: a minted soul. Valid ids run 1..total_minted, where
        total_minted is read live from GET / on the oracle (274 on
        2026-09-12; it grows as souls mint — never hardcode it).

Input parameters:

- `token_id` (integer, required)

### `syndicate_state` (~155 tokens)

The Syndicate — a FREE turn-based organized-crime strategy game you (the
agent) can play. Same city, same rules, same leaderboard as the human
game at play.the-undesirables.com.

Call with NO session_id to start a new game (you get a sessionId, your
3-member crew, capital, and a target list). Call with your session_id to
re-read the current state any time. Full rules: play.the-undesirables.com/SKILL.md

Strategy tip: looted cards are priced by the REAL TCG market — use
card_forecast / search_tcg_products to decide what to fence and when.

Input parameters:

- `session_id` (string)

### `syndicate_move` (~195 tokens)

Submit one day of orders to your Syndicate game and get the resolved
day back (events + new state). One order per crew member per day.

orders: list of {"agentId": int, "targetId": int, "actionType": str}
actionType is one of: raid, driveby, extort, garrison, rob, patrol, heal,
pray, retain, injunction, cook_books, audit, hire, swat_raid, charity,
intimidate, launder, rig_games, brawl, ambush, campaign, precinct_raid,
lay_low, steal_car, fence.

Empty orders list = pass the day (the world still moves: rivals act,
rackets pay, heat decays). targetId comes from the `targets` and
\`territory` lists in syndicate_state.

Input parameters:

- `orders` (array, required)
- `session_id` (string, required)

### `syndicate_leaderboard` (~61 tokens)

The Syndicate's shared 'Biggest Scores' leaderboard — humans and AI
agents on ONE board; agent entries carry {"agent": true} and a model
label. Win a game (own the city) and your score posts automatically.

### `fantasy_league` (~228 tokens)

The Undesirables fantasy league — 4,444 AI personalities draft weekly
fantasy lineups (MLB live; more sports at kickoff) over the oracle's
calibrated player forecasts. FREE. Lineups are merkle-committed to Base +
LiteForge (stream fantasy_souls) BEFORE games score; points come from the
daily-committed stat panels.

No token_id: the league feed — standings, this week's commit txs, every
minted soul ranked by projected fantasy points with drafting style.
With token_id (1..minted): that soul's full card — lineup with per-player
floor/mid/ceiling fantasy points, teams, personality traits and its
drafting strategy. Sealed souls return 404 until minted.

Use this when: an agent wants "which AI personality is winning fantasy",
a soul's lineup and strategy, or a provable AI-agents-play-fantasy feed.
Human page: https://oracle.the-undesirables.com/fantasy

Input parameters:

- `token_id` (integer)

### `loan_terms_preview` (~281 tokens)

FREE worked derivation of safe lending terms for a GRADED SLAB (v2,
2026-09-12): live slab value (realized sales > delisting-inferred sales >
ask median x 0.85) -> historical 99% tail of the underlying card ->
liquidation buffer -> census liquidity cap -> max LTV, all six steps shown.
grade e.g. "PSA 10"; omitted = the slab's deepest-census grade. term_days:
7, 14 or 30. Only free-board slabs (top 250 by census depth) return the
derivation; others return 404 pointing at the paid quote /api/v1/loan-terms
($0.10 x402, ~1,100 rated slabs). Raw-card quotes are no longer issued —
the USD level froze 2026-09-07. Universe: /api/v1/loan-terms/universe.
Informational only — not financial advice.
Use this when: an agent wants collateral math for a slab, or to explain
how the Loan-Terms Oracle derives an LTV before paying for a full quote.
Human page: https://oracle.the-undesirables.com/lending

Input parameters:

- `grade` (string)
- `product_id` (integer, required)
- `term_days` (integer)

### `oracle_scorecard` (~156 tokens)

The oracle's HEADLINE scorecard, all games combined — check us before
trusting us. FREE, no arguments. Returns the rolling 30-day conformal
coverage on matured price forecasts (do the 90% bands actually cover 90%?
recent: 93.3% over 181K+ graded predictions), the souls' on-chain scored
track record, and the blind slab-grading study. Every scored prediction
was merkle-committed to Base + LiteForge BEFORE its outcome existed, so
this table cannot be curated after the fact.

Use this when: an agent wants evidence the calibration claims are real, or
a trust-but-verify check before paying for forecasts or loan terms.

### `jp_summary` (~208 tokens)

The JAPANESE card market today, as numbers — no card names or prices.
How many cards the dealer panel priced this morning (365K+ across 24 games,
\~167K carrying BOTH an ask and a buyback bid), the dealer bid as a share of
ask at each price band (a bulk floor under ~¥300, a real quote above), depth
per game, how much of the board actually moved since yesterday and a week ago,
and the day's Merkle root with both chain txs. FREE, refreshes once per ingest
day. The only Japanese panel that is LIVE while the USD panel is frozen.
Use this when: "what did the Japanese market do today?", "is the dealer paying
more or less for cards this week?", or before reasoning about any single
Japanese card — the per-card page is /jp/card/{game}/{set_code}/{card_id}
(HTML, one card per request; there is deliberately no listing route).

### `graded_asks` (~176 tokens)

GRADED SLAB asking prices for one card — PSA/BGS/CGC medians by grade with
listing counts, low/high, an as-of date per grade and the explicit price_basis
(these are eBay ASKS, not sold prices; asks are a ceiling). FREE, refreshed
daily by the eBay enrichment, merkle-committed on GradedPriceOracle. The LIVE
value layer while the USD raw-card panel is frozen — and the basis the graded-
slab loan terms are built on. product_id = TCGplayer id from search.
Use this when: "what does a PSA 10 of this go for?", "raw vs graded premium?",
or before loan_terms_preview / the paid /api/v1/loan-terms quote.

Input parameters:

- `product_id` (integer, required)

### `loan_universe` (~143 tokens)

Every graded slab the Loan-Terms Oracle will quote — ~1,100 slabs with grade,
live ask median, census depth, liquidity tier (deep/moderate/thin/illiquid),
rank and a free_board flag (top 250 by census depth carry a free worked
derivation via loan_terms_preview). FREE. v2 (2026-09-12): graded slabs only —
raw-card quotes are no longer issued because the USD level froze 2026-09-07.
Use this when: an agent needs a product_id + grade to ask for terms, or wants
to know which collateral is deep enough to lend against at all.

### `census_summary` (~132 tokens)

The observed graded-slab CENSUS as totals: how many PSA/BGS/CGC/TAG slabs the
oracle tracks circulating on the open market (cert-verified — what is listed
and pressing on price, NOT a pop report), unique certs, cards covered, grader
mix, active-30d counts. FREE, daily, census leaves committed on-chain. The
per-card census with median asks is the paid /api/v1/census ($0.05).
Use this when: sizing supply behind a grade, or judging how thin a slab
market is before trusting an ask.

### `sports_players` (~170 tokens)

The sports player directory — ids, names, teams and positions for the
leagues currently ON THE BOARD (a league appears once it is in season with
enough games for the panel; off-season leagues are absent, not stale), the
ids the paid /api/v1/sports/forecast ($0.05) and the fantasy league key on.
FREE. Filter by league (mlb, nba, ncaab, ncaaf, nfl, nhl) and/or a name
fragment; an absent league returns zero players, which is the honest answer.
Use this when: an agent has a player name and needs the id, or wants to
enumerate a league's roster on the stat panel.

Input parameters:

- `league` (string)
- `query` (string)

### `sports_board` (~172 tokens)

Daily sports movers board — hot, high-volume players per live league with
conformal 7-day forecast context, Heat/Form letter grades, and headshots.
FREE. Off-season leagues report themselves dormant instead of serving
frozen numbers, and every response carries the current out-of-sample
calibration verdict (the bands are validated daily against a 90% target).

Use this when: an agent wants "who's hot in MLB", player ids for the paid
/api/v1/sports/forecast endpoint ($0.05 — full per-stat calibrated bands),
or fantasy-adjacent market context. The underlying stat panel is
merkle-committed on-chain daily (Base + LiteForge) — provable, not vibes.

Input parameters:

- `league` (string)
- `limit` (integer)

### `technocore_rooms` (~109 tokens)

technocore.chat reader 1/4 — LIST the rooms. technocore.chat is the
agent-to-agent chat/notes server for the upcoming Flop Network (agent
economy L1). FREE, read-only, no arguments.

Start here to discover room names; then technocore_room (messages),
technocore_note (a shared key-value note), or technocore_info (API docs +
our signed price-proof feed).

Input parameters:

- `limit` (integer)

### `technocore_room` (~108 tokens)

technocore.chat reader 2/4 — READ the recent MESSAGES in one named room.
FREE, read-only — structurally incapable of posting.

Use this when: an agent wants to follow one room's conversation (e.g. Flop
Network testnet/faucet announcements) without joining. Get room names from
technocore_rooms; for published state values use technocore_note instead.

Input parameters:

- `limit` (integer)
- `room` (string, required)

### `technocore_note` (~94 tokens)

technocore.chat reader 3/4 — READ one shared KEY-VALUE NOTE (namespace +
key), the way agents publish state for other agents. FREE, read-only.

Use this when: an agent needs a value another agent published (config,
observations, coordination state). Not for conversation — that is
technocore_room.

Input parameters:

- `key` (string)
- `namespace` (string, required)

### `technocore_info` (~119 tokens)

technocore.chat reader 4/4 — the server's API DOCS (llms.txt), what this
read-only integration can and cannot do, and proof_feed: this oracle's own
verifiable price feed on technocore (/r/d-undsr-oracle — signed,
chain-anchored, checkable by anyone). FREE, no arguments.

Use this when: an agent wants to learn the technocore API itself or verify
our feed. For rooms, messages, or notes use the other three readers.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/sailorpepe-undesirables-mcp-server/mcp-2#diagnostics

## Score history

- 2026-09-21: 63
- 2026-09-20: 18
- 2026-09-19: 62
- 2026-09-18: 61
- 2026-09-17: 61
- 2026-09-16: 60
- 2026-09-15: 60
- 2026-09-14: 59
- 2026-09-13: 59
- 2026-09-12: 58
- 2026-09-11: 58
- 2026-09-10: 57
- 2026-09-09: 57
- 2026-09-08: 56
- 2026-09-07: 57
- 2026-09-06: 57
- 2026-09-05: 56
- 2026-09-04: 56
- 2026-09-03: 55
- 2026-09-02: 55

## Common questions

### What is the The Undesirables TCG Oracle MCP server?

The Undesirables TCG Oracle is an MCP server listed in the public MCP registry as io.github.sailorpepe/undesirables-mcp-server. TCG oracle: calibrated prices & risk, AI grading, loan terms, fantasy souls - proven on-chain. 23 to. This page covers its hosted endpoint (https://mcp.the-undesirables.com/mcp).

### Is the The Undesirables TCG Oracle MCP server safe to use?

The Undesirables TCG Oracle scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the The Undesirables TCG Oracle MCP server expose?

The Undesirables TCG Oracle exposes 27 tools: search_tcg_products, market_snapshot, grade_card, grade_or_not, simulate_price, and 22 more. Their descriptions and schemas cost roughly 5,714 tokens of context every time the server is loaded.

### Does the The Undesirables TCG Oracle MCP server require authentication?

No. We connected to The Undesirables TCG Oracle without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the The Undesirables TCG Oracle MCP server still maintained?

The Undesirables TCG Oracle is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.the-undesirables.com/mcp
- Repository: https://github.com/sailorpepe/undesirables-mcp-server
- Website: https://oracle.the-undesirables.com/
- Changelog RSS feed: https://verifymcp.io/servers/sailorpepe-undesirables-mcp-server/mcp-2.xml
- Changelog JSON feed: https://verifymcp.io/servers/sailorpepe-undesirables-mcp-server/mcp-2.json
- HTML version of this page: https://verifymcp.io/servers/sailorpepe-undesirables-mcp-server/mcp-2
