{"tools":[{"name":"search_docs","description":"Search across ALL Otherside/MML/Msquared documentation. Returns ranked results from MML elements, events, guides, ODK features, Msquared/Morpheus networking, code examples, and ecosystem knowledge. USE FOR: general questions, finding documentation, exploring topics, when unsure which specific tool to use. Start here first.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query (e.g., \"animation easing\", \"collision detection\", \"morpheus networking\")"},"category":{"type":"string","enum":["mml","otherside","msquared","ecosystem"],"description":"Optional: Filter to specific category"}},"required":["query"]}},{"name":"get_mml_docs","description":"Get MML documentation: elements, events, and guides/references.\n\ntype=\"element\" - Element reference (m-cube, m-sphere, m-model, m-character, m-frame, m-attr-anim, m-attr-lerp, m-interaction, m-position-probe, m-chat-probe, m-prompt, m-link, m-image, m-video, m-audio, m-label, m-light, m-group, m-plane, m-cylinder). Set name to element name, omit for full list.\n\ntype=\"event\" - Event reference (MMLClickEvent, MMLCollisionStartEvent/Move/End, MMLPositionEnterEvent/Move/Leave, MMLInteractionEvent, MMLPromptEvent, MMLChatEvent, ConnectionEvent). Set name to event name, omit for full list.\n\ntype=\"guide\" - Guides, references & code examples. Topics: fundamentals, architecture, getting-started, easing, colors, attributes, assets, debugging, performance, mistakes, socket, frame, coordinates. For code examples: topic=\"example\" + query=\"animation|collision|door|video|npc|chat\".","inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["element","event","guide"],"description":"Doc type: element (MML tags), event (MML events), guide (guides/references/examples)"},"name":{"type":"string","description":"Element name (e.g., \"m-cube\") or event name (e.g., \"MMLClickEvent\")"},"topic":{"type":"string","description":"For guides: fundamentals, architecture, easing, colors, assets, debugging, performance, mistakes, socket, frame, coordinates, example. Use \"list\" for all."},"query":{"type":"string","description":"Search within guide topic (e.g., \"animation\", \"collision\")"}},"required":["type"]}},{"name":"get_otherside_docs","description":"Get Otherside, ecosystem, and Msquared/Morpheus documentation.\n\ntype=\"otherside\" - docs.otherside.xyz (ODK plugin, avatars, quests, auth, changelog). Topics: changelog (RECOMMENDED - live updates + ODK releases), odk, authentication, quest, token-gating, persistence, avatar, glb, setup, migration. Use \"list\" for categories.\n\ntype=\"ecosystem\" - Otherside lore & ecosystem knowledge. Topics: kodas (10k creatures), otherdeeds (land), sediments, environments, badges, lotm, hv-mtl, relics, vessels, special_locations, koda_types.\n\ntype=\"msquared\" - Msquared/Morpheus platform (FOUNDATIONAL for ODK). Topics: networking, replication, rpc, unreal, worldbuilder, releases.","inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["otherside","ecosystem","msquared"],"description":"Doc source: otherside (ODK/avatars), ecosystem (lore/NFTs), msquared (Morpheus networking)"},"topic":{"type":"string","description":"Topic within the doc type (e.g., \"changelog\", \"kodas\", \"networking\")"},"query":{"type":"string","description":"Additional search terms within topic"}},"required":["type"]}},{"name":"get_oswiki_market","description":"Get LIVE market data from OSWIKI API. USE FOR: \"How much supply does X have?\" → query=trait. Floor prices, trait supply/analytics, price history, crypto prices. Queries: trait (SUPPLY + tier breakdown for specific trait), analytics (bulk supply for category), collection (floor/stats), compare (top traits), price_history (charts), crypto (ETH/APE), list_traits (all with supply).","inputSchema":{"type":"object","properties":{"query":{"type":"string","enum":["collection","trait","analytics","compare","crypto","price_history","list_traits"],"description":"Query type: collection (floor/stats), analytics (category-wide), trait (specific trait), compare (top traits), price_history (charts), crypto (ETH/APE), list_traits (all in category)"},"collection":{"type":"string","description":"Collection: otherdeed, koda, kodamara, vessel, relics"},"trait_type":{"type":"string","enum":["resources","artifacts","environments","sediments"],"description":"Trait category for analytics/trait queries"},"trait_slug":{"type":"string","description":"Specific trait slug (e.g., \"obelisk\", \"volcanic\", \"biogenic-swamp\")"},"include_tiers":{"type":"boolean","description":"Include tier breakdown in analytics"},"interval":{"type":"string","enum":["1h","4h","1d","1w"],"description":"Chart interval for price_history"},"days":{"type":"number","description":"Days of history (default: 30)"}},"required":["query"]}},{"name":"browse_oswiki","description":"Browse NFTs and get bulk analytics. USE FOR: browsing listings, filtering Otherdeeds by traits/locations, holder stats, bulk supply data, FINDING SPECIFIC HOLDERS by name. FILTERS: sediments, environments, resources, artifacts, locations (club_island, beach_view, chaos_neighbor), koda_presence, price, rarity. For SINGLE trait supply → use get_oswiki_market query=trait. Views: items, holders, trait_holders, leaderboard, search_holder (FINDS ALL WALLETS for a person like \"adamweitsman\" - aggregates across multiple wallets!), analytics (bulk supply), all_traits, filters, suggest, search, map_ids.","inputSchema":{"type":"object","properties":{"view":{"type":"string","enum":["items","holders","trait_holders","leaderboard","search_holder","analytics","filters","all_traits","suggest","search","map_ids"],"description":"View type: items (browse), holders (collection), trait_holders (by trait), leaderboard (global), search_holder (find ALL wallets for a person - e.g. \"adamweitsman\" finds 5 wallets!), analytics (supply/floor/volume), filters (options), all_traits (rarity ranks), suggest (autocomplete), search (global), map_ids (visualization)"},"analytics_type":{"type":"string","enum":["resources","artifacts","environments","sediments","highlights"],"description":"For analytics view: category to get supply data for (resources=74, artifacts=67, environments=11, sediments=5, highlights=all)"},"analytics_sort":{"type":"string","enum":["name","floor","supply","owners","volume_7d","listed"],"description":"For analytics view: sort field (default: floor desc)"},"collection":{"type":"string","description":"Collection slug (default: otherdeed)"},"search":{"type":"string","description":"Search query (for search view or within items)"},"trait_type":{"type":"string","enum":["sediment","environment","resource","artifact"],"description":"For trait_holders view: trait category"},"trait_slug":{"type":"string","description":"For trait_holders view: trait slug (e.g., \"biogenic-swamp\", \"volcanic\", \"psychosilk\")"},"tier":{"type":"number","description":"For trait_holders view: filter by tier (1-5 for environments, 1-3 for resources)"},"sort_field":{"type":"string","enum":["otherdeeds","kodas","resources","unique_resources","artifacts","unique_artifacts","biogenic_swamp","chemical_goo","chaos","club_island"],"description":"For leaderboard view: field to sort by (otherdeeds, kodas, resources, unique_resources, artifacts, unique_artifacts, or sediment names)"},"sort_direction":{"type":"string","enum":["asc","desc"],"description":"For leaderboard view: sort direction"},"filters":{"type":"object","properties":{"sediments":{"type":"array","items":{"type":"string"}},"environments":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}},"artifacts":{"type":"array","items":{"type":"string"}},"sediment_tiers":{"type":"array","items":{"type":"number"},"description":"Filter by sediment tier (1-3)"},"environment_tiers":{"type":"array","items":{"type":"number"},"description":"Filter by environment tier (1-5)"},"resource_tiers":{"type":"array","items":{"type":"number"},"description":"Filter by resource tier (1-3)"},"resource_categories":{"type":"array","items":{"type":"string","enum":["Anima","Ore","Root","Shard"]},"description":"Resource category"},"categories":{"type":"array","items":{"type":"string"},"description":"Environment category"},"artifact_categories":{"type":"array","items":{"type":"string"},"description":"Artifact category (Tool, Weapon, etc.)"},"min_resource_rarity":{"type":"number","description":"Resource rarity rank (1-72)"},"min_price":{"type":"number"},"max_price":{"type":"number"},"min_rarity":{"type":"number","description":"Min rarity percentile (0-100)"},"max_rarity":{"type":"number","description":"Max rarity percentile (0-100)"},"koda_presence":{"type":"string","enum":["with_koda","no_koda"]},"artifact_presence":{"type":"string","enum":["with_artifact","no_artifact"]},"resource_count":{"type":"array","items":{"type":"number"},"description":"Resource count (0-4)"},"locations":{"type":"array","items":{"type":"string"},"description":"Special locations: club_island, beach_view, chaos_neighbor"},"obelisk_pieces":{"type":"array","items":{"type":"string","enum":["First Trip","Koda Origins"]},"description":"Obelisk piece filter"},"id_range_min":{"type":"number","description":"Min token ID"},"id_range_max":{"type":"number","description":"Max token ID"}},"description":"Filter options for browsing NFTs"},"status":{"type":"string","enum":["all","listed","not_listed"],"description":"Listing status filter"},"sort":{"type":"string","enum":["low_to_high","high_to_low","id_low_to_high","id_high_to_low","listing_new_to_old","listing_old_to_new","rarity_rare_to_common","rarity_common_to_rare"],"description":"Sort order: low_to_high/high_to_low (price), id_low_to_high/id_high_to_low (token ID), listing_new_to_old/listing_old_to_new (listing date), rarity_rare_to_common/rarity_common_to_rare (rarity)"},"limit":{"type":"number","description":"Results limit"}}}},{"name":"get_oswiki_wallet","description":"Get wallet portfolio, holdings, activity, and Otherside XP rank. CRITICAL: For ANY question about \"Otherside rank\", \"Otherside level\", \"in-game rank\", \"XP\", or \"progression\" → use view=\"rank\" to fetch XP/level from otherside.xyz API. This returns the player level (1-100+), total XP, and progress to next level. Other views: overview (net worth), nfts (holdings), tokens (ERC-20), activity (transactions), transfers (bulk events).","inputSchema":{"type":"object","properties":{"address":{"type":"string","description":"Wallet address or ENS name"},"view":{"type":"string","enum":["overview","nfts","tokens","activity","badges","progression","rank","transfers","events"],"description":"View type. Use \"rank\" or \"progression\" for Otherside XP level."},"collection":{"type":"string","description":"Filter NFTs by collection"},"status":{"type":"string","enum":["all","listed","not_listed"],"description":"Listing status for NFTs"},"activity_type":{"type":"string","enum":["all","purchase","sale","transfer","mint","listing"],"description":"Activity type filter"},"addresses":{"type":"array","items":{"type":"string"},"description":"Multiple addresses for portfolio view"},"limit":{"type":"number"},"page":{"type":"number"}},"required":["address"]}},{"name":"get_oswiki_asset","description":"Get detailed information for a specific NFT token. USE FOR: viewing token details, traits, rarity, fair value, listing info, transaction history, map position (Otherdeeds). Views: details (full info), history (transactions), listings (active asks), map (Otherdeed position/neighbors).","inputSchema":{"type":"object","properties":{"collection":{"type":"string","description":"Collection: otherdeed, koda, kodamara, vessel, relics"},"token_id":{"type":"string","description":"Token ID"},"view":{"type":"string","enum":["details","history","listings","map"],"description":"View type (map only for Otherdeeds)"},"limit":{"type":"number"},"page":{"type":"number"}},"required":["token_id"]}},{"name":"get_oswiki_activity","description":"Get real-time activity feed for sales and listings. USE FOR: monitoring market activity, tracking recent sales, viewing new listings, filtering by traits/price. Shows volume stats and trends.","inputSchema":{"type":"object","properties":{"collection":{"type":"string","description":"Collection (default: otherdeed)"},"activity_type":{"type":"string","enum":["all","sales","listings"],"description":"Activity type filter"},"min_price":{"type":"number"},"max_price":{"type":"number"},"currency":{"type":"string","enum":["eth","ape"]},"sediment":{"type":"string"},"environment":{"type":"string"},"koda_presence":{"type":"string","enum":["with_koda","no_koda"]},"limit":{"type":"number"},"cursor":{"type":"string","description":"Pagination cursor"}}}},{"name":"get_oswiki_experiences","description":"Browse Otherside experiences, game developers, and avatar collections. USE FOR: finding games/experiences to play, viewing developer info, discovering avatar-compatible NFTs. Views: list (experiences), details (experience info), stats (counts), developers (game studios), developer (studio details), avatars (NFT collections for avatars), avatar (collection details).","inputSchema":{"type":"object","properties":{"view":{"type":"string","enum":["list","details","stats","developers","developer","avatars","avatar"],"description":"View type"},"experience_id":{"type":"string","description":"Experience slug (for details view)"},"developer_slug":{"type":"string","description":"Developer slug (for developer view, e.g., \"yuga-labs\")"},"avatar_slug":{"type":"string","description":"Avatar collection slug (for avatar view, e.g., \"koda\")"},"avatar_contract":{"type":"string","description":"Avatar collection contract address (alternative to slug, e.g., \"0x...\")"},"status":{"type":"string","enum":["Live","Beta","Coming Soon","Development","Offline"],"description":"Experience status filter"},"featured":{"type":"boolean","description":"Featured experiences only"},"search":{"type":"string","description":"Search by name"},"fully_rigged":{"type":"boolean","description":"Filter for fully rigged avatars only"},"limit":{"type":"number"}}}},{"name":"get_odk_blueprint","description":"Query ODK Blueprint API (1248 classes, 3175 functions, 330 types).\n\nUSE FOR: Finding Blueprint classes, functions, structs, and enums for ODK/Unreal development.\n\nQUERY TYPES:\n- modules: List all 67 modules (ODK, M2Core, MMLEngine, etc.)\n- classes: List classes in a module (with parent class, variables)\n- class: Get specific class with functions, variables, parent class\n- structs: List structs/enums/table rows\n- struct: Get specific struct properties or enum values\n- search: Find by keyword across classes, functions, and types\n\nEXAMPLES:\n- { query: \"modules\" } → List all modules\n- { query: \"classes\", module: \"ODK\" } → Classes in ODK module\n- { query: \"class\", class_name: \"BPMC_M2Example_ModerationComponent\" } → Full class with 7 variables\n- { query: \"structs\", struct_type: \"enum\" } → List all enums\n- { query: \"struct\", struct_name: \"EM2_SocialChannelType\" } → Enum with 4 values\n- { query: \"search\", search: \"token\" } → Find token-related classes/functions","inputSchema":{"type":"object","properties":{"query":{"type":"string","enum":["modules","classes","class","structs","struct","search"],"description":"Query type"},"module":{"type":"string","description":"Module name (for classes query). E.g., ODK, M2Core, M2Content, MMLEngine"},"class_name":{"type":"string","description":"Full class name (for class query). E.g., BP_ODK_WalletWorldService, BPMC_M2Example_ModerationComponent"},"struct_name":{"type":"string","description":"Struct or enum name (for struct query). E.g., BPS_VoiceChannel, EM2_SocialChannelType"},"struct_type":{"type":"string","enum":["all","struct","enum","table_row"],"description":"Filter struct type (for structs query)"},"search":{"type":"string","description":"Search keyword (for search query). E.g., token, quest, emote, wallet"},"limit":{"type":"number","description":"Max results (default: 20)"}},"required":["query"]}},{"name":"validate_glb","description":"Validate GLB files for Otherside/MML avatar compatibility.\n\nUSE FOR: Checking if a 3D model (GLB) is compatible with Otherside avatars.\n\nCHECKS:\n- UE5 Mannequin skeleton (required for Otherside)\n- Required bones (pelvis, spine, head, arms, legs)\n- Material/texture issues\n\nINPUT OPTIONS:\n- url: Direct GLB, JSON metadata, or IPFS URL\n- collection + token_id: Collection name lookup (auto-resolves contract from OSWIKI)\n- contract + token_id: NFT contract lookup (auto-detects Ethereum/ApeChain)\n- file_path: Local GLB file\n\nEXAMPLES:\n- { url: \"https://example.com/avatar.glb\" } → Direct GLB\n- { collection: \"gs on ape\", token_id: \"1\" } → Collection name lookup\n- { collection: \"grillzgang\", token_id: \"100\" } → Collection slug lookup\n- { contract: \"0x...\", token_id: \"123\" } → NFT contract lookup\n- { url: \"ipfs://Qm.../metadata.json\" } → IPFS metadata\n\nSETUP: Run `npm run setup:avatar-tools` first.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"URL to GLB, JSON metadata, or IPFS"},"contract":{"type":"string","description":"NFT contract address (ERC-721)"},"collection":{"type":"string","description":"Collection name or slug (e.g., \"gs on ape\", \"grillzgang\") - auto-resolves to contract"},"token_id":{"type":"string","description":"Token ID for contract/collection lookup (e.g., \"1\", \"100\")"},"chain":{"type":"string","enum":["ethereum","apechain"],"description":"Chain for contract (auto-detects if not specified)"},"file_path":{"type":"string","description":"Local path to GLB file"},"return_fixed":{"type":"boolean","description":"Save corrected GLB file (default: true)"}}}}]}