Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Protein structure retrieval from RCSB PDB, PDBe, and AlphaFold with disambiguation, quality assessment (resolution, R-factor, pLDDT), and metadata. Distinguishes high-quality experimental (X-ray under 2 Angstrom) vs predicted vs medium-quality structures. Use for fetching protein structures, structure-quality comparison, and selecting structures for drug design or modeling.
.claude/skills/mims-harvard-tooluniverse-protein-structure-retrieval/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-13 | ✓→✓ | = Same ✓ | 68% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 116% | 0% |
| case-08 | ✓→✓ | = Same ✓ | 94% | 0% |
| case-09 | ✓→✓ | = Same ✓ | 86% | 0% |
Retrieve protein structures with disambiguation, quality assessment, and comprehensive metadata.
IMPORTANT: Always use English terms in tool calls. Respond in the user's language.
LOOK UP DON'T GUESS: Never assume PDB IDs, resolution, or availability. Always query RCSB/PDBe and AlphaFold to confirm.
Not all structures are equal. X-ray <2 A is high-quality for drug design. Cryo-EM 3-4 A is good for fold but not side chains. AlphaFold is excellent for well-folded domains but unreliable for disordered regions. Always check pLDDT (AlphaFold) or resolution (experimental) before drawing conclusions.
Phase 0: Clarify (if needed) → Phase 1: Disambiguate Protein → Phase 2: Retrieve Structures → Phase 3: ReportAsk ONLY if: protein name ambiguous (e.g., "kinase"), organism not specified, unclear if experimental vs AlphaFold needed. Skip for: specific PDB IDs, UniProt accessions, unambiguous protein+organism.
python# By PDB ID: direct retrieval # By UniProt: get AlphaFold + search experimental structures af_structure = tu.tools.alphafold_get_prediction(uniprot_id=uniprot_id) # By protein name: search result = tu.tools.PDBeSearch_search_structures(protein_name=protein_name)
Retrieve silently. Do NOT narrate the process.
pythonpdb_id = "4INS" # Search, metadata, quality, ligands, similar structures result = tu.tools.PDBeSearch_search_structures(protein_name=name) metadata = tu.tools.get_protein_metadata_by_pdb_id(pdb_id=pdb_id) exp = tu.tools.RCSBData_get_entry(pdb_id=pdb_id) quality = tu.tools.PDBeValidation_get_quality_scores(pdb_id=pdb_id) ligands = tu.tools.PDBe_KB_get_ligand_sites(pdb_id=pdb_id) similar = tu.tools.PDBeSIFTS_get_all_structures(pdb_id=pdb_id, cutoff=2.0) # PDBe additional data summary = tu.tools.pdbe_get_entry_summary(pdb_id=pdb_id) molecules = tu.tools.pdbe_get_entry_molecules(pdb_id=pdb_id) # AlphaFold (when no experimental structure, or for comparison) af = tu.tools.alphafold_get_prediction(uniprot_id=uniprot_id)
| Primary | Fallback | |---------|----------| | RCSB search | PDBe search | | get_protein_metadata | pdbe_get_entry_summary | | Experimental structure | AlphaFold prediction | | get_protein_ligands | PDBe_KB_get_ligand_sites |
Present as a Structure Profile Report. Hide search process. Include:
| Tier | Criteria | |------|----------| | Excellent | X-ray <1.5A, complete, R-free <0.22 | | High | X-ray <2.0A OR Cryo-EM <3.0A | | Good | X-ray 2.0-3.0A OR Cryo-EM 3.0-4.0A | | Moderate | X-ray >3.0A OR NMR ensemble | | Low | >4.0A, incomplete, or problematic |
<1.5A: atomic detail, H-bond analysis. 1.5-2.0A: drug design. 2.0-2.5A: structure-based design. 2.5-3.5A: overall architecture. >3.5A: domain arrangement only.
>90: very high, experimental-like. 70-90: good backbone. 50-70: uncertain/flexible. <50: likely disordered.
| Error | Response | |-------|----------| | "PDB ID not found" | Verify 4-char format, check if obsoleted | | "No structures" | Offer AlphaFold, suggest similar proteins | | "Download failed" | Retry once, provide alternative link | | "Resolution unavailable" | Likely NMR/model, note in assessment |
RCSB PDB: PDBeSearch_search_structures (search), get_protein_metadata_by_pdb_id (basic info), RCSBData_get_entry (details), PDBeValidation_get_quality_scores (quality), PDBe_KB_get_ligand_sites (ligands), PDBeSIFTS_get_all_structures (homologs)
PDBe: pdbe_get_entry_summary (overview), pdbe_get_entry_molecules (entities), pdbe_get_entry_experiment (experimental), PDBe_KB_get_ligand_sites (pockets)
AlphaFold: alphafold_get_prediction (get prediction), alphafold_get_summary (search)
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-13 | pass→pass | 11,936 | 9,945 | -17% | 1 | 1 | 0% | 1,854 | 3,113 | +68% | 0 | 0 | — |
case-01 | fail→fail | 23,204 | 8,173 | -65% | 1 | 1 | 0% | 4,620 | 2,032 | -56% | 0 | 0 | — |
case-02 | fail→fail | 31,121 | 7,647 | -75% | 1 | 1 | 0% | 5,422 | 1,994 | -63% | 0 | 0 | — |
case-03 | fail→fail | 30,367 | 7,625 | -75% | 1 | 1 | 0% | 5,765 | 2,050 | -64% | 0 | 0 | — |
case-04 | fail→fail | 11,768 | 10,719 | -9% | 1 | 1 | 0% | 2,234 | 2,408 | +8% | 0 | 0 | — |
case-05 | fail→fail | 13,115 | 9,808 | -25% | 1 | 1 | 0% | 2,133 | 2,020 | -5% | 0 | 0 | — |
case-06 | fail→fail | 21,356 | 11,161 | -48% | 1 | 1 | 0% | 4,101 | 2,655 | -35% | 0 | 0 | — |
case-07 | pass→pass | 6,228 | 3,963 | -36% | 1 | 1 | 0% | 1,016 | 2,192 | +116% | 0 | 0 | — |
case-08 | pass→pass | 10,001 | 18,013 | +80% | 1 | 1 | 0% | 1,558 | 3,025 | +94% | 0 | 0 | — |
case-09 | pass→pass | 7,117 | 3,915 | -45% | 1 | 1 | 0% | 1,183 | 2,200 | +86% | 0 | 0 | — |
case-10 | pass→pass | 4,530 | 7,453 | +65% | 1 | 1 | 0% | 816 | 2,749 | +237% | 0 | 0 | — |
case-11 | pass→pass | 3,341 | 4,682 | +40% | 1 | 1 | 0% | 504 | 2,141 | +325% | 0 | 0 | — |
case-12 | pass→pass | 5,083 | 6,325 | +24% | 1 | 1 | 0% | 858 | 2,483 | +189% | 0 | 0 | — |
case-14 | pass→pass | 10,447 | 7,467 | -29% | 1 | 1 | 0% | 1,752 | 2,694 | +54% | 0 | 0 | — |
case-15 | pass→pass | 11,234 | 8,926 | -21% | 1 | 1 | 0% | 1,729 | 2,946 | +70% | 0 | 0 | — |
case-16 | pass→pass | 7,476 | 2,046 | -73% | 1 | 1 | 0% | 1,178 | 1,786 | +52% | 0 | 0 | — |
case-17 | fail→pass | 8,966 | 1,901 | -79% | 1 | 1 | 0% | 1,496 | 1,753 | +17% | 0 | 0 | — |
case-18 | pass→pass | 9,797 | 8,644 | -12% | 1 | 1 | 0% | 1,592 | 2,919 | +83% | 0 | 0 | — |
case-19 | pass→pass | 7,537 | 3,726 | -51% | 1 | 1 | 0% | 1,414 | 2,256 | +60% | 0 | 0 | — |
case-20 | fail→fail | 1,738 | 6,278 | +261% | 1 | 1 | 0% | 226 | 1,881 | +732% | 0 | 0 | — |
case-21 | pass→pass | 11,083 | 3,850 | -65% | 1 | 1 | 0% | 1,848 | 2,161 | +17% | 0 | 0 | — |
case-22 | pass→pass | 9,261 | 4,323 | -53% | 1 | 1 | 0% | 1,628 | 2,321 | +43% | 0 | 0 | — |
case-23 | pass→pass | 8,001 | 4,659 | -42% | 1 | 1 | 0% | 1,324 | 2,427 | +83% | 0 | 0 | — |
case-24 | pass→pass | 5,177 | 5,129 | -1% | 1 | 1 | 0% | 824 | 2,364 | +187% | 0 | 0 | — |
case-25 | pass→pass | 8,106 | 3,155 | -61% | 1 | 1 | 0% | 1,296 | 2,003 | +55% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 18 counted toward the lift figure. The other 7 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +4 percentage points is the difference between those two pass rates over the 18 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.