get_3d_conformers
Retrieve 3D molecular structure data and conformer information from PubChem using compound identifiers to analyze molecular geometry and spatial arrangements.
Instructions
Get 3D conformer data and structural information
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cid | Yes | PubChem Compound ID (CID) | |
| conformer_type | No | Type of conformer data (default: 3d) |
Implementation Reference
- src/index.ts:1020-1046 (handler)The handler function that validates arguments and fetches 3D conformer properties (Volume3D, ConformerCount3D) from PubChem API for the given CID, returning formatted JSON response.private async handleGet3dConformers(args: any) { if (!isValidConformerArgs(args)) { throw new McpError(ErrorCode.InvalidParams, 'Invalid 3D conformer arguments'); } try { const response = await this.apiClient.get(`/compound/cid/${args.cid}/property/Volume3D,ConformerCount3D/JSON`); return { content: [ { type: 'text', text: JSON.stringify({ cid: args.cid, conformer_type: args.conformer_type || '3d', properties: response.data, }, null, 2), }, ], }; } catch (error) { throw new McpError( ErrorCode.InternalError, `Failed to get 3D conformers: ${error instanceof Error ? error.message : 'Unknown error'}` ); } }
- src/index.ts:478-490 (registration)Tool registration in the listTools handler, defining the tool name, description, and input schema.{ name: 'get_3d_conformers', description: 'Get 3D conformer data and structural information', inputSchema: { type: 'object', properties: { cid: { type: ['number', 'string'], description: 'PubChem Compound ID (CID)' }, conformer_type: { type: 'string', enum: ['3d', '2d'], description: 'Type of conformer data (default: 3d)' }, }, required: ['cid'], }, }, {
- src/index.ts:760-761 (registration)Dispatch case in the central CallToolRequestSchema switch statement that routes to the handler.case 'get_3d_conformers': return await this.handleGet3dConformers(args);
- src/index.ts:103-112 (helper)Type guard function for validating input arguments to the get_3d_conformers tool.const isValidConformerArgs = ( args: any ): args is { cid: number | string; conformer_type?: string } => { return ( typeof args === 'object' && args !== null && (typeof args.cid === 'number' || typeof args.cid === 'string') && (args.conformer_type === undefined || ['3d', '2d'].includes(args.conformer_type)) ); };