Skip to main content
Glama

TradeStation MCP Server

by maven81g

getAccounts

Retrieve your TradeStation brokerage account list to manage trading portfolios, access account details, and track investments across multiple accounts.

Instructions

Get list of brokerage accounts

Input Schema

NameRequiredDescriptionDefault

No arguments

Input Schema (JSON Schema)

{ "properties": {}, "type": "object" }

Implementation Reference

  • The getAccounts tool registration and handler implementation. It calls the TradeStation API endpoint '/brokerage/accounts' via the shared makeAuthenticatedRequest helper to retrieve the list of brokerage accounts and returns the JSON response.
    server.tool( "getAccounts", "Get list of brokerage accounts", accountsSchema, async (args) => { try { const accounts = await makeAuthenticatedRequest('/brokerage/accounts'); return { content: [ { type: "text", text: JSON.stringify(accounts, null, 2) } ] }; } catch (error: unknown) { return { content: [ { type: "text", text: `Failed to fetch accounts: ${error instanceof Error ? error.message : 'Unknown error'}` } ], isError: true }; } } );
  • Input schema for the getAccounts tool. It is empty, indicating no input parameters are required.
    const accountsSchema = {};
  • Shared helper function used by getAccounts to make authenticated requests to the TradeStation API, including token refresh logic.
    async function makeAuthenticatedRequest( endpoint: string, method: AxiosRequestConfig['method'] = 'GET', data: any = null ): Promise<any> { const userTokens = tokenStore.get(DEFAULT_USER); if (!userTokens) { throw new Error('User not authenticated. Please set TRADESTATION_REFRESH_TOKEN in .env file.'); } // Check if token is expired or about to expire (within 60 seconds) if (userTokens.expiresAt < Date.now() + 60000) { // Refresh the token const newTokens = await refreshToken(userTokens.refreshToken); tokenStore.set(DEFAULT_USER, newTokens); } try { const options: AxiosRequestConfig = { method, url: `${TS_API_BASE}${endpoint}`, headers: { 'Authorization': `Bearer ${tokenStore.get(DEFAULT_USER)?.accessToken}`, 'Content-Type': 'application/json', 'Accept': 'application/json' }, timeout: 60000 }; if (data && (method === 'POST' || method === 'PUT' || method === 'PATCH')) { options.data = data; } const response = await axios(options); return response.data; } catch (error: unknown) { if (error instanceof AxiosError) { const errorMessage = error.response?.data?.Message || error.response?.data?.message || error.message; const statusCode = error.response?.status; console.error(`API request error [${statusCode}]: ${errorMessage}`); console.error('Endpoint:', endpoint); throw new Error(`API Error (${statusCode}): ${errorMessage}`); } else if (error instanceof Error) { console.error('API request error:', error.message); throw error; } else { console.error('Unknown API request error:', error); throw new Error('Unknown API request 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/maven81g/tradestation_mcp'

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