Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ROWAN_API_KEY | Yes | Your Rowan API key (get it from labs.rowansci.com) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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:
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:
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:
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:
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:
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:
Valid output formats:
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):
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:
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:
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):
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:
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:
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:
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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |