{"name":"io.github.sailorpepe/undesirables-mcp-server","slug":"sailorpepe-undesirables-mcp-server","title":"The Undesirables TCG Oracle","description":"TCG oracle: calibrated prices & risk, AI grading, loan terms, fantasy souls - proven on-chain. 23 to","url":"https://mcp.market/server/sailorpepe-undesirables-mcp-server","rating":null,"grade":"B","score":84,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":38,"stars":3,"forks":1,"downloads_week":61,"last_push_at":"2026-10-02T21:35:41.000Z","license":"NOASSERTION"},"uptime":{"percent":96,"checks":28,"ok":27,"last_checked_at":"2026-11-05T13:00:30.783Z","last_ok_at":"2026-11-05T13:00:30.783Z","latency_ms":67},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/sailorpepe/undesirables-mcp-server","website":"https://oracle.the-undesirables.com","version":"2.1.0","remotes":[{"type":"streamable-http","url":"https://mcp.the-undesirables.com/mcp"}],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"undesirables-mcp-server","version":"2.1.0","runtimeHint":"uvx","transport":{"type":"stdio"}}],"tools":[{"name":"card_forecast","description":"\nFROZEN INPUTS since 2026-09-07: the USD price series stopped, so this read\nis issued from the last published price and the response carries a\ntop-level usd_panel {frozen: true, as_of}. Say \"last published\", never \"today\".\nThe FREE 30-day read on ONE card: point forecast, bands, VaR, and the\nSafe-Hold / Momentum letter grades, in one call. Pass a card_name (resolved\nto the best match) or a TCGplayer product_id. Horizon is fixed at 30 days.\n\nFREE — no payment required. Returns an agent-complete object:\n  price, as_of, regime, point (median 30d), move_pct, prob_up,\n  band50_pct, band90_pct, var95_pct, var99_pct, low90, high90,\n  safe_hold grade (A+..F), momentum grade (A+..F or \"NA\" on a drift spike),\n  drift_spike, image_url, card_url, and a one-line plain_english read\n  (e.g. \"~12% chance it's below $Y in 30 days; Safe-Hold B, Momentum A\").\n\nUse this FIRST for \"is this card a safe hold?\", \"30-day outlook?\", \"how\nrisky is X?\". For other horizons, the full percentile curve, or Monte\nCarlo paths, escalate to simulate_price (paid).\nTip: GET /api/v1/forecast (no args) returns the free board of the top ~200\ncards if the user wants a market overview.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"card_name":{"default":"","title":"Card Name","type":"string"},"product_id":{"default":0,"title":"Product Id","type":"integer"}},"title":"card_forecastArguments"}},{"name":"census_summary","description":"\nThe observed graded-slab CENSUS as totals: how many PSA/BGS/CGC/TAG slabs the\noracle tracks circulating on the open market (cert-verified — what is listed\nand pressing on price, NOT a pop report), unique certs, cards covered, grader\nmix, active-30d counts. FREE, daily, census leaves committed on-chain. The\nper-card census with median asks is /api/v1/census (free).\nUse this when: sizing supply behind a grade, or judging how thin a slab\nmarket is before trusting an ask.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"census_summaryArguments"}},{"name":"fantasy_league","description":"\nThe Undesirables fantasy league — 4,444 AI personalities draft weekly\nfantasy lineups (MLB live; more sports at kickoff) over the oracle's\ncalibrated player forecasts. FREE. Lineups are merkle-committed to Base +\nLiteForge (stream fantasy_souls) BEFORE games score; points come from the\ndaily-committed stat panels.\n\nNo token_id: the league feed — standings, this week's commit txs, every\nminted soul ranked by projected fantasy points with drafting style.\nWith token_id (1..minted): that soul's full card — lineup with per-player\nfloor/mid/ceiling fantasy points, teams, personality traits and its\ndrafting strategy. Sealed souls return 404 until minted.\n\nUse this when: an agent wants \"which AI personality is winning fantasy\",\na soul's lineup and strategy, or a provable AI-agents-play-fantasy feed.\nHuman page: https://oracle.the-undesirables.com/fantasy\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token_id":{"default":0,"title":"Token Id","type":"integer"}},"title":"fantasy_leagueArguments"}},{"name":"graded_asks","description":"\nGRADED SLAB asking prices for one card — PSA/BGS/CGC medians by grade with\nlisting counts, low/high, an as-of date per grade and the explicit price_basis\n(these are eBay ASKS, not sold prices; asks are a ceiling). FREE, refreshed\ndaily by the eBay enrichment, merkle-committed on GradedPriceOracle. The LIVE\nvalue layer while the USD raw-card panel is frozen — and the basis the graded-\nslab loan terms are built on. product_id = TCGplayer id from search.\nUse this when: \"what does a PSA 10 of this go for?\", \"raw vs graded premium?\",\nor before loan_terms_preview / the free /api/v1/loan-terms quote.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"product_id":{"title":"Product Id","type":"integer"}},"required":["product_id"],"title":"graded_asksArguments"}},{"name":"jp_summary","description":"\nThe JAPANESE card market today, as numbers — no card names or prices.\nHow many cards the dealer panel priced this morning (365K+ across 24 games,\n~167K carrying BOTH an ask and a buyback bid), the dealer bid as a share of\nask at each price band (a bulk floor under ~¥300, a real quote above), depth\nper game, how much of the board actually moved since yesterday and a week ago,\nand the day's Merkle root with both chain txs. FREE, refreshes once per ingest\nday. The only Japanese panel that is LIVE while the USD panel is frozen.\nUse this when: \"what did the Japanese market do today?\", \"is the dealer paying\nmore or less for cards this week?\", or before reasoning about any single\nJapanese card — the per-card page is /jp/card/{game}/{set_code}/{card_id}\n(HTML, one card per request; there is deliberately no listing route).\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"jp_summaryArguments"}},{"name":"loan_terms_preview","description":"\nFREE worked derivation of safe lending terms for a GRADED SLAB (v2,\n2026-09-12): live slab value (realized sales > delisting-inferred sales >\nask median x 0.85) -> historical 99% tail of the underlying card ->\nliquidation buffer -> census liquidity cap -> max LTV, all six steps shown.\ngrade e.g. \"PSA 10\"; omitted = the slab's deepest-census grade. term_days:\n7, 14 or 30. Only free-board slabs (top 250 by census depth) return the\nderivation; others return 404 pointing at the paid quote /api/v1/loan-terms\n($0.10 x402, ~1,100 rated slabs). Raw-card quotes are no longer issued —\nthe USD level froze 2026-09-07. Universe: /api/v1/loan-terms/universe.\nInformational only — not financial advice.\nUse this when: an agent wants collateral math for a slab, or to explain\nhow the Loan-Terms Oracle derives an LTV before paying for a full quote.\nHuman page: https://oracle.the-undesirables.com/lending\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"product_id":{"title":"Product Id","type":"integer"},"term_days":{"default":30,"title":"Term Days","type":"integer"},"grade":{"default":"","title":"Grade","type":"string"}},"required":["product_id"],"title":"loan_terms_previewArguments"}},{"name":"loan_universe","description":"\nThe graded slabs the Loan-Terms Oracle will quote, best collateral first —\ngrade, live ask median, census depth, liquidity tier (deep/moderate/thin/\nilliquid), rank, and a free_board flag (top 250 by census depth carry a free\nworked derivation via loan_terms_preview). FREE. v2 (2026-09-12): graded\nslabs only — raw-card quotes stopped when the USD level froze 2026-09-07.\n\nReturns a PAGE, not the whole book: the full universe is ~1,400 slabs and\nserialises to ~500 KB, which would swamp an agent's context in one call.\n`total_matching` and `returned` tell you what you are looking at.\n\nlimit           rows to return (default 50, max 500)\ntier            'deep' | 'moderate' | 'thin' | 'illiquid'\nfree_board_only True to keep only slabs with a free worked derivation\nmin_value_usd   drop slabs whose ask median is below this (0 = no floor)\n\nUse this when: an agent needs a product_id + grade to ask for terms, or wants\nto know which collateral is deep enough to lend against at all.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"default":50,"title":"Limit","type":"integer"},"tier":{"default":"","title":"Tier","type":"string"},"free_board_only":{"default":false,"title":"Free Board Only","type":"boolean"},"min_value_usd":{"default":0,"title":"Min Value Usd","type":"number"}},"title":"loan_universeArguments"}},{"name":"market_snapshot","description":"\nSUSPENDED 2026-09-12: the USD price panel behind this tool froze on\n2026-09-07. The oracle answers 200 {\"status\": \"suspended\"} with the reason,\nresume condition and live alternatives, and does NOT charge. The tool is\nkept so it resumes automatically the day a live USD series exists. Prefer:\nloan_terms_preview (graded slabs, live), sports_board (live), or the free\nJapanese two-sided page /jp/card/{game}/{set}/{card}.\nThe DAY'S MARKET REPORT in one call, optionally for one game: biggest\ngainers and losers by % change, volume leaders, and the per-game breakdown\nacross all 25 supported card games. A summary of the whole market, not a\nranked pick list.\n\nPAID: $0.025 USDC per call (x402 — USDC on Base or Solana, or USDG on\nRobinhood Chain). Previously documented as FREE, which was wrong: the server\nhas always returned a 402 for this route. An autonomous caller budgeting off\nthat docstring hit an unbudgeted paywall. (External audit 2026-07-30, BUG-2.)\n\nUse this when: a user asks \"what happened in the card market today?\" or\n\"which games are moving?\". For a ranked list of individual cards with a\nrisk row each, use trending_cards.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"game":{"default":"","title":"Game","type":"string"}},"title":"market_snapshotArguments"}},{"name":"optimize_portfolio","description":"\nSUSPENDED 2026-09-12: the USD price panel behind this tool froze on\n2026-09-07. The oracle answers 200 {\"status\": \"suspended\"} with the reason,\nresume condition and live alternatives, and does NOT charge. The tool is\nkept so it resumes automatically the day a live USD series exists. Prefer:\nloan_terms_preview (graded slabs, live), sports_board (live), or the free\nJapanese two-sided page /jp/card/{game}/{set}/{card}.\nOptimize a trading card portfolio using Markowitz mean-variance\nanalysis with Merton jump-diffusion Monte Carlo simulations.\n\nProvide comma-separated card names, budget, and risk tolerance\nto receive optimal position sizing, per-card allocation weights,\nSharpe ratios, and rebalancing recommendations.\n\nPAID: $0.50 USDC per call.\n\nUse this when: a user has a budget and wants to know \"how should\nI allocate my money across these cards?\"\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"cards":{"title":"Cards","type":"string"},"budget":{"default":1000,"title":"Budget","type":"number"},"risk_tolerance":{"default":"moderate","title":"Risk Tolerance","type":"string"},"days":{"default":90,"title":"Days","type":"integer"}},"required":["cards"],"title":"optimize_portfolioArguments"}},{"name":"oracle_scorecard","description":"\nThe oracle's HEADLINE scorecard, all games combined — check us before\ntrusting us. FREE, no arguments. Returns the rolling 30-day conformal\ncoverage on matured price forecasts (do the 90% bands actually cover 90%?\nrecent: 93.3% over 181K+ graded predictions), the souls' on-chain scored\ntrack record, and the blind slab-grading study. Every scored prediction\nwas merkle-committed to Base + LiteForge BEFORE its outcome existed, so\nthis table cannot be curated after the fact.\n\nUse this when: an agent wants evidence the calibration claims are real, or\na trust-but-verify check before paying for forecasts or loan terms.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"oracle_scorecardArguments"}},{"name":"recommend_workflow","description":"\nDescribe your goal in natural language and get a recommended sequence\nof TCG Oracle API calls to accomplish it.\n\nFREE — no payment required.\n\nExample goals:\n- \"I have 50 raw Pokémon cards and $500 budget\"\n- \"Is this Charizard worth grading?\"\n- \"Find me undervalued cards to flip\"\n- \"Predict the price of a Black Lotus in 90 days\"\n\nUse this when: you're not sure which tool to call first, or need\na multi-step workflow recommendation.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"goal":{"title":"Goal","type":"string"}},"required":["goal"],"title":"recommend_workflowArguments"}},{"name":"search_tcg_products","description":"\nNOTE 2026-09-12: USD market prices in results are FROZEN at 2026-09-07 (feed\nstopped); the response carries usd_panel {frozen, as_of}. Names/ids are current.\nSearch 456K+ TCG products across 25+ card games.\n\nFRESHNESS: USD prices are currently FROZEN at their last good date — the\nupstream feed is unavailable. Every price carries its own as-of date and\nthe oracle root publishes live panel state under `panels`. A Japanese-print\npanel (24 games, ~364K cards, ~167K with BOTH an ask and a dealer buyback\nbid) refreshes every morning. Do not present a USD price as current.\nReturns card names and IDs, plus current market prices.\nFREE — no payment required.\n\nUse this when: a user asks about a specific card, wants to find cards,\nor needs current pricing for any trading card game product.\n\nHOW TO SEARCH (card name AND set name are both searchable):\n  • Card name alone casts the widest net: \"Charizard\", \"Black Lotus\".\n  • Add the SET to pin down a printing: \"Base Set Charizard\" returns the\n    Base Set, Base Set 2 and Shadowless Charizards as separate entries.\n    This matters — printings of the \"same\" card differ wildly in value.\n  • Every result carries a \"set\" field. Use it to choose, then pass that\n    result's product_id to the other tools (card_forecast, grade_or_not,\n    simulate_price) — exact, and avoids re-searching.\n  • Do NOT include rarity or condition words: \"Holo\", \"1st Edition\",\n    \"Shadowless\", \"PSA 10\" are not indexed and will sink an otherwise-good\n    query. \"Base Set Charizard Holo\" → drop \"Holo\".\n  • Got nothing? Remove the rarity words first, then fall back to the plain\n    card name.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"title":"Query","type":"string"},"game":{"default":"","title":"Game","type":"string"},"limit":{"default":10,"title":"Limit","type":"integer"}},"required":["query"],"title":"search_tcg_productsArguments"}},{"name":"simulate_price","description":"\nSUSPENDED 2026-09-12: the USD price panel behind this tool froze on\n2026-09-07. The oracle answers 200 {\"status\": \"suspended\"} with the reason,\nresume condition and live alternatives, and does NOT charge. The tool is\nkept so it resumes automatically the day a live USD series exists. Prefer:\nloan_terms_preview (graded slabs, live), sports_board (live), or the free\nJapanese two-sided page /jp/card/{game}/{set}/{card}.\nSIMULATE a card's price path over a horizon YOU choose (days=30..365,\ndefault 90) and get the FULL distribution: 5th-95th percentiles, model\nparameters, confidence intervals, and (opt-in) Monte Carlo GBM or Merton\njump-diffusion paths via model=\"gbm\" / model=\"merton\". Default model is the\nconformal-calibrated risk forecast. Requires current_price.\n\nPAID: $0.015 USDC per call.\n\nNOT the same as card_forecast: card_forecast is the FREE fixed 30-day\nread with letter grades for one card; use simulate_price only when the\nuser wants a different horizon (\"6 months out?\"), the full percentile\ncurve, or a Monte Carlo model.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"card_name":{"title":"Card Name","type":"string"},"current_price":{"title":"Current Price","type":"number"},"model":{"default":"conformal","title":"Model","type":"string"},"days":{"default":90,"title":"Days","type":"integer"},"simulations":{"default":20000,"title":"Simulations","type":"integer"}},"required":["card_name","current_price"],"title":"simulate_priceArguments"}},{"name":"soul_calls","description":"\nFull public record for ONE Undesirable soul: every open (locked) prediction\nand its recent scored results.\nFREE — no payment required.\n\nUse this when: a user wants to inspect a specific soul's calls in detail, or\nwants to verify one — each open call carries a lock_hash plus the week's\nmerkle root and the on-chain tx it was committed in, BEFORE the outcome was\nknown. That is what makes the record checkable rather than claimed.\n\nArgs:\n    token_id: a minted soul. Valid ids run 1..total_minted, where\n        total_minted is read live from GET / on the oracle (274 on\n        2026-09-12; it grows as souls mint — never hardcode it).\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token_id":{"title":"Token Id","type":"integer"}},"required":["token_id"],"title":"soul_callsArguments"}},{"name":"souls_in_wallet","description":"\nShow every Undesirable soul a wallet holds, with each soul's public\nprediction track record and its most recent calls.\nFREE — no payment, no signature, no wallet connection required.\n\nUse this when: someone asks what Undesirables they own, how their souls\nare performing, what calls their souls have made, or which of their souls\nis the most accurate.\n\nHOW IT WORKS\n  • Ownership is read from Ethereum mainnet (ERC-721\n    0xA893648A701C03B14bF2FB767B72b2C55ed5c17A). Only the minted souls\n    1..total_minted (from GET / on the oracle) have public records.\n  • Nothing here is private, so you can look up ANY address — the caller\n    does not have to prove they own it. Ask the user for their address.\n  • Each minted soul locks 3 card predictions weekly, chosen deterministically\n    from its on-chain personality traits. The oracle scores them 30 days later\n    against real market prices.\n\nWHAT YOU GET BACK\n  • souls[]        — per soul: rating (A+..F / UNRATED), matured, hits,\n                     hit_rate, brier, open_calls, and recent_calls with each\n                     call's outcome (hit / miss / push)\n  • wallet_totals  — combined open + matured calls and overall hit rate\n  • best_soul      — the holder's most accurate soul, once any have matured\n\nHOLDERS WITH SEVERAL SOULS: this is a roster. Offer to compare them, or to\nspeak as a specific one — each has different traits and its own record.\n\nIMPORTANT — records come in seasons. Season 1 (USD card board) is closed:\nits calls matured 07-31..08-09, and later USD calls are VOID (not misses)\nbecause the USD price panel froze 2026-09-07. Season 2 (Japanese dealer\nboard) locks weekly from 2026-09-14; its first calls mature 2026-10-14, so\nnewer souls may read UNRATED with open calls only. That is expected: every\ncall was committed on-chain BEFORE its outcome. Judge `skill` (hit rate minus\nthe best constant call on the soul's own picks), not raw hit rate.\n\nArgs:\n    address: 0x-prefixed EVM address to look up.\n    calls: recent scored calls to include per soul (0-12, default 5).\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"title":"Address","type":"string"},"calls":{"default":5,"title":"Calls","type":"integer"}},"required":["address"],"title":"souls_in_walletArguments"}},{"name":"sports_board","description":"\nDaily sports movers board — hot, high-volume players per live league with\nconformal 7-day forecast context, Heat/Form letter grades, and headshots.\nFREE. Off-season leagues report themselves dormant instead of serving\nfrozen numbers, and every response carries the current out-of-sample\ncalibration verdict (the bands are validated daily against a 90% target).\n\nUse this when: an agent wants \"who's hot in MLB\", player ids for the paid\n/api/v1/sports/forecast endpoint (free for MLB, $0.05 other leagues — full per-stat calibrated bands),\nor fantasy-adjacent market context. The underlying stat panel is\nmerkle-committed on-chain daily (Base + LiteForge) — provable, not vibes.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"league":{"default":"","title":"League","type":"string"},"limit":{"default":10,"title":"Limit","type":"integer"}},"title":"sports_boardArguments"}},{"name":"sports_players","description":"\nThe sports player directory — ids, names, teams and positions for the\nleagues currently ON THE BOARD (a league appears once it is in season with\nenough games for the panel; off-season leagues are absent, not stale), the\nids /api/v1/sports/forecast (free for MLB, $0.05 other leagues) and the fantasy league key on.\nFREE. Filter by league (mlb, nba, ncaab, ncaaf, nfl, nhl) and/or a name\nfragment; an absent league returns zero players, which is the honest answer.\nUse this when: an agent has a player name and needs the id, or wants to\nenumerate a league's roster on the stat panel.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"league":{"default":"","title":"League","type":"string"},"query":{"default":"","title":"Query","type":"string"}},"title":"sports_playersArguments"}},{"name":"syndicate_leaderboard","description":"\nThe Syndicate's shared 'Biggest Scores' leaderboard — humans and AI\nagents on ONE board; agent entries carry {\"agent\": true} and a model\nlabel. Win a game (own the city) and your score posts automatically.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"syndicate_leaderboardArguments"}},{"name":"syndicate_move","description":"\nSubmit one day of orders to your Syndicate game and get the resolved\nday back (events + new state). One order per crew member per day.\n\norders: list of {\"agentId\": int, \"targetId\": int, \"actionType\": str}\nactionType is one of: raid, driveby, extort, garrison, rob, patrol, heal,\npray, retain, injunction, cook_books, audit, hire, swat_raid, charity,\nintimidate, launder, rig_games, brawl, ambush, campaign, precinct_raid,\nlay_low, steal_car, fence.\n\nEmpty orders list = pass the day (the world still moves: rivals act,\nrackets pay, heat decays). targetId comes from the `targets` and\n`territory` lists in syndicate_state.\n","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"session_id":{"title":"Session Id","type":"string"},"orders":{"items":{},"title":"Orders","type":"array"}},"required":["session_id","orders"],"title":"syndicate_moveArguments"}},{"name":"syndicate_state","description":"\nThe Syndicate — a FREE turn-based organized-crime strategy game you (the\nagent) can play. Same city, same rules, same leaderboard as the human\ngame at play.the-undesirables.com.\n\nCall with NO session_id to start a new game (you get a sessionId, your\n3-member crew, capital, and a target list). Call with your session_id to\nre-read the current state any time. Full rules: play.the-undesirables.com/SKILL.md\n\nStrategy tip: looted cards are priced by the REAL TCG market — use\ncard_forecast / search_tcg_products to decide what to fence and when.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"session_id":{"default":"","title":"Session Id","type":"string"}},"title":"syndicate_stateArguments"}},{"name":"technocore_info","description":"\ntechnocore.chat reader 4/4 — the server's API DOCS (llms.txt), what this\nread-only integration can and cannot do, and proof_feed: this oracle's own\nverifiable price feed on technocore (/r/d-undsr-oracle — signed,\nchain-anchored, checkable by anyone). FREE, no arguments.\n\nUse this when: an agent wants to learn the technocore API itself or verify\nour feed. For rooms, messages, or notes use the other three readers.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"technocore_infoArguments"}},{"name":"technocore_note","description":"\ntechnocore.chat reader 3/4 — READ one shared KEY-VALUE NOTE (namespace +\nkey), the way agents publish state for other agents. FREE, read-only.\n\nUse this when: an agent needs a value another agent published (config,\nobservations, coordination state). Not for conversation — that is\ntechnocore_room.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"namespace":{"title":"Namespace","type":"string"},"key":{"default":"","title":"Key","type":"string"}},"required":["namespace"],"title":"technocore_noteArguments"}},{"name":"technocore_room","description":"\ntechnocore.chat reader 2/4 — READ the recent MESSAGES in one named room.\nFREE, read-only — structurally incapable of posting.\n\nUse this when: an agent wants to follow one room's conversation (e.g. Flop\nNetwork testnet/faucet announcements) without joining. Get room names from\ntechnocore_rooms; for published state values use technocore_note instead.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"room":{"title":"Room","type":"string"},"limit":{"default":20,"title":"Limit","type":"integer"}},"required":["room"],"title":"technocore_roomArguments"}},{"name":"technocore_rooms","description":"\ntechnocore.chat reader 1/4 — LIST the rooms. technocore.chat is the\nagent-to-agent chat/notes server for the upcoming Flop Network (agent\neconomy L1). FREE, read-only, no arguments.\n\nStart here to discover room names; then technocore_room (messages),\ntechnocore_note (a shared key-value note), or technocore_info (API docs +\nour signed price-proof feed).\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"default":50,"title":"Limit","type":"integer"}},"title":"technocore_roomsArguments"}},{"name":"trending_cards","description":"\nSUSPENDED 2026-09-12: the USD price panel behind this tool froze on\n2026-09-07. The oracle answers 200 {\"status\": \"suspended\"} with the reason,\nresume condition and live alternatives, and does NOT charge. The tool is\nkept so it resumes automatically the day a live USD series exists. Prefer:\nloan_terms_preview (graded slabs, live), sports_board (live), or the free\nJapanese two-sided page /jp/card/{game}/{set}/{card}.\nA RANKED LIST of individual cards by PRICE VELOCITY (drift), highest\nabsolute movement first, with the conformal risk row (bands, VaR, grades)\nattached to each card. Filter by game, limit, and min_price. Built for\npicking cards, not for summarizing the market.\n\nNOTE (corrected 2026-07-30): this previously claimed \"30-day sales volume\".\nSales volume and view counts are NOT in the dataset and the API itself now\nexplicitly disclaims them — see `ranked_by` in the response.\n\nBand and VaR PERCENTAGES are regime-level constants by design (regime-aware\nsplit conformal), so cards in the same regime share them; absolute values\ndiffer per card. Do not read it as a per-card fit. Covers all 25+ games.\n\nPAID: $0.025 USDC per call.\n\nUse this when: a user asks \"which cards are moving fastest right now?\" and\nwants names to act on. For the day's whole-market summary (gainers/losers\nby game, volume leaders) use market_snapshot.\n","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"game":{"default":"","title":"Game","type":"string"},"limit":{"default":25,"title":"Limit","type":"integer"},"min_price":{"default":0,"title":"Min Price","type":"number"}},"title":"trending_cardsArguments"}}],"scan":{"score":84,"grade":"B","scanned_at":"2026-10-15T17:29:43.896Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-15T17:29:43.841Z","components":{"code":{"score":25,"max":25,"notes":["10 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 963ms"]},"poisoning":{"score":13,"max":15,"notes":["25 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 13 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool souls_in_wallet: … 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 — records come in seasons. Season 1 (USD card board) is closed: its calls matured 07-31..08-09, and later USD calls are VOID (not misses) because the USD price panel froze 2026-09-07. Season 2 (Japanese dealer board) locks weekly from 2026-09-14; its first calls mature 2026-10-14, so newer souls may read UNRATED with open calls only. That is expected: every call was committed on-chain BEFORE its outcome. Judge `skill` (hit rate minus the best constant call on the soul's own picks), not raw hit rate. Args: address: 0x-prefixed EVM address to look up. calls: recent scored calls to include per soul (0-12, default 5). …"}],"inputs":{"probes":[{"url":"https://mcp.the-undesirables.com/mcp","reachable":true,"authRequired":false,"latencyMs":963,"serverInfo":{"name":"TCG Oracle","version":"1.27.1"}}],"packages":[{"registryType":"pypi","identifier":"undesirables-mcp-server","version":"2.1.0","found":true,"weeklyDownloads":61,"license":"BSL-1.1","dependencyCount":28,"publishedAt":"2026-09-08T01:26:25.791773Z","repositoryUrl":"https://github.com/sailorpepe/undesirables-mcp-server"}],"repo":{"found":true,"owner":"sailorpepe","repo":"undesirables-mcp-server","archived":false,"pushedAt":"2026-10-02T21:35:41Z","stars":3,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/159828807?v=4","ownerCreatedAt":"2024-02-12T20:08:45Z","license":"NOASSERTION"},"icon":{"url":"https://avatars.githubusercontent.com/u/159828807?v=4&s=128","source":"registry"},"presence":{"stars":3,"forks":1,"downloadsWeek":61,"license":"NOASSERTION","lastPushAt":"2026-10-02T21:35:41.000Z","score":38}}}},"grade_history":[],"reviews":[]}