protein-mcp-server: compare structures
protein_compare_structuresStructurally align multiple structures (up to the configured batch cap; structures past it are returned in ignored) via the RCSB Structural Comparison service (TM-align / jFATCAT). reference:"first" aligns every structure to the first; reference:"all_pairs" computes the full pairwise matrix. Each pair is an independent async alignment job with per-pair partial success — a pair still computing when its poll budget or the call's 50 s budget runs out returns status "computing" with its job UUID, and a failed pair degrades its row without sinking the others, keeping its job UUID when the job was submitted. Re-call with a matching entry in resume[] to poll a pair's job UUID instead of resubmitting; a resumed pair reports a and b in the order its job was submitted, and a resume under a different method is rejected. Returns TM-score, RMSD, and aligned-residue count per pair, plus each structure's modeled-residue count and alignment coverage. TM-score is length-normalized and can shift sharply between structures that differ only by a terminal residue or two — the greedy superposition can settle into a worse local optimum — so read tmScore alongside rmsd, alignedResidues, modeledResidues and coverage, the columns that make such cases diagnosable.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"structures": "<structures>"
},
"name": "protein_compare_structures"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | Alignment algorithm: tm-align, fatcat-rigid, or fatcat-flexible. | tm-align |
| resume | No | Resume tickets from a prior call: for each pair whose labels match an entry here, poll the existing UUID instead of submitting a new alignment job. Copy a, b, and uuid verbatim from a prior response's pairs[]; keep structures, reference, and method unchanged. The order of structures may change — a resumed pair keeps the orientation its job was submitted in. | |
| reference | No | Align all to the first structure, or compute the full pairwise matrix. | first |
| timeout_s | No | Poll budget per pair in seconds before returning "computing". Defaults to the server setting. The whole call stops at 50 s, so that budget ends polling first once timeout_s nears 50 or there are more pairs than the server aligns at once (PROTEIN_FANOUT_CONCURRENCY): a pair it stops after submission returns "computing" with its uuid, and one it reaches before submission returns "failed". | |
| structures | Yes | The structures to compare, up to the configured batch cap; structures past it are returned in ignored and not compared. A structure repeated here is compared once. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| error | No | Present when the call failed. Absent on success. | |
| pairs | No | One row per aligned pair. | |
| method | No | Alignment method used. | |
| notice | No | Advisory note: pairs still computing or failed (with how to resume them), structures beyond the batch cap that were ignored, and repeated structures compared once. | |
| ignored | No | Structures past the batch cap, never compared — repeats dropped, in input order. Re-call with them alongside the structures to compare them against (e.g. the first structure plus these, reference "first"). Absent when the cap dropped nothing. | |
| computing | No | Number of pairs still computing. | |
| reference | No | Comparison mode used. | |
| pairsTotal | No | Number of pairs compared. |