Skip to main content
Glama

jupiter_get_quote

Get token swap quotes on Solana through Jupiter's API to compare rates and build transactions before executing trades.

Instructions

Get a quote for swapping tokens on Jupiter

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
inputMintYes
outputMintYes
amountYes
slippageBpsNo
onlyDirectRoutesNo
asLegacyTransactionNo
maxAccountsNo
swapModeNo
excludeDexesNo
platformFeeBpsNo

Implementation Reference

  • Main handler function for jupiter_get_quote tool. Validates input mints, builds URLSearchParams for Jupiter quote API, fetches the quote, and returns formatted success or error response.
    export const getQuoteHandler = async (input: GetQuoteInput): Promise<ToolResultSchema> => { try { // Validate input and output mints const inputMintResult = validatePublicKey(input.inputMint); if (!(inputMintResult instanceof PublicKey)) { return inputMintResult; } const outputMintResult = validatePublicKey(input.outputMint); if (!(outputMintResult instanceof PublicKey)) { return outputMintResult; } // Build query parameters const params = new URLSearchParams(); params.append("inputMint", input.inputMint); params.append("outputMint", input.outputMint); params.append("amount", input.amount); if (input.slippageBps !== undefined) { params.append("slippageBps", input.slippageBps.toString()); } if (input.onlyDirectRoutes !== undefined) { params.append("onlyDirectRoutes", input.onlyDirectRoutes.toString()); } if (input.asLegacyTransaction !== undefined) { params.append("asLegacyTransaction", input.asLegacyTransaction.toString()); } if (input.maxAccounts !== undefined) { params.append("maxAccounts", input.maxAccounts.toString()); } if (input.swapMode !== undefined) { params.append("swapMode", input.swapMode); } if (input.excludeDexes !== undefined && input.excludeDexes.length > 0) { params.append("excludeDexes", input.excludeDexes.join(",")); } if (input.platformFeeBps !== undefined) { params.append("platformFeeBps", input.platformFeeBps.toString()); } // Make the API request const response = await fetch(`${JUPITER_API_BASE_URL}/quote?${params.toString()}`); if (!response.ok) { const errorText = await response.text(); return createErrorResponse(`Error getting quote: ${response.status} ${response.statusText} - ${errorText}`); } const quoteData = await response.json(); return createSuccessResponse(`Quote: ${JSON.stringify(quoteData, null, 2)}`); } catch (error) { return createErrorResponse(`Error getting quote: ${error instanceof Error ? error.message : String(error)}`); } };
  • JSON input schema definition for the jupiter_get_quote tool, including properties and required fields.
    { name: "jupiter_get_quote", description: "Get a quote for swapping tokens on Jupiter", inputSchema: { type: "object", properties: { inputMint: { type: "string" }, outputMint: { type: "string" }, amount: { type: "string" }, slippageBps: { type: "number" }, onlyDirectRoutes: { type: "boolean" }, asLegacyTransaction: { type: "boolean" }, maxAccounts: { type: "number" }, swapMode: { type: "string" }, excludeDexes: { type: "array", items: { type: "string" } }, platformFeeBps: { type: "number" } }, required: ["inputMint", "outputMint", "amount"] } },
  • src/tools.ts:57-63 (registration)
    Registration of the getQuoteHandler function under the key 'jupiter_get_quote' in the handlers dictionary.
    type handlerDictionary = Record<typeof tools[number]["name"], (input: any) => any>; export const handlers: handlerDictionary = { "jupiter_get_quote": getQuoteHandler, "jupiter_build_swap_transaction": buildSwapTransactionHandler, "jupiter_send_swap_transaction": sendSwapTransactionHandler };
  • TypeScript interface defining the input type GetQuoteInput for the handler, matching the JSON schema.
    export interface GetQuoteInput { inputMint: string; outputMint: string; amount: string; slippageBps?: number; onlyDirectRoutes?: boolean; asLegacyTransaction?: boolean; maxAccounts?: number; swapMode?: string; excludeDexes?: string[]; platformFeeBps?: number; }
  • Helper function validatePublicKey used in the handler to validate input and output mint public keys, returning error response if invalid.
    export const validatePublicKey = (publicKeyString: string): PublicKey | ToolResultSchema => { const { publicKey, error } = createPublicKey(publicKeyString); if (error) { return createErrorResponse(error); } return publicKey!; };

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/dcSpark/mcp-server-jupiter'

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