@cyanheads/pubchem-mcp-server 0.1.22 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -8
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/resources/definitions/assay.resource.d.ts +9 -0
- package/dist/mcp-server/resources/definitions/assay.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/assay.resource.js +24 -0
- package/dist/mcp-server/resources/definitions/assay.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/compound-bioactivity.resource.d.ts +9 -0
- package/dist/mcp-server/resources/definitions/compound-bioactivity.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/compound-bioactivity.resource.js +28 -0
- package/dist/mcp-server/resources/definitions/compound-bioactivity.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/compound-image.resource.d.ts +11 -0
- package/dist/mcp-server/resources/definitions/compound-image.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/compound-image.resource.js +28 -0
- package/dist/mcp-server/resources/definitions/compound-image.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/compound-safety.resource.d.ts +9 -0
- package/dist/mcp-server/resources/definitions/compound-safety.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/compound-safety.resource.js +32 -0
- package/dist/mcp-server/resources/definitions/compound-safety.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/compound-xrefs.resource.d.ts +9 -0
- package/dist/mcp-server/resources/definitions/compound-xrefs.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/compound-xrefs.resource.js +29 -0
- package/dist/mcp-server/resources/definitions/compound-xrefs.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/compound.resource.d.ts +9 -0
- package/dist/mcp-server/resources/definitions/compound.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/compound.resource.js +28 -0
- package/dist/mcp-server/resources/definitions/compound.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/index.d.ts +14 -0
- package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/index.js +19 -0
- package/dist/mcp-server/resources/definitions/index.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-bioactivity.tool.d.ts +9 -1
- package/dist/mcp-server/tools/definitions/get-bioactivity.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-bioactivity.tool.js +61 -4
- package/dist/mcp-server/tools/definitions/get-bioactivity.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-3d-structure.tool.d.ts +38 -0
- package/dist/mcp-server/tools/definitions/get-compound-3d-structure.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-compound-3d-structure.tool.js +133 -0
- package/dist/mcp-server/tools/definitions/get-compound-3d-structure.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-compound-image.tool.d.ts +7 -1
- package/dist/mcp-server/tools/definitions/get-compound-image.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-image.tool.js +9 -0
- package/dist/mcp-server/tools/definitions/get-compound-image.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-interactions.tool.d.ts +32 -0
- package/dist/mcp-server/tools/definitions/get-compound-interactions.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-compound-interactions.tool.js +92 -0
- package/dist/mcp-server/tools/definitions/get-compound-interactions.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-compound-safety.tool.d.ts +22 -16
- package/dist/mcp-server/tools/definitions/get-compound-safety.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-safety.tool.js +111 -69
- package/dist/mcp-server/tools/definitions/get-compound-safety.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-summary.tool.d.ts +5 -1
- package/dist/mcp-server/tools/definitions/get-summary.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-summary.tool.js +16 -1
- package/dist/mcp-server/tools/definitions/get-summary.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +94 -16
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/index.js +4 -0
- package/dist/mcp-server/tools/definitions/index.js.map +1 -1
- package/dist/services/pubchem/pubchem-client.d.ts +20 -1
- package/dist/services/pubchem/pubchem-client.d.ts.map +1 -1
- package/dist/services/pubchem/pubchem-client.js +175 -3
- package/dist/services/pubchem/pubchem-client.js.map +1 -1
- package/dist/services/pubchem/sdf-parser.d.ts +20 -0
- package/dist/services/pubchem/sdf-parser.d.ts.map +1 -0
- package/dist/services/pubchem/sdf-parser.js +55 -0
- package/dist/services/pubchem/sdf-parser.js.map +1 -0
- package/dist/services/pubchem/types.d.ts +44 -0
- package/dist/services/pubchem/types.d.ts.map +1 -1
- package/dist/services/pubchem/types.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +2 -2
- package/server.json +3 -3
|
@@ -1,99 +1,141 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Get GHS hazard classification and safety data for
|
|
2
|
+
* @fileoverview Get GHS hazard classification and safety data for PubChem compounds (batched).
|
|
3
3
|
* @module mcp-server/tools/definitions/get-compound-safety
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { getPubChemClient } from '../../../services/pubchem/pubchem-client.js';
|
|
7
|
+
const ghsSchema = z
|
|
8
|
+
.object({
|
|
9
|
+
signalWord: z.string().optional().describe('GHS signal word: "Danger" or "Warning".'),
|
|
10
|
+
pictograms: z.array(z.string()).describe('GHS pictogram labels (e.g. "Flammable", "Toxic").'),
|
|
11
|
+
hazardStatements: z
|
|
12
|
+
.array(z
|
|
13
|
+
.object({
|
|
14
|
+
code: z.string().describe('H-code (e.g. "H225").'),
|
|
15
|
+
statement: z.string().describe('Hazard statement text.'),
|
|
16
|
+
})
|
|
17
|
+
.describe('GHS hazard statement entry.'))
|
|
18
|
+
.describe('GHS hazard statements.'),
|
|
19
|
+
precautionaryStatements: z
|
|
20
|
+
.array(z
|
|
21
|
+
.object({
|
|
22
|
+
code: z.string().describe('P-code (e.g. "P210").'),
|
|
23
|
+
statement: z.string().describe('Precautionary statement text.'),
|
|
24
|
+
})
|
|
25
|
+
.describe('GHS precautionary statement entry.'))
|
|
26
|
+
.describe('GHS precautionary statements.'),
|
|
27
|
+
})
|
|
28
|
+
.describe('GHS classification data.');
|
|
29
|
+
/** Fan-out cap: at most this many PUG View calls in flight at once (mirrors get_compound_details). */
|
|
30
|
+
const MAX_IN_FLIGHT = 10;
|
|
7
31
|
export const getCompoundSafety = tool('pubchem_get_compound_safety', {
|
|
8
32
|
title: 'Get Compound Safety',
|
|
9
|
-
description: 'Get GHS (Globally Harmonized System) hazard classification and safety data for
|
|
33
|
+
description: 'Get GHS (Globally Harmonized System) hazard classification and safety data for one or more compounds by CID. Returns signal word, pictograms, hazard statements (H-codes), and precautionary statements (P-codes) per compound. Data sourced from PubChem depositors — source attribution included.',
|
|
10
34
|
annotations: {
|
|
11
35
|
readOnlyHint: true,
|
|
12
36
|
idempotentHint: true,
|
|
13
37
|
openWorldHint: true,
|
|
14
38
|
},
|
|
15
39
|
input: z.object({
|
|
16
|
-
|
|
17
|
-
.number()
|
|
18
|
-
.
|
|
19
|
-
.
|
|
20
|
-
.describe('PubChem Compound
|
|
40
|
+
cids: z
|
|
41
|
+
.array(z.number().int().positive())
|
|
42
|
+
.min(1)
|
|
43
|
+
.max(25)
|
|
44
|
+
.describe('PubChem Compound IDs to fetch safety data for (1-25). Resolve from names/SMILES with pubchem_search_compounds.'),
|
|
21
45
|
}),
|
|
22
46
|
output: z.object({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
ghs: z
|
|
47
|
+
results: z
|
|
48
|
+
.array(z
|
|
26
49
|
.object({
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
.
|
|
30
|
-
.describe('GHS
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
.object({
|
|
34
|
-
code: z.string().describe('H-code (e.g. "H225").'),
|
|
35
|
-
statement: z.string().describe('Hazard statement text.'),
|
|
36
|
-
})
|
|
37
|
-
.describe('GHS hazard statement entry.'))
|
|
38
|
-
.describe('GHS hazard statements.'),
|
|
39
|
-
precautionaryStatements: z
|
|
40
|
-
.array(z
|
|
41
|
-
.object({
|
|
42
|
-
code: z.string().describe('P-code (e.g. "P210").'),
|
|
43
|
-
statement: z.string().describe('Precautionary statement text.'),
|
|
44
|
-
})
|
|
45
|
-
.describe('GHS precautionary statement entry.'))
|
|
46
|
-
.describe('GHS precautionary statements.'),
|
|
50
|
+
cid: z.number().describe('PubChem Compound ID.'),
|
|
51
|
+
hasData: z
|
|
52
|
+
.boolean()
|
|
53
|
+
.describe('Whether GHS safety data is available for this compound.'),
|
|
54
|
+
ghs: ghsSchema.optional(),
|
|
55
|
+
source: z.string().optional().describe('Data source attribution.'),
|
|
47
56
|
})
|
|
48
|
-
.
|
|
49
|
-
.describe('
|
|
50
|
-
source: z.string().optional().describe('Data source attribution.'),
|
|
57
|
+
.describe('Per-CID safety result.'))
|
|
58
|
+
.describe('Safety results, one per requested CID (input order preserved).'),
|
|
51
59
|
}),
|
|
60
|
+
// Agent-facing context — requested/with-data counts and a cross-tool notice listing the CIDs
|
|
61
|
+
// that lack GHS data. Reaches structuredContent and content[]; keys disjoint from output.
|
|
62
|
+
enrichment: {
|
|
63
|
+
requestedCount: z.number().describe('CIDs requested.'),
|
|
64
|
+
withDataCount: z.number().describe('CIDs with GHS safety data available.'),
|
|
65
|
+
notice: z
|
|
66
|
+
.string()
|
|
67
|
+
.optional()
|
|
68
|
+
.describe('Cross-tool guidance when one or more CIDs have no GHS data, pointing to an alternative source.'),
|
|
69
|
+
},
|
|
52
70
|
async handler(input, ctx) {
|
|
53
71
|
const client = getPubChemClient();
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
72
|
+
// Fan out per CID, capped at MAX_IN_FLIGHT in flight.
|
|
73
|
+
const dataByCid = new Map();
|
|
74
|
+
for (let i = 0; i < input.cids.length; i += MAX_IN_FLIGHT) {
|
|
75
|
+
const chunk = input.cids.slice(i, i + MAX_IN_FLIGHT);
|
|
76
|
+
const chunkData = await Promise.all(chunk.map(async (cid) => [cid, await client.getSafetyData(cid)]));
|
|
77
|
+
for (const [cid, data] of chunkData)
|
|
78
|
+
dataByCid.set(cid, data);
|
|
79
|
+
}
|
|
80
|
+
const results = input.cids.map((cid) => {
|
|
81
|
+
const data = dataByCid.get(cid) ?? null;
|
|
82
|
+
if (!data)
|
|
83
|
+
return { cid, hasData: false };
|
|
84
|
+
return {
|
|
85
|
+
cid,
|
|
86
|
+
hasData: true,
|
|
87
|
+
ghs: {
|
|
88
|
+
signalWord: data.signalWord,
|
|
89
|
+
pictograms: data.pictograms,
|
|
90
|
+
hazardStatements: data.hazardStatements,
|
|
91
|
+
precautionaryStatements: data.precautionaryStatements,
|
|
92
|
+
},
|
|
93
|
+
source: data.source,
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
const withDataCount = results.filter((r) => r.hasData).length;
|
|
97
|
+
ctx.log.info('Safety data fetched', {
|
|
98
|
+
requested: input.cids.length,
|
|
99
|
+
withData: withDataCount,
|
|
100
|
+
});
|
|
101
|
+
ctx.enrich({ requestedCount: input.cids.length, withDataCount });
|
|
102
|
+
if (withDataCount < input.cids.length) {
|
|
103
|
+
const missing = results.filter((r) => !r.hasData).map((r) => r.cid);
|
|
104
|
+
ctx.enrich.notice(`No GHS classification on file for ${missing.length} of ${input.cids.length} CID(s): ${missing.join(', ')}. Try pubchem_get_compound_details with includeDescription for hazard context, or those compounds may simply lack deposited safety data.`);
|
|
58
105
|
}
|
|
59
|
-
return {
|
|
60
|
-
cid: input.cid,
|
|
61
|
-
hasData: true,
|
|
62
|
-
ghs: {
|
|
63
|
-
signalWord: data.signalWord,
|
|
64
|
-
pictograms: data.pictograms,
|
|
65
|
-
hazardStatements: data.hazardStatements,
|
|
66
|
-
precautionaryStatements: data.precautionaryStatements,
|
|
67
|
-
},
|
|
68
|
-
source: data.source,
|
|
69
|
-
};
|
|
106
|
+
return { results };
|
|
70
107
|
},
|
|
71
108
|
format(result) {
|
|
72
|
-
if (
|
|
73
|
-
return [{ type: 'text', text:
|
|
109
|
+
if (result.results.length === 0) {
|
|
110
|
+
return [{ type: 'text', text: 'No compounds requested.' }];
|
|
74
111
|
}
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
lines.push(`**Pictograms:** ${g.pictograms.join(', ')}`);
|
|
81
|
-
if (g.hazardStatements.length > 0) {
|
|
82
|
-
lines.push('', '**Hazard Statements:**');
|
|
83
|
-
for (const h of g.hazardStatements) {
|
|
84
|
-
lines.push(` ${h.code}: ${h.statement}`);
|
|
112
|
+
const blocks = [];
|
|
113
|
+
for (const r of result.results) {
|
|
114
|
+
if (!r.hasData || !r.ghs) {
|
|
115
|
+
blocks.push(`## CID ${r.cid} — no GHS safety data`, '');
|
|
116
|
+
continue;
|
|
85
117
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
118
|
+
const lines = [`## GHS Safety Data — CID ${r.cid}`];
|
|
119
|
+
const g = r.ghs;
|
|
120
|
+
if (g.signalWord)
|
|
121
|
+
lines.push(`**Signal Word:** ${g.signalWord}`);
|
|
122
|
+
if (g.pictograms.length > 0)
|
|
123
|
+
lines.push(`**Pictograms:** ${g.pictograms.join(', ')}`);
|
|
124
|
+
if (g.hazardStatements.length > 0) {
|
|
125
|
+
lines.push('', '**Hazard Statements:**');
|
|
126
|
+
for (const h of g.hazardStatements)
|
|
127
|
+
lines.push(` ${h.code}: ${h.statement}`);
|
|
91
128
|
}
|
|
129
|
+
if (g.precautionaryStatements.length > 0) {
|
|
130
|
+
lines.push('', '**Precautionary Statements:**');
|
|
131
|
+
for (const p of g.precautionaryStatements)
|
|
132
|
+
lines.push(` ${p.code}: ${p.statement}`);
|
|
133
|
+
}
|
|
134
|
+
if (r.source)
|
|
135
|
+
lines.push('', `*Source: ${r.source}*`);
|
|
136
|
+
blocks.push(lines.join('\n'), '');
|
|
92
137
|
}
|
|
93
|
-
|
|
94
|
-
lines.push('', `*Source: ${result.source}*`);
|
|
95
|
-
}
|
|
96
|
-
return [{ type: 'text', text: lines.join('\n') }];
|
|
138
|
+
return [{ type: 'text', text: blocks.join('\n') }];
|
|
97
139
|
},
|
|
98
140
|
});
|
|
99
141
|
//# sourceMappingURL=get-compound-safety.tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-compound-safety.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-safety.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-compound-safety.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-compound-safety.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,5 +35,9 @@ export declare const getSummary: import("@cyanheads/mcp-ts-core").ToolDefinition
|
|
|
35
35
|
lineage: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
36
36
|
}, z.core.$strip>>;
|
|
37
37
|
}, z.core.$strip>>;
|
|
38
|
-
}, z.core.$strip>, undefined,
|
|
38
|
+
}, z.core.$strip>, undefined, {
|
|
39
|
+
readonly requestedCount: z.ZodNumber;
|
|
40
|
+
readonly foundCount: z.ZodNumber;
|
|
41
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}>;
|
|
39
43
|
//# sourceMappingURL=get-summary.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-summary.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-summary.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAkCjD,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"get-summary.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-summary.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAkCjD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyHrB,CAAC"}
|
|
@@ -69,6 +69,16 @@ export const getSummary = tool('pubchem_get_summary', {
|
|
|
69
69
|
.describe('Per-identifier summary result.'))
|
|
70
70
|
.describe('Summary results.'),
|
|
71
71
|
}),
|
|
72
|
+
// Agent-facing context — requested/found counts and a notice when any identifier missed.
|
|
73
|
+
// Reaches structuredContent and content[]; keys disjoint from output.
|
|
74
|
+
enrichment: {
|
|
75
|
+
requestedCount: z.number().describe('Identifiers requested.'),
|
|
76
|
+
foundCount: z.number().describe('Identifiers resolved to a summary.'),
|
|
77
|
+
notice: z
|
|
78
|
+
.string()
|
|
79
|
+
.optional()
|
|
80
|
+
.describe('Recovery guidance when one or more identifiers were not found.'),
|
|
81
|
+
},
|
|
72
82
|
async handler(input, ctx) {
|
|
73
83
|
const client = getPubChemClient();
|
|
74
84
|
const summaries = await Promise.all(input.identifiers.map(async (id) => {
|
|
@@ -78,11 +88,16 @@ export const getSummary = tool('pubchem_get_summary', {
|
|
|
78
88
|
const data = extractSummary(input.entityType, raw);
|
|
79
89
|
return { identifier: id, found: true, data };
|
|
80
90
|
}));
|
|
91
|
+
const foundCount = summaries.filter((s) => s.found).length;
|
|
81
92
|
ctx.log.info('Summaries fetched', {
|
|
82
93
|
entityType: input.entityType,
|
|
83
94
|
requested: input.identifiers.length,
|
|
84
|
-
found:
|
|
95
|
+
found: foundCount,
|
|
85
96
|
});
|
|
97
|
+
ctx.enrich({ requestedCount: input.identifiers.length, foundCount });
|
|
98
|
+
if (foundCount < input.identifiers.length) {
|
|
99
|
+
ctx.enrich.notice(`${input.identifiers.length - foundCount} of ${input.identifiers.length} ${input.entityType} identifier(s) not found. Verify the ID type matches entityType="${input.entityType}" (assay: AID, gene: Gene ID, protein: UniProt accession, taxonomy: Tax ID).`);
|
|
100
|
+
}
|
|
86
101
|
return { entityType: input.entityType, summaries };
|
|
87
102
|
},
|
|
88
103
|
format(result) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-summary.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-summary.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAIxE;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAC7E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC7D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC/E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACxF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACrF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACxF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACxE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IACjG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IAC9F,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAClF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAC1F,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACvF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC5E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;CAClG,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE;IACpD,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EACT,uKAAuK;IACzK,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAC7F,WAAW,EAAE,CAAC;aACX,KAAK,CACJ,CAAC;aACE,KAAK,CAAC;YACL,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YAClE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;SACvE,CAAC;aACD,QAAQ,CAAC,+DAA+D,CAAC,CAC7E;aACA,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CACP,qOAAqO,CACtO;KACJ,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACvD,SAAS,EAAE,CAAC;aACT,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,UAAU,EAAE,CAAC;iBACV,KAAK,CAAC;gBACL,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;gBAClE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;aACvE,CAAC;iBACD,QAAQ,CAAC,qBAAqB,CAAC;YAClC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC5D,IAAI,EAAE,uBAAuB;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,6DAA6D,CAAC;SAC3E,CAAC;aACD,QAAQ,CAAC,gCAAgC,CAAC,CAC9C;aACA,QAAQ,CAAC,kBAAkB,CAAC;KAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-summary.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-summary.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
9
9
|
inactive: "inactive";
|
|
10
10
|
all: "all";
|
|
11
11
|
}>>;
|
|
12
|
+
targetGeneId: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
13
|
+
targetAccession: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12
14
|
maxResults: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
13
15
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
14
16
|
cid: import("zod").ZodNumber;
|
|
@@ -27,7 +29,43 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
27
29
|
unit: import("zod").ZodOptional<import("zod").ZodString>;
|
|
28
30
|
}, import("zod/v4/core").$strip>>;
|
|
29
31
|
}, import("zod/v4/core").$strip>>;
|
|
30
|
-
}, import("zod/v4/core").$strip>, undefined,
|
|
32
|
+
}, import("zod/v4/core").$strip>, undefined, {
|
|
33
|
+
readonly outcomeFilter: import("zod").ZodString;
|
|
34
|
+
readonly targetFilter: import("zod").ZodOptional<import("zod").ZodString>;
|
|
35
|
+
readonly filteredCount: import("zod").ZodNumber;
|
|
36
|
+
readonly returnedCount: import("zod").ZodNumber;
|
|
37
|
+
readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
|
|
38
|
+
}> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
39
|
+
cid: import("zod").ZodNumber;
|
|
40
|
+
format: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
41
|
+
sdf: "sdf";
|
|
42
|
+
json: "json";
|
|
43
|
+
}>>;
|
|
44
|
+
includeAlternateConformerIds: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
45
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
46
|
+
cid: import("zod").ZodNumber;
|
|
47
|
+
conformerId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
48
|
+
atomCount: import("zod").ZodNumber;
|
|
49
|
+
bondCount: import("zod").ZodNumber;
|
|
50
|
+
atoms: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
51
|
+
element: import("zod").ZodString;
|
|
52
|
+
x: import("zod").ZodNumber;
|
|
53
|
+
y: import("zod").ZodNumber;
|
|
54
|
+
z: import("zod").ZodNumber;
|
|
55
|
+
}, import("zod/v4/core").$strip>>>;
|
|
56
|
+
bonds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
57
|
+
a1: import("zod").ZodNumber;
|
|
58
|
+
a2: import("zod").ZodNumber;
|
|
59
|
+
order: import("zod").ZodNumber;
|
|
60
|
+
}, import("zod/v4/core").$strip>>>;
|
|
61
|
+
sdf: import("zod").ZodOptional<import("zod").ZodString>;
|
|
62
|
+
alternateConformerIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
63
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
64
|
+
readonly reason: "no_3d_structure";
|
|
65
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
66
|
+
readonly when: "PubChem has no computed 3D conformer for the requested CID";
|
|
67
|
+
readonly recovery: "Use pubchem_get_compound_image for the 2D structure, or verify the CID with pubchem_search_compounds.";
|
|
68
|
+
}], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
31
69
|
cids: import("zod").ZodArray<import("zod").ZodNumber>;
|
|
32
70
|
properties: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodEnum<{
|
|
33
71
|
[x: string]: string;
|
|
@@ -109,25 +147,61 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
109
147
|
mimeType: import("zod").ZodString;
|
|
110
148
|
width: import("zod").ZodNumber;
|
|
111
149
|
height: import("zod").ZodNumber;
|
|
112
|
-
}, import("zod/v4/core").$strip>,
|
|
150
|
+
}, import("zod/v4/core").$strip>, readonly [{
|
|
151
|
+
readonly reason: "cid_not_found";
|
|
152
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
153
|
+
readonly when: "PubChem returned 404 for the requested CID";
|
|
154
|
+
readonly recovery: "Verify the CID with pubchem_search_compounds before retrying.";
|
|
155
|
+
}], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
113
156
|
cid: import("zod").ZodNumber;
|
|
157
|
+
kinds: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodEnum<{
|
|
158
|
+
"drug-drug": "drug-drug";
|
|
159
|
+
"drug-food": "drug-food";
|
|
160
|
+
target: "target";
|
|
161
|
+
}>>>;
|
|
162
|
+
maxEntries: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
114
163
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
115
164
|
cid: import("zod").ZodNumber;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
165
|
+
entries: import("zod").ZodArray<import("zod").ZodObject<{
|
|
166
|
+
kind: import("zod").ZodEnum<{
|
|
167
|
+
"drug-drug": "drug-drug";
|
|
168
|
+
"drug-food": "drug-food";
|
|
169
|
+
target: "target";
|
|
170
|
+
}>;
|
|
171
|
+
partner: import("zod").ZodOptional<import("zod").ZodString>;
|
|
172
|
+
source: import("zod").ZodString;
|
|
173
|
+
severity: import("zod").ZodOptional<import("zod").ZodString>;
|
|
174
|
+
text: import("zod").ZodString;
|
|
175
|
+
}, import("zod/v4/core").$strip>>;
|
|
176
|
+
}, import("zod/v4/core").$strip>, undefined, {
|
|
177
|
+
readonly requestedKinds: import("zod").ZodString;
|
|
178
|
+
readonly returnedCount: import("zod").ZodNumber;
|
|
179
|
+
readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
|
|
180
|
+
}> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
181
|
+
cids: import("zod").ZodArray<import("zod").ZodNumber>;
|
|
182
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
183
|
+
results: import("zod").ZodArray<import("zod").ZodObject<{
|
|
184
|
+
cid: import("zod").ZodNumber;
|
|
185
|
+
hasData: import("zod").ZodBoolean;
|
|
186
|
+
ghs: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
187
|
+
signalWord: import("zod").ZodOptional<import("zod").ZodString>;
|
|
188
|
+
pictograms: import("zod").ZodArray<import("zod").ZodString>;
|
|
189
|
+
hazardStatements: import("zod").ZodArray<import("zod").ZodObject<{
|
|
190
|
+
code: import("zod").ZodString;
|
|
191
|
+
statement: import("zod").ZodString;
|
|
192
|
+
}, import("zod/v4/core").$strip>>;
|
|
193
|
+
precautionaryStatements: import("zod").ZodArray<import("zod").ZodObject<{
|
|
194
|
+
code: import("zod").ZodString;
|
|
195
|
+
statement: import("zod").ZodString;
|
|
196
|
+
}, import("zod/v4/core").$strip>>;
|
|
127
197
|
}, import("zod/v4/core").$strip>>;
|
|
198
|
+
source: import("zod").ZodOptional<import("zod").ZodString>;
|
|
128
199
|
}, import("zod/v4/core").$strip>>;
|
|
129
|
-
|
|
130
|
-
|
|
200
|
+
}, import("zod/v4/core").$strip>, undefined, {
|
|
201
|
+
readonly requestedCount: import("zod").ZodNumber;
|
|
202
|
+
readonly withDataCount: import("zod").ZodNumber;
|
|
203
|
+
readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
|
|
204
|
+
}> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
131
205
|
cid: import("zod").ZodNumber;
|
|
132
206
|
xrefTypes: import("zod").ZodArray<import("zod").ZodEnum<{
|
|
133
207
|
[x: string]: string;
|
|
@@ -173,7 +247,11 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
173
247
|
lineage: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
174
248
|
}, import("zod/v4/core").$strip>>;
|
|
175
249
|
}, import("zod/v4/core").$strip>>;
|
|
176
|
-
}, import("zod/v4/core").$strip>, undefined,
|
|
250
|
+
}, import("zod/v4/core").$strip>, undefined, {
|
|
251
|
+
readonly requestedCount: import("zod").ZodNumber;
|
|
252
|
+
readonly foundCount: import("zod").ZodNumber;
|
|
253
|
+
readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
|
|
254
|
+
}> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
177
255
|
targetType: import("zod").ZodEnum<{
|
|
178
256
|
proteinaccession: "proteinaccession";
|
|
179
257
|
genesymbol: "genesymbol";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAW9B,CAAC"}
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* @module mcp-server/tools/definitions
|
|
4
4
|
*/
|
|
5
5
|
import { getBioactivity } from './get-bioactivity.tool.js';
|
|
6
|
+
import { getCompound3dStructure } from './get-compound-3d-structure.tool.js';
|
|
6
7
|
import { getCompoundDetails } from './get-compound-details.tool.js';
|
|
7
8
|
import { getCompoundImage } from './get-compound-image.tool.js';
|
|
9
|
+
import { getCompoundInteractions } from './get-compound-interactions.tool.js';
|
|
8
10
|
import { getCompoundSafety } from './get-compound-safety.tool.js';
|
|
9
11
|
import { getCompoundXrefs } from './get-compound-xrefs.tool.js';
|
|
10
12
|
import { getSummary } from './get-summary.tool.js';
|
|
@@ -14,9 +16,11 @@ export const allToolDefinitions = [
|
|
|
14
16
|
searchCompounds,
|
|
15
17
|
getCompoundDetails,
|
|
16
18
|
getCompoundImage,
|
|
19
|
+
getCompound3dStructure,
|
|
17
20
|
getCompoundXrefs,
|
|
18
21
|
getCompoundSafety,
|
|
19
22
|
getBioactivity,
|
|
23
|
+
getCompoundInteractions,
|
|
20
24
|
searchAssays,
|
|
21
25
|
getSummary,
|
|
22
26
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,YAAY;IACZ,UAAU;CACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,sBAAsB;IACtB,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,uBAAuB;IACvB,YAAY;IACZ,UAAU;CACX,CAAC"}
|
|
@@ -3,13 +3,16 @@
|
|
|
3
3
|
* Wraps both PUG REST and PUG View APIs behind a shared rate limiter.
|
|
4
4
|
* @module services/pubchem/pubchem-client
|
|
5
5
|
*/
|
|
6
|
-
import type { BioactivityRow, CompoundClassification, GHSClassification } from './types.js';
|
|
6
|
+
import type { BioactivityRow, CompoundClassification, GHSClassification, InteractionEntry } from './types.js';
|
|
7
7
|
export declare class PubChemClient {
|
|
8
8
|
private readonly pugBase;
|
|
9
9
|
private readonly viewBase;
|
|
10
|
+
private readonly sdqBase;
|
|
10
11
|
private readonly rateLimiter;
|
|
11
12
|
private fetchJson;
|
|
12
13
|
private fetchBinary;
|
|
14
|
+
/** Fetch a text/plain body (e.g. an SDF record). Non-2xx is classified and thrown. */
|
|
15
|
+
private fetchText;
|
|
13
16
|
/** Fetch CID list, with automatic ListKey polling for async searches */
|
|
14
17
|
private fetchCids;
|
|
15
18
|
/** Poll a PubChem ListKey until results are ready */
|
|
@@ -35,6 +38,22 @@ export declare class PubChemClient {
|
|
|
35
38
|
private parseAssayTable;
|
|
36
39
|
searchAssaysByTarget(targetType: string, query: string): Promise<number[]>;
|
|
37
40
|
getEntitySummary(entityType: string, identifier: string | number): Promise<Record<string, unknown> | null>;
|
|
41
|
+
/** Fetch drug-drug, drug-food, and/or chemical-target interactions for a compound.
|
|
42
|
+
* Drug-drug and target data live in PubChem SDQ external tables (drugbankddi,
|
|
43
|
+
* consolidatedcompoundtarget); drug-food is inline PUG View text. Each kind is capped
|
|
44
|
+
* at maxEntries; absent data for a kind contributes nothing rather than erroring. */
|
|
45
|
+
getInteractions(cid: number, kinds: Array<'drug-drug' | 'drug-food' | 'target'>, maxEntries: number): Promise<InteractionEntry[]>;
|
|
46
|
+
private getInteractionsForKind;
|
|
47
|
+
private getDrugDrugInteractions;
|
|
48
|
+
private getTargetInteractions;
|
|
49
|
+
private getDrugFoodInteractions;
|
|
50
|
+
/** Query a PubChem SDQ external table for a single CID. Returns [] on not-found. */
|
|
51
|
+
private fetchSdq;
|
|
52
|
+
/** Fetch the default 3D conformer as raw V2000 SDF text. Throws a typed not-found when
|
|
53
|
+
* PubChem has no computed 3D coordinates (large molecules, mixtures, undefined salts). */
|
|
54
|
+
getSdf3d(cid: number): Promise<string>;
|
|
55
|
+
/** List the conformer IDs PubChem has computed for a compound. Returns [] on not-found. */
|
|
56
|
+
getConformerIds(cid: number): Promise<string[]>;
|
|
38
57
|
}
|
|
39
58
|
export declare function initPubChemClient(): void;
|
|
40
59
|
export declare function getPubChemClient(): PubChemClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubchem-client.d.ts","sourceRoot":"","sources":["../../../src/services/pubchem/pubchem-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAGV,cAAc,EAEd,sBAAsB,
|
|
1
|
+
{"version":3,"file":"pubchem-client.d.ts","sourceRoot":"","sources":["../../../src/services/pubchem/pubchem-client.ts"],"names":[],"mappings":"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"}
|