Skip to main content
Glama

jupiter_get_quote

Use Jupiter's API to obtain a token swap quote by specifying input and output tokens, amount, slippage, and other parameters for Solana blockchain transactions.

Instructions

Get a quote for swapping tokens on Jupiter

Input Schema

NameRequiredDescriptionDefault
amountYes
asLegacyTransactionNo
excludeDexesNo
inputMintYes
maxAccountsNo
onlyDirectRoutesNo
outputMintYes
platformFeeBpsNo
slippageBpsNo
swapModeNo

Input Schema (JSON Schema)

{ "properties": { "amount": { "type": "string" }, "asLegacyTransaction": { "type": "boolean" }, "excludeDexes": { "items": { "type": "string" }, "type": "array" }, "inputMint": { "type": "string" }, "maxAccounts": { "type": "number" }, "onlyDirectRoutes": { "type": "boolean" }, "outputMint": { "type": "string" }, "platformFeeBps": { "type": "number" }, "slippageBps": { "type": "number" }, "swapMode": { "type": "string" } }, "required": [ "inputMint", "outputMint", "amount" ], "type": "object" }

Implementation Reference

  • Main handler function for 'jupiter_get_quote' tool. Validates public keys, constructs query parameters from input, fetches quote from Jupiter API, and returns formatted 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)}`); } };
  • Tool schema definition including name, description, and inputSchema for validation in the tools array.
    { 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:59-63 (registration)
    Registration of handlers dictionary mapping tool names to their handler functions, including 'jupiter_get_quote' to getQuoteHandler.
    export const handlers: handlerDictionary = { "jupiter_get_quote": getQuoteHandler, "jupiter_build_swap_transaction": buildSwapTransactionHandler, "jupiter_send_swap_transaction": sendSwapTransactionHandler };
  • TypeScript interface GetQuoteInput matching the tool's inputSchema, used as type for the handler input.
    export interface GetQuoteInput { inputMint: string; outputMint: string; amount: string; slippageBps?: number; onlyDirectRoutes?: boolean; asLegacyTransaction?: boolean; maxAccounts?: number; swapMode?: string; excludeDexes?: string[]; platformFeeBps?: number; }
  • validatePublicKey helper function 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!; };

Other Tools

Related Tools

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