Tools

The server has 20 tools. Engine tools such as convert, name, properties, depict, check and screen take a structure and answer. Document tools create an Athanor document, edit it atom by atom, and render or export it.

The server at https://mcp-athanor.arbastro.com/mcp offers 20 tools, in two kinds. None of them needs an account. Structures can be given as SMILES, a molfile, an InChI or a common name. Limits: 60 calls a minute per address, structures up to 20,000 characters.

Tool Kind Does
convert Engine Convert a structure
name Engine Name a structure
properties Engine Formula and properties
depict Engine Draw a structure
perspective_rotate Engine Turn a structure in perspective
check Engine Check a structure
screen Engine Safety screen
library_search Engine Search the library
document_create Document Create a document
document_set_atom Document Change an atom
document_add_structure Document Add a structure
document_set_bond Document Change a bond
document_add_arrow Document Add an arrow
document_add_text Document Add text
document_transform Document Flip, rotate or turn
document_clean_up Document Clean up structures
document_get Document What is in a document
document_findings Document Problems in a document
document_render Document Draw a document
document_export Document Export a document

The examples below were run against the live server when this page was built. The document examples are one session, in order, so each uses the handle and atom ids the calls before it returned.

Engine tools

A structure in, an answer out. Read-only: they need no account and keep nothing.

convert

Convert a structure. Convert a structure between formats with Athanor's engine: canonical SMILES, a MOL V3000 or V2000 block, or XYZ with 3D coordinates.

Input Type Required What it is
structure string yes A structure: SMILES (e.g. CC(=O)Oc1ccccc1C(=O)O), a MOL/SDF block, an InChI, or a common name such as "aspirin".
to smiles, molfile, molfile-v2000, xyz yes The format to return.

Example call:

{
  "name": "convert",
  "arguments": {
    "structure": "caffeine",
    "to": "smiles"
  }
}

Result:

Cn1cnc2c1c(=O)n(C)c(=O)n2C

name

Name a structure. The systematic IUPAC name Athanor works out from the structure itself, and the common name if its library knows the compound. Says why when it will not name something (ions, some ring systems).

Input Type Required What it is
structure string yes A structure: SMILES (e.g. CC(=O)Oc1ccccc1C(=O)O), a MOL/SDF block, an InChI, or a common name such as "aspirin".

Example call:

{
  "name": "name",
  "arguments": {
    "structure": "CC(=O)Oc1ccccc1C(=O)O"
  }
}

Result:

{
 "smiles": "CC(=O)Oc1ccccc1C(=O)O",
 "iupac": "2-acetyloxybenzoic acid",
 "common": "Aspirin"
}

properties

Formula and properties. Formula, charge, exact and average mass, and descriptors (H-bond donors and acceptors, rotatable bonds, TPSA, logP estimate and the like) as Athanor's Compound info shows them.

Input Type Required What it is
structure string yes A structure: SMILES (e.g. CC(=O)Oc1ccccc1C(=O)O), a MOL/SDF block, an InChI, or a common name such as "aspirin".

Example call:

{
  "name": "properties",
  "arguments": {
    "structure": "caffeine"
  }
}

Result:

{
 "smiles": "Cn1cnc2c1c(=O)n(C)c(=O)n2C",
 "formula": {
  "hill": "C8H10N4O2",
  "empirical": "C4H5N2O",
  "weight": 194.194,
  "exact_mass": 194.080375576,
  "charge": 0,
  "uncertain": false,
  "analysis": [
   [
    "C",
    49.480416490725766
   ],
   [
    "H",
    5.190685603056737
   ],
   [
    "N",
    28.8515608103237
   ],
   [
    "O",
    16.477337095893798
   ]
  ],
  "isotopes": [
   {
    "mass": 194.08037557600002,
    "relative": 100
   },
   {
    "mass": 195.0828731950089,
    "relative": 10.305100192467314
   },
   {
    "mass": 196.08496800038765,
    "relative": 0.8924917436709956
   }
  ]
 },
 "descriptors": {
  "aromaticRings": 1,
  "doubleBondGeometry": 0,
  "fractionSp3": 0.375,
  "hba": 6,
  "hbd": 0,
  "heavyAtoms": 14,
  "lipinski": {
   "hbaOk": true,
   "hbdOk": true,
   "logpAvailable": false,
   "massOk": true
  },
  "rings": 2,
  "rotatable": 0,
  "stereocenters": 0,
  "tpsa": 56.220000000000006
 }
}

depict

Draw a structure. A 2D drawing of the structure as SVG, laid out by Athanor in the ACS 1996 journal style (or another preset).

Input Type Required What it is
structure string yes A structure: SMILES (e.g. CC(=O)Oc1ccccc1C(=O)O), a MOL/SDF block, an InChI, or a common name such as "aspirin".
preset acs-document-1996, new-document, new-slide, dark-mode no Drawing style; ACS Document 1996 (the journal standard) by default.

Example call:

{
  "name": "depict",
  "arguments": {
    "structure": "CC(=O)Oc1ccccc1C(=O)O"
  }
}

Result:

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
     width="1.1603in" height="1.1583in"
     viewBox="0 0 111.39 111.2">
  <desc>Athanor figure. ACS Document 1996: bond 0.2 in, line 0.0083 in, 10pt Arial.</desc>
  <g transform="translate(47.09 62.06)" fill="none" stroke="#000000" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="miter" font-family="Arial" font-size="13.33" text-anchor="start">
  <path d="M-37.09 -18.46 L-20.46 -28.06"/>
  <path d="M-18.74 -27.06 L-18.74 -40.35"/>
  <path d="M-22.19 -27.06 L-22.19 -40.35"/>
  <path d="M-20.46 -28.06 L-8.34 -21.06"/>
  <path d="M-3.84 -11.55 L-3.84 0.74"/>
  <path d="M-3.84 0.74 L-20.46 10.34"/>
  <path d="M-20.46 10.34 L-20.46 29.54"/>
  <path d="M-17.01 13.03 L-17.01 26.85"/>
  <path d="M-20.46 29.54 L-3.84 39.14"/>
  <path d="M-3.84 39.14 L12.79 29.54"/>
  <path d="M-3.24 34.8 L8.73 27.89"/>
  <path d="M12.79 29.54 L12.79 10.34"/>
  <path d="M-3.84 0.74 L12.79 10.34"/>
  <path d="M-3.24 5.08 L8.73 11.99"/>
  <path d="M12.79 10.34 L29.42 0.74"/>
  <path d="M31.15 1.74 L31.15 -11.55"/>
  <path d="M27.69 1.74 L27.69 -11.55"/>
  <path d="M29.42 0.74 L41.54 7.74"/>
  <text x="-23.21" y="-42.49" fill="#000000" stroke="none">O</text>
  <text x="-6.59" y="-13.69" fill="#000000" stroke="none">O</text>
  <text x="26.67" y="-13.69" fill="#000000" stroke="none">O</text>
  <text x="43.3" y="15.11" fill="#000000" stroke="none">O</text>
  <text x="48.8" y="15.11" fill="#000000" stroke="none">H</text>
  </g>
</svg>

perspective_rotate

Turn a structure in perspective. The 2D drawing turned in 3D (yaw about the vertical axis, pitch about the horizontal, roll in the page) and projected back, as the Perspective tool in Athanor does: bonds foreshortened, labels upright, and every stereocenter keeping its R or S with wedges chosen for the new view. Returns the SVG, a molfile, and the R/S labels before and after.

Input Type Required What it is
structure string yes A structure: SMILES (e.g. CC(=O)Oc1ccccc1C(=O)O), a MOL/SDF block, an InChI, or a common name such as "aspirin".
yaw number no Degrees about the vertical axis.
pitch number no Degrees about the horizontal axis.
roll number no Degrees in the plane of the page.

Example call:

{
  "name": "perspective_rotate",
  "arguments": {
    "structure": "C[C@H](N)C(=O)O",
    "yaw": 40
  }
}

Result:

{
 "smiles": "C[C@H](N)C(=O)O",
 "turn": {
  "yaw": 40,
  "pitch": 0,
  "roll": 0
 },
 "stereo_before": [
  "C(CCN): S"
 ],
 "stereo_after": [
  "C(CCN): S"
 ],
 "molfile": "turned\n  athanor\n\n  0  0  0  0  0  0  0  0  0  0999 V3000\nM  V30 BEGIN CTAB\nM  V30 COUNTS 6 5 0 0 0\nM  V30 BEGIN ATOM\nM  V30 1 C -1.3861 0.4330 0.0000 0\nM  V30 2 C -0.1058 0.4330 0.0000 0 HCOUNT=1\n
… (an SVG drawing, 2,192 characters)

check

Check a structure. Every problem Athanor's editor would flag in the structure: valence, charges, stereo and drawing issues, each with what would fix it.

Input Type Required What it is
structure string yes A structure: SMILES (e.g. CC(=O)Oc1ccccc1C(=O)O), a MOL/SDF block, an InChI, or a common name such as "aspirin".

Example call:

{
  "name": "check",
  "arguments": {
    "structure": "C(C)(C)(C)(C)C"
  }
}

Result:

{
 "smiles": "C(C)(C)(C)(C)C",
 "findings": [
  {
   "severity": "error",
   "title": "C has 5 bonds",
   "message": "This C has 5 bonds. C takes 4. Remove a bond, or add a charge if you meant an ion."
  }
 ]
}

screen

Safety screen. Athanor's safety screening of a structure as a synthesis target: controlled-substance schedules and chemical-weapons lists (CWC, Australia Group). Answers clear, notice or refuse, with the reason.

Input Type Required What it is
structure string yes A structure: SMILES (e.g. CC(=O)Oc1ccccc1C(=O)O), a MOL/SDF block, an InChI, or a common name such as "aspirin".

Example call:

{
  "name": "screen",
  "arguments": {
    "structure": "caffeine"
  }
}

Result:

{
 "smiles": "Cn1cnc2c1c(=O)n(C)c(=O)n2C",
 "kind": "clear",
 "blocked": false,
 "message": ""
}

Search the library. Look a compound up in Athanor's built-in library by name, synonym or CAS number; returns its name and SMILES.

Input Type Required What it is
query string yes A name, synonym or CAS number.

Example call:

{
  "name": "library_search",
  "arguments": {
    "query": "acetone"
  }
}

Result:

{
 "matches": [
  {
   "name": "Acetone",
   "smiles": "CC(C)=O"
  },
  {
   "name": "Acetone",
   "smiles": "CC(C)=O"
  }
 ]
}

Document tools

These build and edit an Athanor document that the server keeps for you, the same document the app works on. document_create returns a handle such as doc_…; pass it as document to every other call. A document is kept for two hours after its last use, up to 2 MB. Atom ids come from document_get (or from the result of the call that added the structure).

document_create

Create a document. A new Athanor document to build and edit with the other document_ tools: empty, or from a structure (SMILES, molfile, CDXML) or an .athanor file (base64). Returns its handle (kept two hours after last use) and what is in it.

Input Type Required What it is
name string no What to call it.
structure string no A structure to start from: SMILES, a molfile or CDXML.
athanor_base64 string no An .athanor file, base64, to continue editing.

Example call:

{
  "name": "document_create",
  "arguments": {
    "name": "Esterification",
    "structure": "CC(=O)O"
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "structures": [
  {
   "atoms": [
    0,
    1,
    2,
    3
   ],
   "smiles": "CC(=O)O",
   "formula": "C2H4O2",
   "name": null
  }
 ],
 "objects": {}
}

document_set_atom

Change an atom. Set an atom's element or label (an element symbol, D, 13C, or a group such as OMe), its charge, or its mass number (0 for natural). Atom ids come from document_get.

Input Type Required What it is
document string yes The document handle from document_create.
atom integer yes
label string no
charge integer no
isotope integer no

Example call:

{
  "name": "document_set_atom",
  "arguments": {
    "document": "doc_hXtQklNVvktL",
    "atom": 0,
    "isotope": 13
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "structures": [
  {
   "atoms": [
    0,
    1,
    2,
    3
   ],
   "smiles": "[13CH3]C(=O)O",
   "formula": "C¹³CH4O2",
   "name": null
  }
 ],
 "objects": {}
}

document_add_structure

Add a structure. Put a structure (SMILES, molfile or CDXML) on the page at x, y (world units; a bond is about 19), laid out by Athanor.

Input Type Required What it is
document string yes The document handle from document_create.
structure string yes
x number no
y number no

Example call:

{
  "name": "document_add_structure",
  "arguments": {
    "document": "doc_hXtQklNVvktL",
    "structure": "CCO",
    "x": 0,
    "y": 60
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "structures": [
  {
   "atoms": [
    0,
    1,
    2,
    3
   ],
   "smiles": "[13CH3]C(=O)O",
   "formula": "C¹³CH4O2",
   "name": null
  },
  {
   "atoms": [
    4,
    5,
    6
   ],
   "smiles": "CCO",
   "formula": "C2H6O",
   "name": null
  }
 ],
 "objects": {}
}

document_set_bond

Change a bond. Set the bond between two atoms: its order (1, 2, 3) and its stereo mark (none, wedge, hash, wavy), drawn from the first atom.

Input Type Required What it is
document string yes The document handle from document_create.
from integer yes
to integer yes
order integer no
stereo none, wedge, hash, wavy no

Example call:

{
  "name": "document_set_bond",
  "arguments": {
    "document": "doc_hXtQklNVvktL",
    "from": 0,
    "to": 1,
    "stereo": "wedge"
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "structures": [
  {
   "atoms": [
    0,
    1,
    2,
    3
   ],
   "smiles": "[13CH3]C(=O)O",
   "formula": "C¹³CH4O2",
   "name": null
  },
  {
   "atoms": [
    4,
    5,
    6
   ],
   "smiles": "CCO",
   "formula": "C2H6O",
   "name": null
  }
 ],
 "objects": {}
}

document_add_arrow

Add an arrow. A reaction arrow (forward, equilibrium, retrosynthetic) or a plain line from x1, y1 to x2, y2.

Input Type Required What it is
document string yes The document handle from document_create.
x1 number yes
y1 number yes
x2 number yes
y2 number yes
kind forward, equilibrium, retrosynthetic, plain no

Example call:

{
  "name": "document_add_arrow",
  "arguments": {
    "document": "doc_hXtQklNVvktL",
    "x1": 60,
    "y1": 0,
    "x2": 120,
    "y2": 0,
    "kind": "forward"
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "structures": [
  {
   "atoms": [
    0,
    1,
    2,
    3
   ],
   "smiles": "[13CH3]C(=O)O",
   "formula": "C¹³CH4O2",
   "name": null
  },
  {
   "atoms": [
    4,
    5,
    6
   ],
   "smiles": "CCO",
   "formula": "C2H6O",
   "name": null
  }
 ],
 "objects": {
  "Arrow": 1
 }
}

document_add_text

Add text. A text block on the page at x, y (a caption, a label, a condition over an arrow).

Input Type Required What it is
document string yes The document handle from document_create.
text string yes
x number yes
y number yes

Example call:

{
  "name": "document_add_text",
  "arguments": {
    "document": "doc_hXtQklNVvktL",
    "text": "H2SO4, heat",
    "x": 90,
    "y": -12
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "structures": [
  {
   "atoms": [
    0,
    1,
    2,
    3
   ],
   "smiles": "[13CH3]C(=O)O",
   "formula": "C¹³CH4O2",
   "name": null
  },
  {
   "atoms": [
    4,
    5,
    6
   ],
   "smiles": "CCO",
   "formula": "C2H6O",
   "name": null
  }
 ],
 "objects": {
  "Arrow": 1,
  "Text": 1
 }
}

document_transform

Flip, rotate or turn. Flip, rotate in the page (degrees), or turn in perspective (yaw, pitch, roll in degrees, every R and S kept) the given atoms, or every atom when none are given.

Input Type Required What it is
document string yes The document handle from document_create.
atoms array of integer no
op flip_horizontal, flip_vertical, rotate, perspective yes
degrees number no
yaw number no
pitch number no
roll number no

Example call:

{
  "name": "document_transform",
  "arguments": {
    "document": "doc_hXtQklNVvktL",
    "op": "rotate",
    "degrees": 15
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "structures": [
  {
   "atoms": [
    0,
    1,
    2,
    3
   ],
   "smiles": "[13CH3]C(=O)O",
   "formula": "C¹³CH4O2",
   "name": null
  },
  {
   "atoms": [
    4,
    5,
    6
   ],
   "smiles": "CCO",
   "formula": "C2H6O",
   "name": null
  }
 ],
 "objects": {
  "Arrow": 1,
  "Text": 1
 }
}

document_clean_up

Clean up structures. Lay every structure out again to standard bond lengths and angles, keeping every R, S, E and Z.

Input Type Required What it is
document string yes The document handle from document_create.

Example call:

{
  "name": "document_clean_up",
  "arguments": {
    "document": "doc_hXtQklNVvktL"
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "moved": 6,
 "structures": [
  {
   "atoms": [
    0,
    1,
    2,
    3
   ],
   "smiles": "[13CH3]C(=O)O",
   "formula": "C¹³CH4O2",
   "name": null
  },
  {
   "atoms": [
    4,
    5,
    6
   ],
   "smiles": "CCO",
   "formula": "C2H6O",
   "name": null
  }
 ],
 "objects": {
  "Arrow": 1,
  "Text": 1
 }
}

document_get

What is in a document. Every structure in the document (its atom ids, SMILES, formula and name) and how many objects of each kind (arrows, text, shapes).

Input Type Required What it is
document string yes The document handle from document_create.

Example call:

{
  "name": "document_get",
  "arguments": {
    "document": "doc_hXtQklNVvktL"
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "structures": [
  {
   "atoms": [
    0,
    1,
    2,
    3
   ],
   "smiles": "[13CH3]C(=O)O",
   "formula": "C¹³CH4O2",
   "name": null
  },
  {
   "atoms": [
    4,
    5,
    6
   ],
   "smiles": "CCO",
   "formula": "C2H6O",
   "name": null
  }
 ],
 "objects": {
  "Arrow": 1,
  "Text": 1
 }
}

document_findings

Problems in a document. Everything Athanor's Problems list would flag in the document (valence, charges, stereo, drawing), each with what fixes it.

Input Type Required What it is
document string yes The document handle from document_create.

Example call:

{
  "name": "document_findings",
  "arguments": {
    "document": "doc_hXtQklNVvktL"
  }
}

Result:

{
 "document": "doc_hXtQklNVvktL",
 "findings": []
}

document_render

Draw a document. The whole page as SVG, in the journal style the document uses (ACS 1996 by default).

Input Type Required What it is
document string yes The document handle from document_create.

Example call:

{
  "name": "document_render",
  "arguments": {
    "document": "doc_hXtQklNVvktL"
  }
}

Result:

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
     width="0.7776in" height="1.1122in"
     viewBox="0 0 74.65 106.77">
  <desc>Athanor figure. ACS Document 1996: bond 0.2 in, line 0.0083 in, 10pt Arial.</desc>
  <g transform="translate(35.08 30.15)" fill="#000000" stroke="none" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="miter" font-family="Arial" font-size="13.33" text-anchor="start">
  <path d="M12.05 2.65 L11.72 1.27 L12.05 -0.11 L2.88 0.87 L2.88 1.27 L2.88 1.67 Z"/>
  <path d="M12.05 2.65 L11.72 1.27 L12.05 -0.11 L2.88 0.87 L2.88 1.27 L2.88 1.67 Z" fill="none" stroke="#000000" stroke-width="0.24" stroke-linejoin="round"/>
  <path d="M12.71 3 L19.73 -9.15" fill="none" stroke="#000000"/>
  <path d="M9.72 1.27 L16.73 -10.88" fill="none" stroke="#000000"/>
  <path d="M11.72 1.27 L18.23 12.56" fill="none" stroke="#000000"/>
  <path d="M-23.62 66.62 L-4.42 66.62" fill="none" stroke="#000000"/>
  <path d="M-4.42 66.62 L2.09 55.33" fill="none" stroke="#000000"/>
  <text x="-25.08" y="6.04">H</text>
  <text x="-19.58" y="8.98" font-size="9.33">3</text>
  <text x="-15.73" y="6.04">¹³C</text>
  <text x="18.57" y="-10.58">O</text>
  <text x="18.57" y="22.67">O</text>
  <text x="24.07" y="22.67">H</text>
  <text x="2.43" y="54.76">O</text>
  <text x="7.93" y="54.76">H</text>
  </g>
</svg>

document_export

Export a document. The document as a file: athanor (base64, Athanor's own format, everything kept), cdxml (ChemDraw), mol (V3000), smiles, or svg.

Input Type Required What it is
document string yes The document handle from document_create.
format athanor, cdxml, mol, smiles, svg yes

Example call:

{
  "name": "document_export",
  "arguments": {
    "document": "doc_hXtQklNVvktL",
    "format": "smiles"
  }
}

Result:

[13CH3]C(=O)O.CCO

Is this helpful?

Last updated Nov 13, 2026