undesirables-mcp-server (sailorpepe/undesirables-mcp-server) is an MCP server listed on the M8ven Trust Index. It scores 58 out of 100, grade D. It declares 61 tools. No publisher has claimed this listing.

D
Caution
58/100

undesirables-mcp-server

Zero-trust, local-first FastMCP core for The Undesirables. 35+ offline AI agent tools: TCG card grading, conformal risk forecasts (Safe-Hold/Momentum grades), on-chain soul personalities, x402-payable oracle, TTS + 3D forging. No telemetry. BSL 1.1.

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

sailorpepe

Source: Glama · also listed on github_repo_search

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
🚨
Secret credentials may flow to a network call
1 flow detected: EBAY_CLIENT_SECRET. We can’t prove the destination matches the brand the credential belongs to.
⚠️
Tool descriptions don’t match what handlers do
1 tool describes read intent but its handler mutates — viral_clip_extractor (line 2227: result = subprocess.run([)
🔐
You'll be asked for 1 credential: EBAY_CLIENT_SECRET
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes61 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

create_banner

Create a promotional banner with a procedural mesh gradient backsplash and layered extracted character. Automatically scales to Scatter.art, OpenSea, or Twitter dimensions. Args: platform: Target platform ('scatter', 'x', 'twitter', 'opensea', 'discord', 'youtube') title: Main neon text stats: Subte

remove_background

Uses Advanced SOTA Dichotomous Image Segmentation (DIS) + Laplacian Matting to natively extract backgrounds. Perfectly preserves smoke, gradients, and soft topological artifacts. Args: image: Absolute file path OR pure Base64 encoded PNG/JPG string representing the input image. model: '2d' for isnet

invoke_council

Convenes 3 Undesirable agents to debate a topic using multi-agent resonance. The Council assigns roles based on Big Five psychology: Proposer (highest Openness), Risk Manager (highest Neuroticism), and Executor (highest Conscientiousness). Args: topic: The statement, theory, or market thesis to deba

grade_tcg_card

Analyze a Trading Card (Pokémon, Magic, etc) for PSA/Beckett grading using a local Vision AI. Args: card_image_paths: A JSON string array of absolute paths to the dropped card images (e.g. '["/path/1.png", "/path/2.png"]'). card_name: Name of the card being graded (e.g. 'Base Set Charizard')

search_ebay_market

Query the live eBay Marketplace for collectibles, cards, and physical items. Provides current market listings, a synthetic 90-day price history, and a mathematically derived market volatility proxy (Spread-Variance). Use this for VeeFriends, Azuki TCG, Pudgy Penguins, or any cross-market TCG analysi

get_skill

Load the full instructions for a specific skill.

list_skills

List all skills available to this Undesirable agent with their triggers.

query_ollama

Send a prompt to the local Ollama instance for inference. The agent's personality is automatically injected as system context.

generate_meme

Generate a meme illustration locally. Automatically selects the best engine. - Apple Silicon: FLUX.2-klein via mflux (MLX acceleration) - NVIDIA GPU: FLUX.2-schnell via diffusers (CUDA) - Windows AMD/Intel: FLUX.2-schnell via diffusers (DirectML) - CPU fallback: Ollama vision model

produce_video

Produce a professional video with text overlays, optional audio replacement, and platform-specific scaling. Uses hardware-accelerated encoding.

viral_clip_extractor

Analyze a video to find the most engaging viral moments and extract them as clips. Uses librosa RMS energy analysis + Non-Maximum Suppression for moment detection, then VideoToolbox hardware-accelerated encoding for frame-accurate clipping.

update_memory

Append a new entry to the agent's persistent memory file.

video_production_beat_sync

Analyzes an audio file for dynamic beat intervals and slices a source video using external binaries to synchronize scene cuts precisely to the detected audio beats.

web_search

Search the web for current information using DuckDuckGo. Returns titles, URLs, and snippets. Free, no API key required.

memory_save

Save a learning, insight, or note to persistent memory. Memory survives across sessions and helps the AI improve over time.

memory_recall

Search persistent memory for relevant past learnings, mistakes, and insights.

detect_emotion

Classify the emotional tone of user text and compute adaptive sampling parameter adjustments.

index_soul_workspace

Index all markdown/text files in the soul workspace into local vector DB.

search_soul_memory

Semantic search across indexed soul memory.

get_rag_context

Build a grounded context block from soul memory for prompt injection.

upsert_memory_node

Add or update a node in the soul's memory graph.

create_memory_relation

Create a relationship between two memory nodes.

query_memory_graph

Search the soul's memory graph for matching nodes.

get_memory_subgraph

Get a subgraph around a memory node — all connected memories.

execute_code

Execute Python code in a sandboxed environment on macOS.

execute_shell

Execute a shell command in a sandboxed environment.

soul_speak

Convert text to speech using the soul's personality-mapped voice.

soul_listen

Convert speech to text using local Whisper STT.

get_voice_preset

Preview which voice preset the soul would use without generating audio.

generate_3d_object

Generate a 3D mesh from a text description using Shap-E.

image_to_3d

Convert an image (e.g., NFT PFP) into a 3D mesh using Shap-E.

self_reflect

Reflect on a recent interaction to learn and improve. Saves the reflection to memory for future reference. The AI should call this after completing a task, especially if something went wrong.

run_security_audit

Run a physical SAST security audit (Semgrep or Slither) on dropped code files. Args: file_paths_json: JSON string array of absolute file paths to scan. scan_type: 'quick scan' (Python/JS) or 'web3 scan' (Solidity).

scan_media_file

Scan dropped media files (.png, .jpg, .mp4) for corruption or embedded EXIF payloads. Args: file_paths_json: JSON string array of absolute file paths.

search_tcg_products

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.

market_snapshot

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_ter

grade_card

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

grade_or_not

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

simulate_price

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_ter

card_forecast

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-Hol

trending_cards

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_ter

optimize_portfolio

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_ter

recommend_workflow

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

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.

soul_calls

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

syndicate_state

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.

syndicate_move

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.

syndicate_leaderboard

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

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-committ

loan_terms_preview

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. "PS

oracle_scorecard

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,

jp_summary

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 p

graded_asks

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. T

loan_universe

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 o

census_summary

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-cha

sports_players

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

sports_board

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 v

technocore_rooms

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.

technocore_room

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

technocore_note

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

technocore_info

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.

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configX402_BASE_URL
configMCP_REMOTE_PORT
configMCP_REMOTE_TRANSPORT
configMCP_PUBLIC_HOST
configPLAY_BASE_URL
configEBAY_APP_ID
🔐 secretEBAY_CLIENT_SECRET
configEBAY_FILTERS
configTC_CENSUS_UA
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

61/61 tools missing one or more hints — create_banner (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); remove_background (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); invoke_council (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +58 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Destructive tools are labelled

2 tools perform destructive updates without destructiveHint — grade_tcg_card deletes at line 1018 (os.remove(temp_norm)); viral_clip_extractor deletes at line 2350 (audio_proxy.unlink())

Add destructiveHint:true to any tool whose handler calls .delete(), .upsert(), .update(), unlink, rm, DELETE, DROP, REPLACE INTO, or any operation that overwrites existing data.

Descriptions match behaviour

1 tool describes read intent but its handler mutates — viral_clip_extractor (line 2227: result = subprocess.run([)

Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.

Tests exist

No test files found

Add tests that exercise each declared tool.

Secrets not logged

1 secret value sent to logger.error

Redact or omit secret values from log output.

Tool description accuracy

viral_clip_extractor: description implies read-only but handler writes/deletes/executes

Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 7 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/sailorpepe/undesirables-mcp-server?variant=verified)](https://m8ven.ai/mcp/sailorpepe/undesirables-mcp-server)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: a980b80ed963c6cc4e1698f7816407a12294fa91
code hash: f4d82a6f6455c227919c62de6c8461831edc8fbab8363c4db009923e73a84239
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client