get_safety_data
Retrieve GHS hazard classifications and safety details for chemical compounds using the PubChem Compound ID (CID). Access critical chemical safety information efficiently.
Instructions
Get GHS hazard classifications and safety information
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cid | Yes | PubChem Compound ID (CID) |
Implementation Reference
- src/index.ts:1160-1181 (handler)The handler function that executes the tool logic: validates the CID input, calls PubChem API for classification/safety data, and returns formatted JSON response.private async handleGetSafetyData(args: any) { if (!isValidCidArgs(args)) { throw new McpError(ErrorCode.InvalidParams, 'Invalid CID arguments'); } try { const response = await this.apiClient.get(`/compound/cid/${args.cid}/classification/JSON`); return { content: [ { type: 'text', text: JSON.stringify(response.data, null, 2), }, ], }; } catch (error) { throw new McpError( ErrorCode.InternalError, `Failed to get safety data: ${error instanceof Error ? error.message : 'Unknown error'}` ); } }
- src/index.ts:639-649 (schema)Input schema definition for the tool, specifying required 'cid' parameter of type number or string.{ name: 'get_safety_data', description: 'Get GHS hazard classifications and safety information', inputSchema: { type: 'object', properties: { cid: { type: ['number', 'string'], description: 'PubChem Compound ID (CID)' }, }, required: ['cid'], }, },
- src/index.ts:792-793 (registration)Tool dispatch registration in the CallToolRequestHandler switch statement.case 'get_safety_data': return await this.handleGetSafetyData(args);
- src/index.ts:65-74 (helper)Validation helper function used by the handler to check input arguments for CID.const isValidCidArgs = ( args: any ): args is { cid: number | string; format?: string } => { return ( typeof args === 'object' && args !== null && (typeof args.cid === 'number' || typeof args.cid === 'string') && (args.format === undefined || ['json', 'sdf', 'xml', 'asnt', 'asnb'].includes(args.format)) ); };