UNPKG

@gala-chain/launchpad-mcp-server

Version:

MCP server for Gala Launchpad - 102 tools (pool management, event watchers, GSwap DEX trading, price history, token creation, wallet management, DEX pool discovery, liquidity positions, token locks, locked token queries, composite pool data, cross-chain b

367 lines (323 loc) 12.1 kB
"use strict"; /** * Analysis Prompts * * Slash commands for token analysis and comparison on Gala Launchpad */ Object.defineProperty(exports, "__esModule", { value: true }); exports.analysisPrompts = exports.fetchAllPoolsPrompt = exports.tradeHistoryPrompt = exports.poolDetailsPrompt = exports.spotPricesPrompt = exports.graduationStatusPrompt = exports.compareTokensPrompt = void 0; const mcpToolNames_js_1 = require("../constants/mcpToolNames.js"); const validation_js_1 = require("../utils/validation.js"); const handlerHelpers_js_1 = require("./utils/handlerHelpers.js"); /** * Compare Tokens - Side-by-side comparison */ exports.compareTokensPrompt = { name: 'galachain-launchpad:compare-tokens', description: 'Compare two Launchpad tokens side-by-side with detailed metrics', arguments: [ { name: 'token1', description: 'First token to compare (e.g., anime)', required: true, }, { name: 'token2', description: 'Second token to compare (e.g., test216253)', required: true, }, ], handler: (args) => { // Validate inputs (0, validation_js_1.validateTokenName)(args.token1, 'token1'); (0, validation_js_1.validateTokenName)(args.token2, 'token2'); return (0, handlerHelpers_js_1.createPromptResponse)(`Compare two Launchpad tokens side-by-side: Token 1: ${args.token1} Token 2: ${args.token2} For EACH token, use the optimized pattern: 1. Fetch pool details using ${mcpToolNames_js_1.MCP_TOOLS.FETCH_POOL_DETAILS_FOR_CALCULATION} 2. Calculate metrics using LOCAL mode: - Spot price: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_LAUNCHPAD_TOKEN_SPOT_PRICE} - Graduation cost: ${mcpToolNames_js_1.MCP_TOOLS.CALCULATE_BUY_AMOUNT_FOR_GRADUATION} - Is graduated: ${mcpToolNames_js_1.MCP_TOOLS.IS_TOKEN_GRADUATED} 3. Get additional data: - Full pool details: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_POOL_DETAILS} - Token distribution: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TOKEN_DISTRIBUTION} - Badges: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TOKEN_BADGES} Present a comparison table: | Metric | ${args.token1} | ${args.token2} | |--------|--------|--------| | Spot Price (USD) | ... | ... | | Market Cap Estimate | ... | ... | | Pool Status | ... | ... | | Progress to Graduation | ... | ... | | Remaining Tokens | ... | ... | | GALA to Graduate | ... | ... | | Holder Count | ... | ... | | Creator Status | ... | ... | Provide analysis: - Which token is closer to graduation? - Which has better liquidity? - Which might be a better investment and why? - Any notable badges or achievements?`); }, }; /** * Graduation Status - Check multiple tokens for graduation readiness */ exports.graduationStatusPrompt = { name: 'galachain-launchpad:graduation-status', description: 'Check graduation status and readiness for multiple tokens', arguments: [ { name: 'tokens', description: 'Comma-separated token names (e.g., anime,test216253,dragnrkti)', required: true, }, ], handler: (args) => { // Validate inputs const tokenArray = (0, validation_js_1.validateTokenList)(args.tokens); return (0, handlerHelpers_js_1.createPromptResponse)(`Check graduation status for multiple tokens: Tokens: ${args.tokens} For EACH token in the list: 1. Check if graduated: ${mcpToolNames_js_1.MCP_TOOLS.IS_TOKEN_GRADUATED} 2. If not graduated, use optimized pattern: a. Fetch pool details: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_POOL_DETAILS_FOR_CALCULATION} b. Calculate graduation cost: ${mcpToolNames_js_1.MCP_TOOLS.CALCULATE_BUY_AMOUNT_FOR_GRADUATION} (LOCAL mode) c. Calculate progress: (currentSupply / maxSupply * 100) 3. Get full pool details: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_POOL_DETAILS} Present a table: | Token | Status | Progress | Remaining Tokens | GALA to Graduate | Frontend URL | |-------|--------|----------|------------------|------------------|--------------| | ... | ... | ... | ... | ... | ... | Summary: - Total tokens analyzed: ${tokenArray.length} - Already graduated: [count] - Close to graduation (>90%): [count] - Mid-progress (50-90%): [count] - Early stage (<50%): [count] Provide recommendations: - Which tokens are good graduation opportunities? - Which tokens might be undervalued?`); }, }; /** * Spot Prices - Batch spot price lookup */ exports.spotPricesPrompt = { name: 'galachain-launchpad:spot-prices', description: 'Get spot prices for multiple Launchpad tokens efficiently', arguments: [ { name: 'tokens', description: 'Comma-separated token names (e.g., anime,test216253,dragnrkti)', required: true, }, ], handler: (args) => { // Validate inputs (0, validation_js_1.validateTokenList)(args.tokens); return (0, handlerHelpers_js_1.createPromptResponse)(`Get spot prices for multiple Launchpad tokens: Tokens: ${args.tokens} Use the optimized batch pattern for EACH token: 1. Fetch pool details: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_POOL_DETAILS_FOR_CALCULATION} 2. Calculate spot price: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_LAUNCHPAD_TOKEN_SPOT_PRICE} (LOCAL mode) Also get GALA spot price: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_GALA_SPOT_PRICE} Present results: **GALA Spot Price:** $[price] **Launchpad Token Prices:** | Token | USD Price | GALA Price | Market Cap Est. | |-------|-----------|------------|-----------------| | ... | ... | ... | ... | Performance note: Using LOCAL calculations - instant results with <0.01% difference from external! Sort by USD price (highest to lowest).`); }, }; /** * Pool Details - Comprehensive pool information */ exports.poolDetailsPrompt = { name: 'galachain-launchpad:pool-details', description: 'Get comprehensive pool information including distribution and badges', arguments: [ { name: 'tokenName', description: 'Token to analyze (e.g., anime)', required: true, }, ], handler: (args) => { // Validate inputs (0, validation_js_1.validateTokenName)(args.tokenName); return (0, handlerHelpers_js_1.createPromptResponse)(`Get comprehensive pool information for "${args.tokenName}": 1. Full pool details: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_POOL_DETAILS} 2. Token distribution: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TOKEN_DISTRIBUTION} 3. Achievement badges: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TOKEN_BADGES} 4. Recent volume data (last 24h): ${mcpToolNames_js_1.MCP_TOOLS.FETCH_VOLUME_DATA} with 1h resolution 5. Check if graduated: ${mcpToolNames_js_1.MCP_TOOLS.IS_TOKEN_GRADUATED} 6. Frontend URL: ${mcpToolNames_js_1.MCP_TOOLS.GET_URL_BY_TOKEN_NAME} Display organized sections: **Basic Info:** - Token name and symbol - Pool status - Created by - Frontend URL **Supply Metrics:** - Current supply - Maximum supply - Remaining tokens - Progress percentage **Distribution:** - Total holders - Top holders (if available) - Distribution metrics **Achievements:** - Volume badges - Engagement badges - Other achievements **Recent Activity (24h):** - Trading volume - Price movement - Number of trades **Reverse Bonding Curve:** - Max fee factor - Min fee factor - Current fee structure`); }, }; /** * Trade History - Recent trades with filters */ exports.tradeHistoryPrompt = { name: 'galachain-launchpad:trade-history', description: 'View recent trades for a token or user with filtering options', arguments: [ { name: 'tokenName', description: 'Token to view trades for (optional)', required: false, }, { name: 'userAddress', description: 'User address to filter by (optional)', required: false, }, { name: 'tradeType', description: 'Trade type filter: BUY or SELL (optional)', required: false, }, { name: 'limit', description: 'Number of trades to show (default: 20)', required: false, }, ], handler: (args) => { // Validate inputs if (args.tokenName) { (0, validation_js_1.validateTokenName)(args.tokenName); } (0, validation_js_1.validateOptionalLimit)(args.limit, 20); if (args.tradeType && args.tradeType !== 'BUY' && args.tradeType !== 'SELL') { throw new Error('tradeType must be either BUY or SELL'); } const limit = args.limit || '20'; return (0, handlerHelpers_js_1.createPromptResponse)(`Show recent trade history: ${args.tokenName ? `Token: ${args.tokenName}` : 'All tokens'} ${args.userAddress ? `User: ${args.userAddress}` : 'All users'} ${args.tradeType ? `Type: ${args.tradeType}` : 'All trade types'} Limit: ${limit} Use ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TRADES} with: ${args.tokenName ? `- tokenName: "${args.tokenName}"` : ''} ${args.userAddress ? `- userAddress: "${args.userAddress}"` : ''} ${args.tradeType ? `- tradeType: "${args.tradeType}"` : ''} - limit: ${limit} - sortOrder: "DESC" (newest first) For each trade, display: - Timestamp (formatted) - Token name - Trade type (BUY/SELL) - Amount (tokens) - Price (GALA) - User address (truncated) - Transaction ID Calculate summary: - Total trades shown - Total volume (GALA) - Average trade size - Buy vs Sell ratio (if not filtered)`); }, }; /** * Fetch All Pools - Get all available pools with automatic pagination */ exports.fetchAllPoolsPrompt = { name: 'galachain-launchpad:fetch-all-pools', description: 'Fetch all available Launchpad pools with automatic pagination (no limit needed)', arguments: [ { name: 'search', description: 'Optional search filter for token names (fuzzy match)', required: false, }, { name: 'type', description: 'Pool type filter: recent or popular (optional, default: recent)', required: false, }, ], handler: (args) => { // Validate type if provided if (args.type && args.type !== 'recent' && args.type !== 'popular') { throw new Error('type must be either "recent" or "popular"'); } const searchFilter = args.search ? `- search: "${args.search}" (fuzzy match filter)` : '- No search filter'; const typeFilter = args.type ? args.type : 'recent'; return (0, handlerHelpers_js_1.createPromptResponse)(`Fetch ALL available Launchpad pools with automatic pagination: Use ${mcpToolNames_js_1.MCP_TOOLS.FETCH_ALL_POOLS} with: ${searchFilter} - type: "${typeFilter}" This tool automatically: - Fetches the first page to determine total available pools - Concurrently fetches remaining pages (up to 5 at a time) - Returns ALL matching pools in a single result For each pool, display: - Token name and symbol - Pool status (Ongoing/Completed) - Current price (if available) - Progress percentage - Creator address (truncated) - Frontend URL (use ${mcpToolNames_js_1.MCP_TOOLS.GET_URL_BY_TOKEN_NAME}) Provide summary: - Total pools found - How many are graduated (Completed) - How many are active (Ongoing) - Distribution by progress stage: * Early (<25%) * Growing (25-75%) * Near graduation (75-99%) * Graduated (100%) Performance note: - Uses concurrent fetching with ${mcpToolNames_js_1.MCP_TOOLS.FETCH_ALL_POOLS} - Max 5 concurrent requests to avoid rate limiting - Automatic cache warming for token metadata - Much faster than manual pagination! Sort pools by creation date (newest first) or progress (closest to graduation first).`); }, }; /** * Export all analysis prompts */ exports.analysisPrompts = [ exports.compareTokensPrompt, exports.graduationStatusPrompt, exports.spotPricesPrompt, exports.poolDetailsPrompt, exports.tradeHistoryPrompt, exports.fetchAllPoolsPrompt, ]; //# sourceMappingURL=analysis.js.map