get_oracle_details
Retrieve detailed oracle information for a specific market using marketUniqueKey and chainId as inputs. Part of the Morpho API MCP Server for accessing market data.
Instructions
Get oracle details for a specific market.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | No | ||
| marketUniqueKey | Yes |
Implementation Reference
- src/index.ts:1189-1236 (handler)Handler function that executes the get_oracle_details tool by constructing a GraphQL query to fetch oracle details for a given market unique key and chain ID, validates the response, and returns the data.if (name === GET_ORACLE_DETAILS_TOOL) { try { const { marketUniqueKey, chainId = 1 } = params as OracleDetailsParams; const query = ` query { marketByUniqueKey( uniqueKey: "${marketUniqueKey}" chainId: ${chainId} ) { oracle { address type data { ... on MorphoChainlinkOracleData { baseFeedOne { address description vendor pair } vault } ... on MorphoChainlinkOracleV2Data { baseFeedOne { address description vendor pair } } } } } }`; const response = await axios.post(MORPHO_API_BASE, { query }); const validatedData = OracleDetailsResponseSchema.parse(response.data); return { content: [{ type: 'text', text: JSON.stringify(validatedData.data.marketByUniqueKey, null, 2) }], }; } catch (error: any) { return { isError: true, content: [{ type: 'text', text: `Error retrieving oracle details: ${error.message}` }], }; } }
- src/index.ts:719-729 (registration)Tool registration in the ListToolsRequestSchema handler, defining the name, description, and input schema for get_oracle_details.name: GET_ORACLE_DETAILS_TOOL, description: 'Get oracle details for a specific market.', inputSchema: { type: 'object', properties: { marketUniqueKey: { type: 'string' }, chainId: { type: 'number' } }, required: ['marketUniqueKey'] }, },
- src/index.ts:287-293 (schema)Zod response schema used to validate the API response in the get_oracle_details handler.const OracleDetailsResponseSchema = z.object({ data: z.object({ marketByUniqueKey: z.object({ oracle: OracleSchema, }), }), });
- src/index.ts:206-232 (schema)Core Zod schemas defining the Oracle, OracleData, and OracleFeed structures used in validation for get_oracle_details.const OracleFeedSchema = z.object({ address: z.string(), description: z.string(), vendor: z.string(), pair: z.string(), }); // Oracle Data Schema const OracleDataSchema = z.discriminatedUnion('type', [ z.object({ type: z.literal('MorphoChainlinkOracle'), baseFeedOne: OracleFeedSchema, vault: z.string(), }), z.object({ type: z.literal('MorphoChainlinkOracleV2'), baseFeedOne: OracleFeedSchema, }), ]); // Oracle Schema const OracleSchema = z.object({ address: z.string(), type: z.string(), data: OracleDataSchema, });
- src/index.ts:312-312 (registration)Constant definition for the tool name used throughout the code.const GET_ORACLE_DETAILS_TOOL = 'get_oracle_details';