Skip to main content
Glama
portfolio.tsβ€’2.12 kB
import { AuraAdapter } from '../core/aura-adapter.js' import { PortfolioBalanceRequest, PortfolioBalanceResponse, PortfolioPositionsRequest, PortfolioPositionsResponse, McpResponse } from '../types/index.js' export class PortfolioTools { constructor(private auraAdapter: AuraAdapter) {} async handleTool(name: string, args: any): Promise<McpResponse> { switch (name) { case 'portfolio.getBalance': return await this.getBalance(args as PortfolioBalanceRequest) case 'portfolio.getPositions': return await this.getPositions(args as PortfolioPositionsRequest) default: throw new Error(`Unknown portfolio tool: ${name}`) } } private async getBalance(request: PortfolioBalanceRequest): Promise<McpResponse<PortfolioBalanceResponse>> { try { const balance = await this.auraAdapter.getPortfolioBalance(request.address) return { success: true, data: balance, metadata: { timestamp: new Date().toISOString(), requestId: `balance_${Date.now()}` } } } catch (error) { return { success: false, error: { code: 'BALANCE_FETCH_ERROR', message: error instanceof Error ? error.message : String(error) }, metadata: { timestamp: new Date().toISOString() } } } } private async getPositions(request: PortfolioPositionsRequest): Promise<McpResponse<PortfolioPositionsResponse>> { try { const positions = await this.auraAdapter.getPortfolioPositions(request.address) return { success: true, data: positions, metadata: { timestamp: new Date().toISOString(), requestId: `positions_${Date.now()}` } } } catch (error) { return { success: false, error: { code: 'POSITIONS_FETCH_ERROR', message: error instanceof Error ? error.message : String(error) }, metadata: { timestamp: new Date().toISOString() } } } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/antidump/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server