Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ROWAN_API_KEYYesYour Rowan API key (get it from labs.rowansci.com)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
submit_basic_calculation_workflow

Submit a basic calculation workflow using Rowan v2 API.

Performs fundamental quantum chemistry calculations with configurable methods and computational tasks. Returns a workflow object for tracking progress.

Examples: # Isoprene Energy result = submit_basic_calculation_workflow( initial_molecule="CC(=C)C=C", method="uma_m_omol", tasks='["energy"]', engine="omol25", name="Isoprene Energy" )

# Constrained Butane result = submit_basic_calculation_workflow( initial_molecule="CCCC", method="gfn2_xtb", tasks='["optimize"]', engine="xtb", name="Constrained Butane" ) # Aspirin optimization result = submit_basic_calculation_workflow( initial_molecule="CC(=O)Oc1ccccc1C(=O)O", method="uma_m_omol", tasks='["optimize"]', engine="omol25", name="Aspirin Optimization" )
submit_conformer_search_workflow

Submit a conformer search workflow using Rowan v2 API.

Args: initial_molecule: SMILES string representing the initial structure final_method: Final optimization method (e.g., 'aimnet2_wb97md3', 'r2scan_3c', 'wb97x-d3_def2-tzvp') solvent: Solvent for implicit solvation (e.g., 'water', 'ethanol', 'dmso'). Empty string for gas phase. transition_state: Whether to search for transition state conformers name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Uses rapid conformer generation mode (RDKit/MMFF, 300 conformers, 0.10 Å RMSD cutoff)

Returns: Workflow object representing the submitted workflow

Example: # Diethyl ether conformer search result = submit_conformer_search_workflow( initial_molecule="CCOCC" )

submit_solubility_workflow

Submit a solubility prediction workflow using Rowan v2 API.

Args: initial_smiles: SMILES string of the molecule for solubility prediction solvents: JSON string list of solvents as SMILES or names (e.g., '["water", "ethanol", "CCO"]'). Empty string uses defaults temperatures: JSON string list of temperatures in Kelvin (e.g., '[298.15, 310.15]'). Empty string uses default range name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Predicts solubility (log S) of a molecule in multiple solvents at various temperatures using machine learning models.

Returns: Workflow object representing the submitted workflow

Example: # Basic solubility prediction result = submit_solubility_workflow( initial_smiles="CC(=O)Nc1ccc(O)cc1", solvents='["water", "ethanol"]', temperatures='[298.15, 310.15]' )

# With SMILES solvents result = submit_solubility_workflow( initial_smiles="CC(=O)O", solvents='["O", "CCO", "CCCCCC"]', temperatures='[273.15, 298.15, 323.15]' )

This workflow can take 5 minutes to complete.

submit_pka_workflow

Submit a microscopic pKa prediction workflow using Rowan v2 API.

Microscopic pKa: "At what pH does this site lose its proton, given the current protonation state of the rest of the molecule?" Calculates site-specific pKa values for individual ionizable groups considering their local environment.

Args: initial_molecule: The molecule to calculate the pKa of. SMILES string. pka_range: pKa range [min, max] to search, e.g., [2, 12] deprotonate_elements: Atomic numbers to consider for deprotonation, e.g., "[7, 8, 16]" for N, O, S. Empty string uses defaults. protonate_elements: Atomic numbers to consider for protonation, e.g., "[7, 8]" for N, O. Empty string uses defaults. name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Returns: Workflow object representing the submitted workflow

Examples: # Phenol pKa result = submit_pka_workflow( initial_molecule="Oc1ccccc1", name="pKa phenol", deprotonate_elements="[8]" # Only consider oxygen )

submit_redox_potential_workflow

Submit a redox potential calculation workflow using Rowan v2 API.

Args: initial_molecule: SMILES string for redox potential calculation reduction: Whether to calculate reduction potential (gaining electron) oxidization: Whether to calculate oxidation potential (losing electron) name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Calculates reduction and/or oxidation potentials for a molecule using quantum chemistry methods.

Returns: Workflow object representing the submitted workflow

Example: # Benzoic acid redox potential result = submit_redox_potential_workflow( initial_molecule="C1=CC=C(C=C1)C(=O)O", oxidization=True, reduction=True, name="Benzoic Acid Redox Potential" )

submit_fukui_workflow

Submit a Fukui indices calculation workflow using Rowan v2 API.

Args: initial_molecule: SMILES string for Fukui analysis optimization_method: Method for geometry optimization. Options: 'gfn2_xtb', 'r2scan_3c', 'aimnet2_wb97md3' fukui_method: Method for Fukui calculation. Options: 'gfn1_xtb', 'gfn2_xtb' solvent_settings: Solvent configuration JSON string, e.g., '{"solvent": "water", "model": "alpb"}'. Empty for gas phase. name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Calculates Fukui indices to predict molecular reactivity at different sites. Fukui indices indicate susceptibility to nucleophilic/electrophilic attack.

Returns: Workflow object representing the submitted workflow

Example: # Benzoic Acid Fukui result = submit_fukui_workflow( initial_molecule="C1=CC=C(C=C1)C(=O)O", optimization_method="gfn2_xtb", fukui_method="gfn1_xtb", name="Benzoic Acid Fukui" )

submit_tautomer_search_workflow

Submit a tautomer search workflow using Rowan v2 API.

Args: initial_molecule: SMILES string to search for tautomers name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Searches for different tautomeric forms of a molecule and evaluates their relative stabilities. Tautomers are structural isomers that readily interconvert.

Returns: Workflow object representing the submitted workflow

Example: # 2-Pyridone tautomers result = submit_tautomer_search_workflow( initial_molecule="O=C1C=CC=CN1", name="2-Pyridone Tautomers" )

submit_descriptors_workflow

Submit a molecular descriptors calculation workflow using Rowan v2 API.

Args: initial_molecule: SMILES string or molecule object for descriptor calculation name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Calculates a comprehensive set of molecular descriptors including:

  • Physical properties (MW, logP, TPSA, etc.)

  • Electronic properties (HOMO/LUMO, dipole moment, etc.)

  • Structural features (rotatable bonds, H-bond donors/acceptors, etc.)

  • Topological indices

Returns: Workflow object representing the submitted workflow

Example: # Basic descriptor calculation result = submit_descriptors_workflow( initial_molecule="CC(=O)Nc1ccc(O)cc1" )

# For complex molecule result = submit_descriptors_workflow( initial_molecule="CN1C=NC2=C1C(=O)N(C(=O)N2C)C", name="Caffeine Descriptors" )

This workflow typically takes 10-30 seconds to complete.

submit_scan_workflow

Submit a potential energy surface scan workflow using Rowan v2 API.

Args: initial_molecule: SMILES string to scan scan_settings: JSON string of scan parameters: '{"type": "dihedral"/"bond"/"angle", "atoms": [1-indexed], "start": value, "stop": value, "num": points}' calculation_engine: Computational engine: 'omol25', 'xtb', or 'psi4' calculation_method: Calculation method (depends on engine): 'uma_m_omol', 'gfn2_xtb', 'r2scan_3c' wavefront_propagation: Use previous scan point geometries as starting points for faster convergence name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Performs systematic scans along specified molecular coordinates (bonds, angles, or dihedrals) to map the potential energy surface.

Returns: Workflow object representing the submitted workflow

Example: # Water angle scan result = submit_scan_workflow( initial_molecule="O", # Water SMILES name="Water Angle scan", scan_settings='{"type": "angle", "atoms": [2, 1, 3], "start": 100, "stop": 110, "num": 5}', calculation_method="GFN2-xTB", calculation_engine="xtb" )

This workflow can take 40 minutes to complete.

submit_irc_workflow

Submits an Intrinsic Reaction Coordinate (IRC) workflow to the API.

Args: initial_molecule: SMILES string for IRC calculation method: Computational method for IRC. Options: 'uma_m_omol', 'gfn2_xtb', 'r2scan_3c' preopt: Whether to pre-optimize the transition state before IRC step_size: Step size for IRC path tracing in Bohr (typically 0.03-0.1) max_irc_steps: Maximum number of IRC steps in each direction from TS name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Returns: Workflow object representing the submitted IRC workflow

Example: # HNCO + H₂O IRC result = submit_irc_workflow( initial_molecule="N=C([O-])[OH2+]", name="HNCO + H₂O - IRC", preopt=False )

submit_protein_cofolding_workflow

Submits a protein cofolding workflow to the API.

Args: initial_protein_sequences: JSON string list of protein sequences (amino acid strings) to cofold initial_smiles_list: JSON string list of ligand SMILES strings to include in cofolding. None for protein-only ligand_binding_affinity_index: Index of ligand in initial_smiles_list for binding affinity calculation (e.g., "0"). None skips affinity use_msa_server: Whether to use MSA (Multiple Sequence Alignment) server for improved accuracy use_potentials: Whether to use statistical potentials in the calculation compute_strain: Whether to compute the strain of the pose (if pose_refinement is enabled) do_pose_refinement: Whether to optimize non-rotatable bonds in output poses name: Workflow name for identification and tracking model: Cofolding model to use (defaults to stjames.CofoldingModel.BOLTZ_2.value) folder_uuid: UUID of folder to organize this workflow. None uses default folder. max_credits: Maximum credits to spend on this calculation. None for no limit.

Returns: Workflow object representing the submitted workflow

Example: # Torcetrapib Cofolding result = submit_protein_cofolding_workflow( initial_protein_sequences='["ASKGTSHEAGIVCRITKPALLVLNHETAKVIQTAFQRASYPDITGEKAMMLLGQVKYGLHNIQISHLSIASSQVELVEAKSIDVSIQDVSVVFKGTLKYGYTTAWWLGIDQSIDFEIDSAIDLQINTQLTADSGRVRTDAPDCYLSFHKLLLHLQGEREPGWIKQLFTNFISFTLKLVLKGQICKEINVISNIMADFVQTRAASILSDGDIGVDISLTGDPVITASYLESHHKGHFIYKDVSEDLPLPTFSPTLLGDSRMLYFWFSERVFHSLAKVAFQDGRLMLSLMGDEFKAVLETWGFNTNQEIFQEVVGGFPSQAQVTVHCLKMPKISCQNKGVVVDSSVMVKFLFPRPDQQHSVAYTFEEDIVTTVQASYSKKKLFLSLLDFQITPKTVSNLTESSSESIQSFLQSMITAVGIPEVMSRLEVVFTALMNSKGVSLFDIINPEIITRDGFLLLQMDFGFPEHLLVDFLQSLS"]', initial_smiles_list='["CCOC(=O)N1c2ccc(C(F)(F)F)cc2C@@HC[C@H]1CC"]', ligand_binding_affinity_index="0", name="Torcetrapib Cofolding", do_pose_refinement=True, compute_strain=True )

submit_docking_workflow

Submits a Docking workflow to the API.

Args: protein: Protein for docking. Can be: 1) PDB ID string (e.g., '1HCK'), 2) Protein UUID string, 3) JSON string dict with 'pdb_id' and optional 'name' pocket: Binding pocket as JSON string "[[x1,y1,z1], [x2,y2,z2]]" defining two opposite corners of the docking box initial_molecule: SMILES string representing the ligand executable: Docking software (default: 'vina'). Options: 'vina', 'qvina2', 'smina' scoring_function: Scoring function (default: 'vinardo'). Options: 'vina', 'vinardo', 'ad4' exhaustiveness: Search exhaustiveness (default: 8). Higher values = more thorough but slower do_csearch: Whether to perform conformational search on the ligand before docking (default: False) do_optimization: Whether to optimize the ligand geometry before docking (default: False) do_pose_refinement: Whether to optimize non-rotatable bonds in output poses (default: False) name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Automatically handles protein creation from PDB ID and sanitization if needed.

Returns: Workflow object representing the submitted workflow

Examples: # Example 1: Using PDB ID directly result = submit_docking_workflow( protein="1HCK", # PDB ID pocket="[[103.55, 100.59, 82.99], [27.76, 32.67, 48.79]]", initial_molecule="CCC(C)(C)NC1=NCC2(CCC(=O)C2C)N1", name="CDK2 Docking" )

# Example 2: Using dict with PDB ID and custom name result = submit_docking_workflow( protein='{"pdb_id": "1HCK", "name": "My CDK2 Protein"}', pocket="[[103.55, 100.59, 82.99], [27.76, 32.67, 48.79]]", initial_molecule="CCC(C)(C)NC1=NCC2(CCC(=O)C2C)N1" ) # Example 3: Using existing protein UUID result = submit_docking_workflow( protein="abc123-def456-...", # Protein UUID pocket="[[103.55, 100.59, 82.99], [27.76, 32.67, 48.79]]", initial_molecule="CCC(C)(C)NC1=NCC2(CCC(=O)C2C)N1" )
submit_macropka_workflow

Submit a Macroscopic pKa workflow using Rowan v2 API.

Calculates pKa values, microstate populations, and net charge across pH range. PERFORMANCE: compute_aqueous_solubility=False is 8x faster (~5 min vs ~40 min).

Fast mode (False): pKa values, ionization states, isoelectric point. Sufficient to determine which pH has highest/lowest solubility (ionization dominates).

Slow mode (True): Adds conformer search + solvation free energies for quantitative solubility predictions (mg/mL). Only needed for absolute values or fold-changes.

Args: initial_smiles: SMILES string min_pH: Minimum pH (default: 0) max_pH: Maximum pH (default: 14) min_charge: Minimum charge (default: -2) max_charge: Maximum charge (default: 2) compute_solvation_energy: Compute solvation energy corrections (default: False) compute_aqueous_solubility: Enable quantitative solubility mode (default: False) name: Workflow name folder_uuid: Folder UUID (empty = default) max_credits: Credit limit (0 = no limit)

Returns: Workflow object. WAIT ~5 min (fast) or ~40 min (slow) before checking results. Use workflow_is_finished() to poll (not more than once per minute to avoid loops).

Examples: # Fast: "At which pH is solubility highest?" submit_macropka_workflow(initial_smiles=smiles, compute_aqueous_solubility=False)

# Slow: "What is solubility at pH 7 in mg/mL?" submit_macropka_workflow(initial_smiles=smiles, compute_aqueous_solubility=True)
submit_strain_workflow

Submit a strain energy calculation workflow using Rowan v2 API.

Args: initial_molecule: SMILES string of the molecule for strain energy calculation name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Calculates molecular strain energy by comparing the actual molecular energy to a hypothetical unstrained reference structure. Useful for analyzing:

  • Ring strain in cyclic systems

  • Conformational strain in crowded molecules

  • Steric interactions in cage compounds

Returns: Workflow object representing the submitted workflow

Examples: # Hexane autogenerated conformer strain result = submit_strain_workflow( initial_molecule="CCCCCC", name="test autogen hexane strain" )

submit_ion_mobility_workflow

Submit an ion mobility (CCS) prediction workflow using Rowan v2 API.

Args: initial_molecule: SMILES string of the molecule for collision cross-section prediction temperature: Temperature in Kelvin for CCS calculation (default: 300K) protonate: Whether to automatically protonate the molecule (default: False) do_csearch: Whether to perform conformational search (default: True) do_optimization: Whether to optimize geometry (default: True) name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Predicts collision cross-section (CCS) values for ion mobility mass spectrometry using conformational averaging and theoretical calculations. Useful for:

  • Validating experimental IM-MS data

  • Predicting CCS values for method development

  • Structural characterization of biomolecules

Returns: Workflow object representing the submitted workflow

Examples: # Pyridinium CCS result = submit_ion_mobility_workflow( initial_molecule="c1ccccn1", protonate=True, name="pyridinium CCS" )

submit_double_ended_ts_search_workflow

Submit a double-ended transition state search workflow using Rowan v2 API.

IMPORTANT: Reactant and product MUST have the exact same number and types of atoms, just in different arrangements (e.g., C#N and [C-]#[NH+] both have 1C, 1N, 1H). The workflow will fail if atom counts don't match.

Args: reactant: Reactant molecule as SMILES string. Must have same atoms as product. product: Product molecule as SMILES string. Must have same atoms as reactant. calculation_settings: JSON string for calculation settings. Empty string uses defaults. search_settings: JSON string for TS search configuration. Empty string uses defaults. optimize_inputs: Whether to optimize reactant/product before search (default: False) optimize_ts: Whether to optimize found transition state (default: True) name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Locates transition states connecting known reactant and product structures using double-ended search algorithms. More robust than single-ended TS optimization when both endpoints are known.

Returns: Workflow object representing the submitted workflow

Examples: # HCN isomerization - both have 1C, 1N, 1H ✓ result = submit_double_ended_ts_search_workflow( reactant="C#N", # HCN (hydrogen cyanide) product="[C-]#[NH+]", # CNH (isocyanic acid tautomer) optimize_inputs=True, optimize_ts=True, name="H-C≡N Isomerization" )

# Keto-enol tautomerization - both have C3H6O ✓ result = submit_double_ended_ts_search_workflow( reactant="CC(=O)C", # Acetone (keto form) product="CC(O)=C", # Prop-1-en-2-ol (enol form) name="Keto-Enol Tautomerization" )
submit_pose_analysis_md_workflow

Submit a pose analysis molecular dynamics workflow using Rowan v2 API.

IMPORTANT: The protein parameter must be a UUID (36-character string) of an existing protein in your Rowan account. You cannot use PDB IDs directly. Use the create_protein_from_pdb_id tool first to create a protein, then use its UUID here.

Args: protein: UUID of an existing protein (e.g., "abc123-def456-..."). Get this from create_protein_from_pdb_id or from a previous workflow initial_smiles: SMILES string of the ligand molecule num_trajectories: Number of independent MD simulations to run (default: 1) simulation_time_ns: Simulation time in nanoseconds per trajectory (default: 10ns) ligand_residue_name: Residue name for the ligand in PDB structure (default: "LIG") name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Runs molecular dynamics simulations on protein-ligand complexes to:

  • Assess binding pose stability over time

  • Calculate binding free energies

  • Analyze protein-ligand interactions

  • Validate docking results with dynamics

Returns: Workflow object representing the submitted workflow

Examples: # Step 1: First create a protein from PDB ID protein_obj = create_protein_from_pdb_id( name="CDK2 Protein", code="1HCK" ) protein_uuid = protein_obj.uuid # Get the UUID

# Step 2: Run MD simulation with the protein UUID result = submit_pose_analysis_md_workflow( protein=protein_uuid, # Use the UUID from step 1 initial_smiles="CCC(C)(C)NC1=NCC2(CCC(=O)C2C)N1", num_trajectories=1, simulation_time_ns=10, name="CDK2 Ligand MD" ) # Or use a protein UUID from list_proteins() output result = submit_pose_analysis_md_workflow( protein="550e8400-e29b-41d4-a716-446655440000", # UUID format initial_smiles="CCO", num_trajectories=1, simulation_time_ns=5, name="Quick MD Validation" )

This workflow can take 1-3 hours depending on simulation length.

submit_batch_docking_workflow

Submit a batch docking workflow for high-throughput virtual screening using Rowan v2 API.

Args: smiles_list: JSON string list of ligand SMILES strings to dock protein: Protein for docking. Can be: 1) PDB ID string (e.g., '1HCK'), 2) Protein UUID string pocket: Binding pocket as JSON string "[[x1,y1,z1], [x2,y2,z2]]" defining box corners executable: Docking software (default: 'qvina2'). Options: 'vina', 'qvina2', 'smina' scoring_function: Scoring function (default: 'vina'). Options: 'vina', 'vinardo', 'ad4' exhaustiveness: Search exhaustiveness (default: 8). Higher values = more thorough but slower name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Performs high-throughput docking of multiple ligands against a single protein target. Useful for:

  • Virtual screening campaigns

  • Lead optimization

  • Fragment library screening

  • Structure-activity relationship studies

Returns: Workflow object representing the submitted workflow

Example: # CDK2 batch docking screen (shortened from 111 to 5 ligands) result = submit_batch_docking_workflow( smiles_list='["CCC(C)(C)NC1=NCC2(CCC(=O)C2C)N1", "CCC(C)CN=C1NCC2(CCCOC2)CN1", "CC(C)CCNC1=NCC2CC(COC2=N)O1", "CCC(CC)NC1=NCC2CC(CO)CC12", "CCC(C)CN=C1NC=C2CCC(O)CC2=N1"]', protein="1HCK", pocket="[[103.55, 100.59, 82.99], [27.76, 32.67, 48.79]]", name="Docking CDK2" )

submit_msa_workflow

Submit a multiple sequence alignment (MSA) workflow using Rowan v2 API.

Args: initial_protein_sequences: JSON string list of protein sequences (amino acid strings) output_formats: JSON string list of desired output formats. Valid options: 'colabfold', 'chai', 'boltz' name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Generates multiple sequence alignments for protein sequences using advanced alignment algorithms optimized for structure prediction tools. Useful for:

  • Protein structure prediction with AlphaFold2/ColabFold

  • Structure prediction with Chai-1

  • Structure prediction with Boltz-1

  • Evolutionary analysis and homology modeling

Valid output formats:

  • 'colabfold': MSA format for ColabFold/AlphaFold2 structure prediction

  • 'chai': MSA format optimized for Chai-1 structure prediction

  • 'boltz': MSA format optimized for Boltz-1 structure prediction

Returns: Workflow object representing the submitted workflow

Examples: # MSA for ColabFold structure prediction result = submit_msa_workflow( initial_protein_sequences='["MKLLVLGLLLAAAVPGTRAAQMSFKLIGTEYFTLQIRGRERFEMFRELN"]', output_formats='["colabfold"]', name="Insulin MSA for ColabFold" )

# MSA for multiple prediction tools result = submit_msa_workflow( initial_protein_sequences='["MKTAYIAKQRQISFVKSHFSRQ"]', output_formats='["colabfold", "chai", "boltz"]', name="Multi-tool MSA" ) # MSA for Chai-1 structure prediction result = submit_msa_workflow( initial_protein_sequences='["GSTLGRIADRDLLELDTLAAKVPSDGAKDLVTDIVNRQIYDG"]', output_formats='["chai"]', name="Chai-1 MSA" )

This workflow can take 10-30 minutes depending on sequence length.

batch_submit_workflow

Submit multiple workflows of the same type for different molecules using Rowan v2 API.

FORMATTING NOTES (for MCP Inspector):

  • initial_molecules: Enter as JSON array without backslashes: ["CCO", "CCCO", "CCCCO"]

  • workflow_data: Enter as JSON object without backslashes: {"key": "value"}

  • names: Enter as comma-separated text OR JSON array: Phenol pKa, Acetic Acid pKa

Args: workflow_type: Type of workflow to run (e.g., pka, descriptors, solubility, redox_potential) initial_molecules: JSON array of SMILES strings to process in batch workflow_data: JSON object of workflow-specific parameters (default: empty for defaults) names: Comma-separated workflow names or JSON array (default: auto-generated) folder_uuid: UUID of folder to organize workflows. Empty string uses default folder. max_credits: Maximum credits to spend per workflow. 0 for no limit.

Processes multiple molecules through the same workflow type efficiently. Useful for:

  • High-throughput property prediction

  • Library screening

  • Dataset generation for machine learning

  • Systematic comparison of molecules

Supported workflow types include: 'pka', 'descriptors', 'solubility', 'redox_potential', 'conformer_search', 'tautomers', 'strain', 'ion_mobility', 'fukui', and more. Note: 'nmr' requires subscription upgrade and is not currently available.

Returns: List of Workflow objects representing the submitted workflows

Examples: # Batch pKa calculations (MCP Inspector format) workflow_type: pka initial_molecules: ["Oc1ccccc1", "CC(=O)O", "c1c[nH]cn1"] names: Phenol pKa, Acetic Acid pKa, Imidazole pKa

# Batch descriptor generation workflow_type: descriptors initial_molecules: ["CCO", "CCCO", "CCCCO", "CCCCCO"] names: Ethanol, Propanol, Butanol, Pentanol # Batch conformer search with custom settings workflow_type: conformer_search initial_molecules: ["CCOCC", "c1ccccc1C", "CC(C)C"] workflow_data: {"conf_gen_mode": "rapid", "final_method": "aimnet2_wb97md3"} # Batch solubility predictions workflow_type: solubility initial_molecules: ["CC(=O)Nc1ccc(O)cc1", "CN1C=NC2=C1C(=O)N(C(=O)N2C)C"] workflow_data: {"solvents": ["water", "ethanol"], "temperatures": [298.15, 310.15]}

Time varies based on workflow type and number of molecules.

submit_admet_workflow

Submit an ADMET workflow to predict drug-like properties using ADMET-AI.

Args: initial_molecule: SMILES string representing the molecule name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

ADMET (Absorption, Distribution, Metabolism, Excretion, Toxicity) predictions help assess drug-likeness and pharmacokinetic properties of molecules early in the drug discovery process.

Uses the ADMET-AI model to predict various pharmacokinetic properties automatically.

Returns: Workflow object representing the submitted workflow

Examples: # Predict ADMET properties for aspirin result = submit_admet_workflow( initial_molecule="CC(=O)Nc1ccc(O)cc1", name="Aspirin ADMET" )

# Predict ADMET properties for caffeine result = submit_admet_workflow( initial_molecule="CN1C=NC2=C1C(=O)N(C(=O)N2C)C", name="Caffeine ADMET" )
submit_conformers_workflow

Submit a conformers workflow to generate molecular conformations.

Args: initial_molecule: SMILES string representing the molecule num_confs_considered: Total conformers to evaluate (default: 100) num_confs_taken: Conformers to retain after filtering (default: 50) rmsd_cutoff: RMSD threshold for uniqueness in Angstroms (default: 0.1) max_energy: Energy cutoff in kcal/mol for acceptance (default: 5.0) final_method: Quantum method for optimization (default: 'aimnet2_wb97md3') solvent: Solvent environment, name or SMILES (default: 'water', empty for gas phase) transition_state: Target transition state geometry (default: False) name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

This workflow generates conformers (different 3D spatial arrangements of the same molecule) which is essential for accurate property predictions and understanding molecular flexibility.

Note: This is different from submit_conformer_search_workflow which performs conformational search with optimization. This workflow focuses on conformer generation and enumeration.

Returns: Workflow object representing the submitted workflow

submit_hydrogen_bond_basicity_workflow

Submit a hydrogen bond basicity workflow to predict pKBHX values.

Args: initial_molecule: SMILES string representing the molecule do_csearch: Whether to perform conformer search before calculation (default: False) do_optimization: Whether to optimize geometry before calculation (default: False) name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Hydrogen bond basicity (pKBHX) quantifies the ability of a molecule to accept hydrogen bonds, which is important for understanding molecular interactions, solubility, and drug-receptor binding.

Returns: Workflow object representing the submitted workflow

Examples: # Basic hydrogen bond basicity prediction result = submit_hydrogen_bond_basicity_workflow( initial_molecule="CCO", name="Ethanol H-bond basicity" )

# With conformer search and optimization result = submit_hydrogen_bond_basicity_workflow( initial_molecule="c1ccc(cc1)N", do_csearch=True, do_optimization=True, name="Aniline H-bond basicity (optimized)" ) # Predict for a drug molecule result = submit_hydrogen_bond_basicity_workflow( initial_molecule="CN1C=NC2=C1C(=O)N(C(=O)N2C)C", do_csearch=True, name="Caffeine H-bond basicity" )
submit_multistage_opt_workflow

Submit a multi-stage optimization workflow for sequential geometry refinement.

Args: initial_molecule: SMILES string representing the molecule xtb_preopt: Pre-optimize with xTB before main stages (default: False) transition_state: Optimize to a transition state instead of minimum (default: False) frequencies: Calculate vibrational frequencies after optimization (default: False) solvent: Solvent environment, name or SMILES (default: empty for gas phase) name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Multi-stage optimization uses sequential calculations with increasing accuracy to efficiently find high-quality optimized geometries. This is particularly useful for:

  • Large or complex molecules

  • Transition state searches

  • High-accuracy geometry requirements

  • Systems where initial geometry is poor

Returns: Workflow object representing the submitted workflow

Examples: # Basic multi-stage optimization result = submit_multistage_opt_workflow( initial_molecule="CC(=O)O", name="Acetic acid optimization" )

# High-accuracy optimization with frequencies result = submit_multistage_opt_workflow( initial_molecule="c1ccccc1", frequencies=True, name="Benzene with frequencies" ) # Transition state optimization with xTB pre-optimization result = submit_multistage_opt_workflow( initial_molecule="CC=CC", transition_state=True, xtb_preopt=True, name="Butene rotation TS" ) # Solvated molecule optimization result = submit_multistage_opt_workflow( initial_molecule="CN1C=NC2=C1C(=O)N(C(=O)N2C)C", solvent="water", frequencies=True, name="Caffeine in water" ) # Fast screening optimization result = submit_multistage_opt_workflow( initial_molecule="CCCCCCCCCC", xtb_preopt=True, name="Decane quick opt" )
submit_spin_states_workflow

Submit a spin states workflow to calculate energies of different spin multiplicities.

FORMATTING NOTES (for MCP Inspector):

  • initial_molecule: Plain SMILES string (e.g., CCO, O=O)

  • states: JSON array without outer quotes (e.g., [[0,1], [0,3]])

Args: initial_molecule: SMILES string representing the molecule states: JSON array of [charge, multiplicity] pairs to calculate Multiplicity = 2S + 1 where S is total spin - Singlet (S=0): multiplicity = 1 (paired electrons) - Doublet (S=1/2): multiplicity = 2 (one unpaired electron) - Triplet (S=1): multiplicity = 3 (two unpaired electrons) - Quartet (S=3/2): multiplicity = 4 (three unpaired electrons) - Quintet (S=2): multiplicity = 5 (four unpaired electrons) solvent: Solvent environment, name or SMILES (default: empty for gas phase) name: Workflow name for identification and tracking folder_uuid: UUID of folder to organize this workflow. Empty string uses default folder. max_credits: Maximum credits to spend on this calculation. 0 for no limit.

Spin state calculations are essential for understanding:

  • Transition metal complexes and coordination chemistry

  • Radical species and open-shell molecules

  • Magnetic properties and spin crossover

  • Reaction mechanisms involving spin forbidden transitions

Returns: Workflow object representing the submitted workflow

Examples (MCP Inspector format): # Compare singlet and triplet states for oxygen initial_molecule: O=O states: [[0,1], [0,3]] name: O2 spin states

# Ethanol singlet and triplet (simple test) initial_molecule: CCO states: [[0,1], [0,3]] name: Ethanol spin states # Methylene carbene singlet and triplet initial_molecule: [CH2] states: [[0,1], [0,3]] name: Methylene spin states # Iron complex with multiple spin states initial_molecule: [Fe+2] states: [[2,1], [2,3], [2,5]] solvent: water name: Fe2+ aqueous spin states
molecule_lookup

Convert molecule names to SMILES using Chemical Identifier Resolver (CIR).

Args: molecule_name: Common name, IUPAC name, or CAS number of molecule (e.g., 'aspirin', 'caffeine', '50-78-2') fallback_to_input: If lookup fails, return the input string assuming it might be SMILES

This tool enables natural language input for molecules by converting common names, IUPAC names, CAS numbers, and other identifiers to SMILES strings that can be used with Rowan workflows.

Supported Input Types:

  • Common names: 'aspirin', 'caffeine', 'benzene', 'glucose'

  • IUPAC names: '2-acetoxybenzoic acid', '1,3,7-trimethylpurine-2,6-dione'

  • CAS numbers: '50-78-2' (aspirin), '58-08-2' (caffeine)

  • InChI strings

  • Already valid SMILES (will be validated)

Returns: SMILES string if successful, error message if not found

Examples: # Common drug name result = molecule_lookup("aspirin") # Returns: "CC(=O)Oc1ccccc1C(=O)O"

# IUPAC name result = molecule_lookup("2-acetoxybenzoic acid") # Returns: "CC(=O)Oc1ccccc1C(=O)O" # CAS number result = molecule_lookup("50-78-2") # Returns: "CC(=O)Oc1ccccc1C(=O)O" # Complex molecule result = molecule_lookup("paracetamol") # Returns: "CC(=O)Nc1ccc(O)cc1"
batch_molecule_lookup

Convert multiple molecule names to SMILES in batch.

Args: molecule_names: List of molecule names to convert to SMILES skip_failures: Skip molecules that fail lookup instead of stopping

Useful for preparing multiple molecules for workflows or screening.

Returns: Dictionary mapping input names to SMILES strings (or error messages)

Examples: # Drug screening set result = batch_molecule_lookup([ "aspirin", "ibuprofen", "paracetamol", "caffeine" ]) # Returns: { # "aspirin": "CC(=O)Oc1ccccc1C(=O)O", # "ibuprofen": "CC(C)Cc1ccc(C(C)C(=O)O)cc1", # "paracetamol": "CC(=O)Nc1ccc(O)cc1", # "caffeine": "CN1C=NC2=C1C(=O)N(C(=O)N2C)C" # }

# Mixed input types result = batch_molecule_lookup([ "benzene", # Common name "50-78-2", # CAS number "ethanoic acid" # IUPAC name ])
validate_smiles

Validate a SMILES string and return basic molecular properties.

Args: smiles: SMILES string to validate

Uses RDKit to validate SMILES and extract basic properties.

Returns: Dictionary with validation status and properties if valid

Examples: result = validate_smiles("CC(=O)O") # Returns: { # "valid": True, # "canonical_smiles": "CC(=O)O", # "molecular_formula": "C2H4O2", # "molecular_weight": 60.05 # }

workflow_stop

Stop a running workflow.

Args: workflow_uuid: UUID of the running workflow to stop

Returns: Dictionary with confirmation message

workflow_delete

Delete a workflow.

Args: workflow_uuid: UUID of the workflow to permanently delete

This permanently removes the workflow and its results from the database.

Returns: Dictionary with confirmation message

retrieve_workflow

Retrieve complete workflow data including status, results, and metadata.

This is THE primary function for getting workflow information in a single API call. Returns all available workflow data including:

  • Status information (status_code, is_finished, is_successful, is_failed, is_running)

  • Results data (in 'data' field when workflow is complete)

  • Metadata (name, timestamps, credits, notes, etc.)

Args: uuid: UUID of the workflow to retrieve

Returns: Dictionary with complete workflow data

Example: >>> # Check status and get results in one call >>> workflow = retrieve_workflow("workflow-uuid-here") >>> >>> if workflow["is_finished"]: ... if workflow["is_successful"]: ... results = workflow["data"] ... print(f"Success! Results: {results}") ... print(f"Credits used: {workflow['credits_charged']}") ... elif workflow["is_failed"]: ... print(f"Failed: {workflow['status_description']}") >>> else: ... print(f"Still running: {workflow['status_description']}") >>> >>> # Poll for completion >>> import time >>> while not workflow["is_finished"]: ... time.sleep(60) # Wait 1 minute ... workflow = retrieve_workflow(uuid)

Raises: ValueError: If workflow UUID is invalid or workflow not found RuntimeError: If API authentication fails or other API errors occur

retrieve_calculation_molecules

Retrieve a list of molecules from a calculation.

Args: uuid: UUID of the calculation to retrieve molecules from

Returns: List of dictionaries representing the molecules in the calculation

Raises: HTTPError: If the API request fails

list_workflows

List workflows subject to the specified criteria.

Args: parent_uuid: UUID of parent folder to filter by. Empty string for all folders name_contains: Substring to search for in workflow names. Empty string for all names public: Filter by public status ("true"/"false"). Empty string for both starred: Filter by starred status ("true"/"false"). Empty string for both status: Filter by workflow status code. Empty string for all statuses workflow_type: Filter by workflow type (e.g., 'conformer_search', 'pka'). Empty string for all types page: Page number for pagination (0-indexed) size: Number of workflows per page

Returns: List of workflow dictionaries that match the search criteria

Raises: HTTPError: If the request to the API fails

workflow_update

Update workflow details.

Args: workflow_uuid: UUID of the workflow to update name: New name for the workflow. Empty string to keep current name notes: New notes/description for the workflow. Empty string to keep current notes starred: Set starred status ("true"/"false"). Empty string to keep current status public: Set public visibility ("true"/"false"). Empty string to keep current status

Returns: Dictionary with updated workflow information

workflow_delete_data

Delete workflow data while keeping the workflow record.

Args: workflow_uuid: UUID of the workflow whose data to delete (keeps workflow record)

Returns: Dictionary with confirmation message

create_protein_from_pdb_id

Create a protein from a PDB ID.

Args: name: Name for the protein code: PDB ID code (e.g., '1HCK')

Returns: Dictionary containing protein information

retrieve_protein

Retrieve a protein by UUID.

Args: uuid: UUID of the protein to retrieve

Returns: Dictionary containing the protein data

list_proteins

List proteins.

Args: page: Page number (0-indexed) size: Number per page

Returns: List of protein dictionaries

upload_protein

Upload a protein from a PDB file.

Args: name: Name for the protein file_path: Path to PDB file

Returns: Dictionary containing protein information

delete_protein

Delete a protein.

Args: uuid: UUID of the protein to delete

Returns: Dictionary with confirmation message

sanitize_protein

Sanitize a protein for docking.

Args: uuid: UUID of the protein to sanitize

Returns: Dictionary with sanitization status

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/k-yenko/rowan-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server