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
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| asLegacyTransaction | No | ||
| excludeDexes | No | ||
| inputMint | Yes | ||
| maxAccounts | No | ||
| onlyDirectRoutes | No | ||
| outputMint | Yes | ||
| platformFeeBps | No | ||
| slippageBps | No | ||
| swapMode | No |
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
- src/handlers/jupiter.ts:8-68 (handler)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)}`); } };
- src/tools.ts:4-26 (schema)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 };
- src/handlers/jupiter.types.ts:1-12 (schema)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; }
- src/handlers/utils.ts:53-59 (helper)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!; };