Skip to main content
Glama

CovaSyn Chemistry Tools

covnmr_predict

Predict NMR from a SMILES, no spectrum needed: chemical shifts, a synthetic spectrum, or a DEPT subspectrum. For planning and comparison before measurement.

`output`:
* "shifts" (default): per-atom predicted shifts for `nucleus` (default
  1H). Where an atom has an uncertainty interval it is given, and where it
  has none the response says why; `predictor` says which predictor
  answered and for how many atoms.
* "spectrum": the coupling-resolved synthetic spectrum with multiplets,
  J-couplings and integrals. Absorbs the retired covnmr_predict_spectrum.
* "dept135" / "dept90": a 13C DEPT subspectrum (CH/CH3 positive, CH2
  negative, quaternaries absent; DEPT-90 CH only); each peak carries its
  `sign` and `dept_class`. Absorbs the retired
  covnmr_predict_dept_spectrum.

The curve is decimated to `max_points` (2048, ceiling 16384; 0 returns the
peak list only). Without `field_mhz` a 400 MHz spectrometer is assumed and
`field_mhz_source` says "default". To score the prediction against a
measured spectrum, use covnmr_verify.

Nuclei: 1H, 13C and 19F. 31P is REFUSED (`unsupported_nucleus`): there is
no 31P predictor, only one typical value per bonding class, and it missed
real compounds by 21-38 ppm. Pass `allow_experimental=true` to get it
anyway, marked `maturity: "experimental"` with a +/-40 ppm uncertainty.

Input Schema

NameRequiredDescriptionDefault
outputNo
smilesYes
api_keyNo
nucleusNo
solventNo
field_mhzNo
max_pointsNo
linewidth_hzNo
allow_experimentalNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / allow_experimental
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Allow Experimental"
      +}
    • addedInput schema / properties / field_mhz
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Field Mhz"
      +}
    • addedInput schema / properties / linewidth_hz
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Linewidth Hz"
      +}
    • addedInput schema / properties / max_points
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Max Points"
      +}
    • changedInput schema / properties / nucleus / default
      Previous value: -"1H"New value: +""
    • addedInput schema / properties / output
      Added value: +{
      +  "default": "",
      +  "title": "Output",
      +  "type": "string"
      +}
    • addedInput schema / properties / solvent
      Added value: +{
      +  "default": "",
      +  "title": "Solvent",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so thoroughly: it explains default assumptions (400 MHz, field_mhz_source), output-mode behavior, decimation limits, uncertainty reporting, predictor metadata, DEPT sign conventions, and a reasoned refusal of 31P with an experimental override and uncertainty range.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and uses clear bullet structure for output modes. It is somewhat long due to detailed 31P and retired-tool explanations, but those details are relevant and not redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a complex prediction tool with no annotations, 0% schema coverage, and nine parameters, the description covers most critical behavior and output modes. The remaining gap is limited semantic coverage for a few parameters such as solvent and linewidth_hz.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds substantial meaning for key parameters—output modes, nucleus defaults and refusals, max_points default/ceiling/zero behavior, field_mhz default, and allow_experimental—but it does not explain solvent, linewidth_hz, or api_key.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Predict NMR from a SMILES' and enumerates the concrete outputs (chemical shifts, synthetic spectrum, DEPT subspectrum). It distinguishes itself from sibling covnmr_verify by pointing to it for scoring predictions against measured spectra.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the use case ('For planning and comparison before measurement'), names the explicit alternative for a related task ('To score the prediction against a measured spectrum, use covnmr_verify'), and gives a detailed when/when-not for 31P including the escape hatch via allow_experimental=true.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.