Skip to main content
The ESMFold2 model predicts high-resolution, all-atom 3D structures of biomolecular complexes directly from sequence, with optional multiple sequence alignment (MSA) input for enhanced accuracy on challenging targets. To fold a protein or a complex, you can prompt your AI agent through the Biohub MCP, and the server will run the ESMFold2 model and returns its confidence scores for your protein.
Folds are billed to the Biohub account you are signed in with. See Costs.

What you can ask

Ask in your own words, and your assistant picks the tools and runs them in order. For example:

Fold GFP with ESMFold2 and tell me how confident the prediction is.

Fold human hemoglobin's alpha and beta chains together and tell me how confident the model is in their interface.

Fold PETase from Ideonella sakaiensis at maximum accuracy, check the run until it finishes, and compare its scores with a standard fold.

You can use sequences instead of protein names in any of these prompts.

Which tools your assistant uses

How a fold runs

1

Your assistant gets the sequences

When you name a protein or give a UniProt accession, your assistant first looks up its sequence with the free esm_atlas_search_uniprot tool. You can also use the protein sequence directly. A ligand can given by its name or as a SMILES string, as described below.
2

Small folds finish within the call

For up to 768 tokens, esmfold2_fold_complex folds right away and returns done with the scores and the exact cost.
3

Larger folds become a run

Inputs over 768 tokens, folds you ask to batch, and every maximum-accuracy fold return queued with a run_id.
4

Your assistant checks the run

biohub_get_inference_run reads the run and waits up to 5 seconds for it to finish. Your assistant calls it again until the run is done. The confidence scores appear in the result once the run is done.
Small folds return the confidence scores in step 2, as soon as the call finishes. Larger folds return them in step 4, when biohub_get_inference_run reports the run as done. Biohub keeps a run’s result for 31 days. A run that hasn’t started within 24 hours is cancelled and not charged.
A name can match several proteins. “PETase” alone can return other PET-degrading enzymes first, so add the organism, as in “PETase from Ideonella sakaiensis”, or give the UniProt accession. Your assistant can tell you which entry it folded.
Every fold call starts new work and is billed again, even for the same input. If a call returns indeterminate, the fold may have run and been billed, so don’t retry it automatically.

Read the scores

All scores run from 0 to 1, and higher means the model is more confident. A high pTM with a low interface pTM means each part is confident on its own, but the contact between them is not. These scores are the model’s confidence, not measured binding or experimental validation.

Get the full outputs

The folding tools return summary scores, so the results stay small enough for your assistant to read. They don’t return the large arrays a fold can produce: atom coordinates, per-residue pLDDT, the PAE matrix, the distogram, or embeddings. To get those, call the Biohub Platform API with an API key:
  • A result includes coordinates and per-residue pLDDT. PAE and embeddings are included only when the request asks for them, with options such as include_pae and include_embeddings, and the folding tools don’t ask for them.
  • Coordinate and embedding arrays can be large. Response formats explains how to receive them in a smaller binary format and compress the response.

Costs

Costs are measured in Biohub credits and grow with the square of the input size.
  • A batch run is what you get with use_batch_api, and for any input over 768 tokens.
  • A fold within the call returns what Biohub billed. A run returns its price when it is queued, and the run’s usage shows what Biohub billed.
  • When an input has a ligand, a queued run’s price can be an upper bound, because Biohub may count the ligand as fewer tokens.
  • Maximum accuracy has no batch discount, and by default your account can start 10 maximum-accuracy runs a day. A run that fails isn’t charged, but it still counts toward the 10.

Tokens

A token is one residue or nucleotide, or one heavy atom (any atom except hydrogen) of a ligand, and every chain counts. For example, a 300-residue homodimer with one ATP is 300 × 2 + 31 = 631 tokens, because ATP has 31 heavy atoms.

Fold a protein or complex

esmfold2_fold_complex folds one protein, several protein chains, or proteins with DNA, RNA, or ligands. Examples are an antibody’s heavy and light chains, a homodimer, a binder and its target, or a protein bound to ATP.

Inputs

entities

Each entry in entities is one chain, named A, B, C, and so on in the order you list them. The tool takes sequences, so when you name a protein, your assistant fills in its sequence.
  • Give a ligand either ccd or smiles, not both.
  • Give each chain as its own entry: | and : inside a sequence are refused, and there is no copies field. For a homodimer, list the protein twice.
  • A protein sequence that looks like DNA or RNA still folds as a protein, with a warning.
This example folds a homodimer with one ATP:

Results

esmfold2_fold_complex and esmfold2_fold_max_accuracy return the same fields. This is a fold of GB1 on the Biohub Platform:

Fold at maximum accuracy

esmfold2_fold_max_accuracy takes the same entities as esmfold2_fold_complex, and nothing else.
  • Biohub builds an alignment from UniRef30 and ColabFold; the tool can’t take your own.
  • It folds five times with different seeds using esmfold2-2026-05-cutoff-2025, needs at least four to succeed, and keeps the most confident: the highest ipTM for a complex, or the highest mean pLDDT for one chain.
  • It always returns queued, and a run takes minutes to hours.
  • Its results have the same fields as esmfold2_fold_complex, without per-chain pLDDT.
  • It is billed when the run finishes, as Costs shows.

Check a run

biohub_get_inference_run reads one run by its run_id. It is read-only, starts no compute, and costs nothing.

Inputs

Results

  • A run that is still queued or in_progress is normal; ask again later.
  • You can read any fold run on your account, including folds you submitted through the Batch API. Another user’s run reads as not_found.
  • A failed or cancelled run doesn’t restart; folding again starts a new run and bills again.
  • If a finished run’s result can’t be read in time, the answer keeps its status and usage, adds a warning, and leaves out summary. Read the run again later.

Limits

Biohub and its fold workers can count a ligand’s tokens differently. If that would put a fold over a worker’s limit, the tool refuses the fold before submitting anything, and the error says what to change.

Errors

When an error includes credits or billed_calls, they describe the work Biohub confirmed before the failure. See Troubleshooting for the codes every tool shares.