io.github.sailorpepe/undesirables-mcp-server
35+ AI tools for TCG card grading, Monte Carlo pricing, 370K+ product search. BYOK.
Versions
1.1.3latestTools 56
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. 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.
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_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.
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 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.
grade_or_not 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.
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_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.
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-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.
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_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.
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_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?"
recommend_workflow 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.
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 — 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).
soul_calls 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).
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. 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.
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. 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.
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-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
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. "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
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, 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.
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 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.
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. 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).
technocore_room 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.
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. Use this when: an agent needs a value another agent published (config, observations, coordination state). Not for conversation — that is technocore_room.
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. 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.
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: Subtext character_image_path: Absolute path to the transparent PFP cutout to layer on top theme: Color theme for the backsplash ('cyberpunk', 'vaporwave', 'gold', 'crimson', 'matrix')
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-anime (cel-shaded NFTs), '3d' for isnet-general-use (photorealistic renders). fg_threshold: Foreground alpha threshold (200-255). Higher = stricter core, preserves more smoke. Default 245. bg_threshold: Background alpha threshold (1-50). Lower = protects faint atmospheric haze. Default 10. erode_size: Trimap erosion kernel size (5-25). Larger = wider gradient calculation band. Default 15.
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 debate. token_ids: Comma-separated token IDs for the 3 debaters (e.g. '420,69,1337'). If fewer than 3 are provided, random souls fill the remaining slots.
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 analysis. Args: query: Specific search term (e.g. "VeeFriends Series 2", "Pudgy Penguins Toy", "Rolex Submariner") limit: Max listings to analyze (default 50)
get_skill Load the full instructions for a specific skill. Args: skill_name: Name of the skill (e.g., 'business_pilot', 'meme_machine', 'market_analysis', 'content_creation', 'check_portfolio', 'image_generation', 'music_generation')
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. Args: prompt: The user's question or task model: Ollama model to use (default: llama3.1:8b)
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 Args: prompt: Text description of the meme base background seed: Random seed for reproducibility (-1 for random) width: Image width in pixels (default 512) height: Image height in pixels (default 512) overlay_image_path: Absolute path to a transparent PNG (e.g. your PFP cutout) to layer on top top_text: Memetic text to draw at the top (impact font with stroke) bottom_text: Memetic text to draw at the bottom (impact font with stroke)
produce_video Produce a professional video with text overlays, optional audio replacement, and platform-specific scaling. Uses hardware-accelerated encoding. Args: video_path: Absolute path to the input video file audio_path: Absolute path to replacement audio file (optional) use_custom_audio: If true, replace video audio with the provided audio file platform: Target platform (tiktok, reels, shorts, feed, twitter, youtube, original) text_overlays: JSON array of overlays: [{"startTime":"0","endTime":"3","text":"HELLO","font":"Impact","size":48,"color":"#FFFFFF"}] output_path: Output file path (auto-generated if empty) beat_sync_effects: JSON array of effect IDs to trigger on beats, e.g. ["Flash","Glitch Beat"] target_duration: Target output duration in seconds (0 = use full source video)
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. Args: video_path: Absolute path to the input video file (.mp4, .mov, .webm) clip_duration: Target duration for each clip in seconds (5, 10, 15, 30, or 45) num_clips: Number of top viral moments to extract (default 3) output_dir: Output directory for clips (defaults to video's directory) platform: Target platform for aspect ratio (tiktok, reels, shorts, story, feed, twitter, youtube, original) start_time: Manual override — if >= 0, extracts a single clip starting at this second (bypasses AI scan)
update_memory Append a new entry to the agent's persistent memory file. Args: entry: The memory entry to save (e.g., a market observation, trade record)
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. Args: query: Search query (e.g. "Apple Business Connect setup 2026") num_results: Number of results to return (max 10)
memory_save Save a learning, insight, or note to persistent memory. Memory survives across sessions and helps the AI improve over time. Args: category: Type of memory (lesson, mistake, insight, skill_update, user_preference, research) content: The actual memory content to save tags: Comma-separated tags for searchability (e.g. "seo,google,reviews")
memory_recall Search persistent memory for relevant past learnings, mistakes, and insights. Args: query: Search term to find in memories (searches content) category: Filter by category (lesson, mistake, insight, skill_update, user_preference, research)
detect_emotion Classify the emotional tone of user text and compute adaptive sampling parameter adjustments. Uses SamLowe/roberta-base-go_emotions (28-class taxonomy, ~100MB RAM, runs on Apple Silicon MPS). Returns the top-5 detected emotions and AutoTune parameter deltas that should be ADDED to the soul's base personality parameters before calling Ollama. Args: text: The user's message text to analyze. soul_openness: Soul's Big Five Openness score (0-100). soul_conscientiousness: Soul's Big Five Conscientiousness score (0-100). soul_extraversion: Soul's Big Five Extraversion score (0-100). soul_agreeableness: Soul's Big Five Agreeableness score (0-100). soul_neuroticism: Soul's Big Five Neuroticism score (0-100).
index_soul_workspace Index all markdown/text files in the soul workspace into local vector DB. Uses SHA-256 hash manifest for incremental indexing — unchanged files are skipped. First call downloads all-MiniLM-L6-v2 (~80MB). Creates .rag_index/ in workspace. Args: workspace_path: Path to soul workspace. Defaults to current workspace.
search_soul_memory Semantic search across indexed soul memory. Finds the most relevant chunks of text from the soul's workspace files based on meaning, not just keywords. Useful for grounding responses in the soul's actual memories, personality, and backstory. Args: query: What to search for (natural language). workspace_path: Path to soul workspace. Defaults to current workspace. top_k: Number of results to return (1-20, default 5).
get_rag_context Build a grounded context block from soul memory for prompt injection. Retrieves relevant chunks and formats them as a structured context block that can be prepended to the system prompt for grounded responses. Args: query: The user's question or topic to ground against. workspace_path: Path to soul workspace. Defaults to current workspace. max_tokens: Maximum approximate tokens for the context block.
upsert_memory_node Add or update a node in the soul's memory graph. Use this to record memories, people, places, emotions, and topics that the soul encounters during conversations. Args: node_id: Unique identifier (e.g., "person_alice", "topic_crypto"). node_type: One of: memory, entity, emotion, topic, person, place. label: Human-readable name (e.g., "Alice", "Bitcoin Discussion"). content: Detailed content or context about this memory. workspace_path: Path to soul workspace. Defaults to current.
create_memory_relation Create a relationship between two memory nodes. Args: source_id: ID of the source node. target_id: ID of the target node. edge_type: One of: relates_to, triggered_by, mentioned_in, felt_during, knows_about, reacted_to, discussed_with. weight: Relationship strength (0.0-1.0, default 1.0). workspace_path: Path to soul workspace.
query_memory_graph Search the soul's memory graph for matching nodes. Args: query: Search term (matches against labels and content). node_type: Optional filter by type (memory/entity/emotion/topic/person/place). limit: Maximum results (1-50, default 10). workspace_path: Path to soul workspace.
get_memory_subgraph Get a subgraph around a memory node — all connected memories. Useful for understanding the context around a specific memory or entity. Args: node_id: Center node ID. depth: How many hops to traverse (1-3, default 2). workspace_path: Path to soul workspace.
execute_code Execute Python code in a sandboxed environment on macOS. Uses macOS Seatbelt (sandbox-exec) to isolate code execution: - No network access - No filesystem writes outside sandbox temp - No access to user home directory - Hard timeout (kills process if exceeded) Safe for autonomous agent tool-use. Returns stdout, stderr, and exit code. Args: code: Python source code to execute. timeout: Maximum execution time in seconds (1-15, default 15).
execute_shell Execute a shell command in a sandboxed environment. More restrictive than Python execution. Blocks dangerous patterns (rm -rf, sudo, curl, wget, etc.) and isolates in Seatbelt sandbox. Args: command: Shell command to execute. timeout: Maximum execution time in seconds (1-15, default 15).
soul_speak Convert text to speech using the soul's personality-mapped voice. Maps Big Five personality traits to voice characteristics: - High Openness → expressive, varied pitch - High Conscientiousness → calm, deliberate - High Extraversion → assertive, energetic - High Agreeableness → warm, soft - High Neuroticism → nervous, rushed First call downloads Kokoro TTS model (~200MB). Runs on Apple Silicon MPS. NOTE: Temporarily evicts chat model from VRAM. Args: text: Text for the soul to speak. output_path: Where to save WAV file. Defaults to workspace temp.
soul_listen Convert speech to text using local Whisper STT. Transcribes audio into text with timestamps for each segment. First call downloads whisper base model (~150MB). Args: audio_path: Path to audio file (WAV, MP3, M4A, etc.)
get_voice_preset Preview which voice preset the soul would use without generating audio. Args: soul_openness: Big Five Openness (0-100). soul_conscientiousness: Big Five Conscientiousness (0-100). soul_extraversion: Big Five Extraversion (0-100). soul_agreeableness: Big Five Agreeableness (0-100). soul_neuroticism: Big Five Neuroticism (0-100).
generate_3d_object Generate a 3D mesh from a text description using Shap-E. Creates a .glb file that can be viewed in Three.js or exported. First call downloads the model (~1GB). Subsequent calls are fast. NOTE: This temporarily evicts the chat model from VRAM. Args: prompt: Description of the 3D object (e.g., "a crystal skull", "a medieval sword"). output_path: Where to save the .glb file. Defaults to workspace temp dir. guidance_scale: How closely to follow the prompt (1-30, default 15). steps: Diffusion steps (16-128, default 64). More = better quality.
image_to_3d Convert an image (e.g., NFT PFP) into a 3D mesh using Shap-E. Takes a 2D image and generates a 3D mesh that can be rotated and exported. Useful for turning NFT artwork into 3D collectibles. Args: image_path: Path to the source image (PNG, JPG). output_path: Where to save the .glb file. Defaults to workspace temp dir. guidance_scale: Prompt adherence (1-10, default 3). steps: Diffusion steps (16-128, default 64).
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. Args: context: What was the user trying to do? outcome: What actually happened? what_went_wrong: What mistakes were made? what_went_right: What worked well?
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.
Permissions 4
network medium filesystem low shell high env_vars low