Skip to main content
Glama
questflowai

Aster Finance MCP Server

by questflowai

setPositionMode

Switch between Hedge Mode and One-way Mode to manage cryptocurrency futures trading positions on the Aster exchange.

Instructions

Change user's position mode (Hedge Mode or One-way Mode).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dualSidePositionYes"true" for Hedge Mode; "false" for One-way Mode

Implementation Reference

  • Handler logic for the 'setPositionMode' tool. It invokes a signed POST request to the Aster Futures API endpoint '/fapi/v1/positionSide/dual' with the provided arguments to change the user's position mode.
    case 'setPositionMode': return makeRequest('POST', '/fapi/v1/positionSide/dual', args, true);
  • Input schema definition for the 'setPositionMode' tool, specifying the 'dualSidePosition' parameter as a required string.
    inputSchema: { type: 'object', properties: { dualSidePosition: { type: 'string', description: '"true" for Hedge Mode; "false" for One-way Mode' }, }, required: ['dualSidePosition'], },
  • src/index.ts:216-226 (registration)
    Registration of the 'setPositionMode' tool in the list of available tools, including name, description, and input schema.
    { name: 'setPositionMode', description: "Change user's position mode (Hedge Mode or One-way Mode).", inputSchema: { type: 'object', properties: { dualSidePosition: { type: 'string', description: '"true" for Hedge Mode; "false" for One-way Mode' }, }, required: ['dualSidePosition'], }, },
  • Shared utility function 'makeRequest' used by all signed tools, including setPositionMode, to perform authenticated API calls to the Aster Futures API using HMAC-SHA256 signature.
    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; } };

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/questflowai/aster-mcp-server'

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