search_by_inchi
Find chemical compounds using InChI keys or strings to retrieve detailed information from the ChEMBL database.
Instructions
Search for compounds by InChI key or InChI string
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"inchi": "<inchi>"
},
"name": "search_by_inchi"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| inchi | Yes | InChI key or InChI string | |
| limit | No | Number of results to return (1-1000, default: 25) |
Implementation Reference
- src/index.ts:879-907 (handler)Handler function that implements the core logic of the 'search_by_inchi' tool by querying the ChEMBL molecule search API with the provided InChI string or key.
private async handleSearchByInchi(args: any) { if (!args || typeof args.inchi !== 'string') { throw new McpError(ErrorCode.InvalidParams, 'Invalid InChI arguments'); } try { // ChEMBL supports InChI and InChI key searches const response = await this.apiClient.get('/molecule/search.json', { params: { q: args.inchi, limit: args.limit || 25, }, }); return { content: [ { type: 'text', text: JSON.stringify(response.data, null, 2), }, ], }; } catch (error) { throw new McpError( ErrorCode.InternalError, `Failed to search by InChI: ${error instanceof Error ? error.message : 'Unknown error'}` ); } } - src/index.ts:421-431 (schema)Input schema definition for the 'search_by_inchi' tool, specifying parameters 'inchi' (required string) and optional 'limit'.
name: 'search_by_inchi', description: 'Search for compounds by InChI key or InChI string', inputSchema: { type: 'object', properties: { inchi: { type: 'string', description: 'InChI key or InChI string' }, limit: { type: 'number', description: 'Number of results to return (1-1000, default: 25)', minimum: 1, maximum: 1000 }, }, required: ['inchi'], }, }, - src/index.ts:749-750 (registration)Registration/dispatch of the 'search_by_inchi' tool handler in the main tool execution switch statement.
case 'search_by_inchi': return await this.handleSearchByInchi(args);