GET_ORDERS
Retrieve your orders on Upbit exchange. Filter by market, state, page, and limit to view pending, completed, or canceled orders.
Instructions
List Upbit orders (requires private API)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | ||
| state | No | wait | |
| page | No | ||
| limit | No |
Implementation Reference
- src/tools/get-orders.ts:15-36 (handler)The main handler for the GET_ORDERS tool. It defines the tool object with name, description, parameters, and an execute function that ensures private API access is enabled, builds a query with optional market filter, signs a JWT token, and fetches orders from Upbit's /orders endpoint.
export const getOrdersTool = { name: "GET_ORDERS", description: "List Upbit orders (requires private API)", parameters: paramsSchema, execute: async ({ market, state, page, limit }: Params) => { ensurePrivateEnabled(); const baseURL = `${config.upbit.baseUrl}${config.upbit.apiBasePath}`; const client = createHttpClient(baseURL); const query: Record<string, string> = { state, page: String(page), limit: String(limit), }; if (market) query.market = market; const token = signJwtToken(query); const data = await fetchJson<unknown>(client, "/orders", { params: query, headers: { Authorization: `Bearer ${token}` }, }); return JSON.stringify(data, null, 2); }, } as const; - src/tools/get-orders.ts:6-11 (schema)Zod schema defining input parameters for GET_ORDERS: market (optional string), state (enum: wait/done/cancel, defaults to 'wait'), page (int >=1, defaults to 1), limit (int 1-100, defaults to 100).
const paramsSchema = z.object({ market: z.string().optional(), state: z.enum(["wait", "done", "cancel"]).default("wait"), page: z.number().int().min(1).default(1), limit: z.number().int().min(1).max(100).default(100), }); - src/index.ts:14-36 (registration)Import and registration of the getOrdersTool: imported from './tools/get-orders.js' and added to the FastMCP server via server.addTool(getOrdersTool) on line 36.
import { getOrdersTool } from "./tools/get-orders.js"; import { getTickerTool } from "./tools/get-ticker.js"; import { getTradesTool } from "./tools/get-trades.js"; import { getWithdrawalTool } from "./tools/get-withdrawal.js"; import { listDepositAddressesTool } from "./tools/list-deposit-addresses.js"; import { listDepositsTool } from "./tools/list-deposits.js"; import { listWithdrawalAddressesTool } from "./tools/list-withdrawal-addresses.js"; import { listWithdrawalsTool } from "./tools/list-withdrawals.js"; async function main() { console.log("Initializing Upbit MCP Server..."); const server = new FastMCP({ name: "Upbit MCP Server", version: "0.0.1", }); server.addTool(getTickerTool); server.addTool(getOrderbookTool); server.addTool(getTradesTool); server.addTool(getAccountsTool); server.addTool(createOrderTool); server.addTool(getOrdersTool); - src/lib/upbit-auth.ts:5-41 (helper)Helper functions used by the handler: ensurePrivateEnabled() checks that trading is enabled and API keys are configured; signJwtToken() creates a JWT with a query hash for signing Upbit API requests.
export function ensurePrivateEnabled(): void { if (!config.upbit.enablePrivate) { throw new Error( "Private trading tools are disabled. Set UPBIT_ENABLE_TRADING=true to enable.", ); } if (!config.upbit.accessKey || !config.upbit.secretKey) { throw new Error( "Upbit API keys are not configured. Set UPBIT_ACCESS_KEY and UPBIT_SECRET_KEY.", ); } } export function signJwtToken( params?: Record<string, string | number | boolean | undefined>, ): string { const payload: Record<string, unknown> = { access_key: config.upbit.accessKey, nonce: crypto.randomUUID(), }; if (params && Object.keys(params).length > 0) { const searchParams = new URLSearchParams(); const sortedKeys = Object.keys(params).sort(); for (const key of sortedKeys) { const value = params[key]; if (value === undefined) continue; searchParams.append(key, String(value)); } const encoded = searchParams.toString(); const queryHash = crypto.createHash("sha512").update(encoded).digest("hex"); payload.query_hash = queryHash; payload.query_hash_alg = "SHA512"; } return jwt.sign(payload, config.upbit.secretKey as string); }