NCI CACTUS Chemical Identifier Resolver MCP. Converts between chemical identifiers (name, CAS, SMILES, InChI, InChIKey) and computes basic properties.
Two tools with complete schemas and reasonable descriptions. Both tools have proper input schemas with typed properties and required arrays. Descriptions are adequate (150-200 chars) but lack actionable guidance on when to use each tool vs. the other, or error recovery paths. Parameter descriptions are present but minimal. No output schema documentation. No error handling guidance. Missing tool annotations (readOnlyHint). Naming is clear (resolve, identify) but could be more verb-forward (e.g., resolve_chemical_identifier). No pagination, no batch operations, no composition hints.
NCI CACTUS one-shot lookup: given any chemical identifier (name, CAS, SMILES, InChI, or InChIKey), return SMILES, InChIKey, IUPAC name, molecular formula, molecular weight, and CAS number in a single call. Fields that cannot be resolved are returned as null. Keyless, plain-text API.
NCI CACTUS chemical identifier resolver. Convert one chemical identifier (a drug/chemical name, CAS number, SMILES, InChI, or InChIKey) into a single representation: smiles (canonical SMILES), stdinchi (standard InChI), stdinchikey (standard InChIKey), iupac_name, names (synonym list), formula (molecular formula), mw (molecular weight), or cas (CAS registry number(s)). Keyless, plain-text API.
No output schema documentation. LLMs cannot plan downstream calls or extract fields without knowing what resolve() and identify() return.
Parameter descriptions are minimal. 'representation' in resolve() lists valid values in description text instead of using an enum constraint. LLMs cannot reliably pick from free-form strings.
No error recovery guidance. When resolve() or identify() fails (e.g., 'could not resolve'), the response does not suggest next steps or alternatives.
No tool annotations. Both tools are read-only (safe to retry), but readOnlyHint is not declared. Agents cannot infer safety without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Unclear tool selection guidance. Descriptions do not explain when to call resolve() (single representation) vs identify() (all properties at once). LLMs may pick wrong tool.