getPositions
Retrieve current futures positions on Bitget exchange to track and manage open trades. Filter results by symbol for precise monitoring of active market positions.
Instructions
Get current futures positions
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Filter by symbol |
Input Schema (JSON Schema)
{
"properties": {
"symbol": {
"description": "Filter by symbol",
"type": "string"
}
},
"required": [],
"type": "object"
}
Implementation Reference
- src/server.ts:427-438 (handler)MCP tool handler that validates input using GetPositionsSchema, calls BitgetRestClient.getFuturesPositions(symbol), and returns formatted JSON response.case 'getPositions': { const { symbol } = GetPositionsSchema.parse(args); const positions = await this.bitgetClient.getFuturesPositions(symbol); return { content: [ { type: 'text', text: JSON.stringify(positions, null, 2), }, ], } as CallToolResult; }
- src/api/rest-client.ts:757-779 (helper)Core implementation fetching futures positions from Bitget API endpoint '/api/v2/mix/position/all-position', handles symbol formatting, and maps API response to standardized Position objects.async getFuturesPositions(symbol?: string): Promise<Position[]> { const params: any = { productType: 'USDT-FUTURES' }; if (symbol) { // Add _UMCBL suffix for futures if not present params.symbol = symbol.includes('_') ? symbol : `${symbol}_UMCBL`; } const response = await this.request<any>('GET', '/api/v2/mix/position/all-position', params, true); const positions = response.data || []; return positions.map((position: any) => ({ symbol: position.symbol, side: position.holdSide || (parseFloat(position.size || '0') > 0 ? 'long' : 'short'), size: Math.abs(parseFloat(position.size || position.total || '0')).toString(), entryPrice: position.averageOpenPrice || position.openPriceAvg, markPrice: position.markPrice, pnl: position.unrealizedPL || position.achievedProfits, pnlPercent: position.unrealizedPLR || '0', margin: position.margin || position.marginSize, leverage: position.leverage, timestamp: parseInt(position.cTime || Date.now().toString()) })); }
- src/types/mcp.ts:66-68 (schema)Zod schema for input validation of getPositions tool parameters.export const GetPositionsSchema = z.object({ symbol: z.string().optional().describe('Filter by symbol') });
- src/server.ts:205-215 (registration)Tool registration entry in the ListTools response, defining name, description, and JSON input schema.{ name: 'getPositions', description: 'Get current futures positions', inputSchema: { type: 'object', properties: { symbol: { type: 'string', description: 'Filter by symbol' } }, required: [] }, },