@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
JavaScript
;
/**
* 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