setLeverage
Adjust trading leverage for cryptocurrency positions on Aster Finance. Modify risk exposure by setting leverage ratios between 1x and 125x for specific trading pairs.
Instructions
Change user's initial leverage.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| leverage | Yes | ||
| symbol | Yes |
Implementation Reference
- src/index.ts:398-409 (registration)Registration of the 'setLeverage' tool in the ListToolsRequestHandler, defining its name, description, and input schema (symbol and leverage).{ name: 'setLeverage', description: "Change user's initial leverage.", inputSchema: { type: 'object', properties: { symbol: { type: 'string' }, leverage: { type: 'number', minimum: 1, maximum: 125 }, }, required: ['symbol', 'leverage'], }, },
- src/index.ts:401-407 (schema)Input schema definition for the setLeverage tool, specifying required parameters: symbol (string) and leverage (number between 1 and 125).inputSchema: { type: 'object', properties: { symbol: { type: 'string' }, leverage: { type: 'number', minimum: 1, maximum: 125 }, }, required: ['symbol', 'leverage'],
- src/index.ts:665-666 (handler)Handler implementation for the setLeverage tool within the CallToolRequestHandler switch statement. It invokes the shared makeRequest function with a signed POST request to the Aster Futures API endpoint '/fapi/v1/leverage'.case 'setLeverage': return makeRequest('POST', '/fapi/v1/leverage', args, true);
- src/index.ts:542-579 (helper)Shared helper function 'makeRequest' used by all signed tool handlers, including setLeverage. Handles API signing with timestamp and HMAC-SHA256 signature using API_KEY and API_SECRET, makes axios request to Aster API, and formats response or throws MCP errors.const makeRequest = async (method: 'GET' | 'POST' | 'DELETE', path: string, params: any, isSigned = false) => { try { let config: any = { method, url: path, }; if (isSigned) { if (!API_KEY || !API_SECRET) { throw new McpError(ErrorCode.InvalidRequest, 'API_KEY and API_SECRET must be configured.'); } params.timestamp = Date.now(); const queryString = new URLSearchParams(params).toString(); const signature = crypto.createHmac('sha256', API_SECRET).update(queryString).digest('hex'); params.signature = signature; config.headers = { 'X-MBX-APIKEY': API_KEY }; } if (method === 'GET' || method === 'DELETE') { config.params = params; } else { // POST config.data = new URLSearchParams(params).toString(); config.headers = { ...config.headers, 'Content-Type': 'application/x-www-form-urlencoded' }; } const response = await this.axiosInstance.request(config); return { content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }] }; } catch (error) { if (axios.isAxiosError(error)) { throw new McpError( ErrorCode.InternalError, `Aster API error: ${error.response?.data?.msg || error.message}` ); } throw error; } };