> ## Documentation Index
> Fetch the complete documentation index at: https://proto.evodesign.org/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> How proto-tools works: the universal tool pattern, categories, and execution model

# Overview

proto-tools provides standardized Python implementations of 60+ bioinformatics tools: structure predictors, sequence scorers, gene annotators, alignment engines, and more. Every tool follows the same Input / Config / Output pattern, so learning one tool transfers to the rest.

## The Input / Config / Output Pattern

Every tool follows a three-part pattern using Pydantic models:

<div className="block dark:hidden">
  ```mermaid theme={null}
  flowchart LR
      I["ToolInput<br/>(primary data)"] --> T["Tool Function<br/>run_tool()"]
      C["ToolConfig<br/>(parameters)"] --> T
      T --> O["ToolOutput<br/>(results + metadata)"]

      classDef default fill:#5D6F75,stroke:none,color:#FFFFFF,rx:6,ry:6
      classDef primary fill:#046E7A,stroke:none,color:#FFFFFF,rx:6,ry:6
      class T primary
  ```
</div>

<div className="hidden dark:block">
  ```mermaid theme={null}
  flowchart LR
      I["ToolInput<br/>(primary data)"] --> T["Tool Function<br/>run_tool()"]
      C["ToolConfig<br/>(parameters)"] --> T
      T --> O["ToolOutput<br/>(results + metadata)"]

      classDef default fill:#344649,stroke:none,color:#FFFFFF,rx:6,ry:6
      classDef primary fill:#0A7E8C,stroke:none,color:#FFFFFF,rx:6,ry:6
      class T primary
  ```
</div>

<Columns>
  <Column>
    **Input**: *What* to analyze. The primary data: sequences, structures, files.

    ```python python icon="python" theme={null}
    ESMFoldInput(
        complexes=[
            Complex(
                chains=[
                    Chain(sequence="MKTAYLLIGL...")
                ]
            )
        ]
    )
    ```
  </Column>

  <Column>
    **Config**: *How* to analyze it. Parameters and settings. Always optional; sensible defaults are built in.

    ```python python icon="python" theme={null}
    ESMFoldConfig(
        num_recycles=4,
    )
    ```
  </Column>
</Columns>

**Output**: Results plus standardized metadata (execution time, success status, tool ID, warnings):

```python python icon="python" theme={null}
output = run_esmfold(input, config)

output.success           # True
output.execution_time    # 12.3 (seconds)
output.tool_id           # "esmfold-prediction"
output.structures[0]     # Structure object with coordinates, pLDDT, etc.
```

## Tool Categories

<CardGroup cols={3}>
  <Card title="Structure Prediction" icon="box" href="/docs/tools/structure-prediction/esmfold">
    Predict 3D structures from sequences.

    **AlphaFold2**, **AlphaFold3**, **Boltz2**, **Chai1**, **ESMFold**, **ESMFold2**, **Protenix**, **ViennaRNA**
  </Card>

  <Card title="Structure Design" icon="pencil-ruler" href="/docs/tools/structure-design/rfdiffusion3">
    Generate novel protein backbone structures.

    **RFDiffusion3**
  </Card>

  <Card title="Structure Dynamics" icon="orbit" href="/docs/tools/structure-dynamics/bioemu">
    Sample conformational ensembles.

    **BioEmu**
  </Card>

  <Card title="Inverse Folding" icon="undo-2" href="/docs/tools/inverse-folding/proteinmpnn">
    Design sequences for target structures.

    **ProteinMPNN**, **LigandMPNN**, **FAMPNN**, **ESM-IF1**
  </Card>

  <Card title="Masked Models" icon="arrow-left-right" href="/docs/tools/masked-models/esm2">
    Protein language models for scoring and sampling.

    **ESM2**, **ESM3**, **ESMC**, **AbLang**
  </Card>

  <Card title="Causal Models" icon="arrow-right" href="/docs/tools/causal-models/evo2">
    Autoregressive models for generation and scoring.

    **Evo1**, **Evo2**, **ProGen2**, **ProGen3**
  </Card>

  <Card title="Sequence Scoring" icon="gauge" href="/docs/tools/sequence-scoring/enformer">
    Predict functional effects from genomic sequences.

    **Enformer**, **Borzoi**, **AlphaGenome**, **Malinois**, **Puffin**, **Segmasker**
  </Card>

  <Card title="Gene Annotation" icon="tag" href="/docs/tools/gene-annotation/pyhmmer">
    Annotate sequences and find functional elements.

    **PyHMMER**, **CRISPRtracrRNA**, **MinCED**, **Promoter Calculator**
  </Card>

  <Card title="Sequence Alignment" icon="columns-3" href="/docs/tools/sequence-alignment/mafft">
    Align sequences and search databases for homologs.

    **BLAST**, **MMseqs2**, **MAFFT**, **ColabFold Search**
  </Card>

  <Card title="ORF Prediction" icon="microscope" href="/docs/tools/orf-prediction/orfipy">
    Find open reading frames in DNA.

    **Orfipy**, **Prodigal**
  </Card>

  <Card title="RNA Splicing" icon="scissors" href="/docs/tools/rna-splicing/splice-transformer">
    Predict splice sites and specificity.

    **SpliceTransformer**, **Pangolin**, **SpliceAI**
  </Card>

  <Card title="Structure Alignment" icon="move-3d" href="/docs/tools/structure-alignment/tmalign">
    Align and compare 3D structures.

    **TMAlign**, **USAlign**, **Foldseek**, **FoldMason**, **PyMOL RMSD**
  </Card>

  <Card title="Database Retrieval" icon="database" href="/docs/tools/database-retrieval/uniprot">
    Fetch sequences and structures from public databases.

    **UniProt**, **PDB**, **NCBI**, **SequenceFetch**
  </Card>

  <Card title="Structure Scoring" icon="ruler" href="/docs/tools/structure-scoring/structure-metrics">
    Score and analyze 3D structure quality.

    **DSSP**, **IPSAE**, **pDockQ2**, **PyRosetta**, **Structure Metrics**
  </Card>

  <Card title="Binder Design" icon="link" href="/docs/tools/binder-design/germinal">
    De novo antibody and binder design pipelines.

    **BindCraft**, **Germinal**
  </Card>

  <Card title="Mutagenesis" icon="dna" href="/docs/tools/mutagenesis/random-protein">
    Random sequence mutagenesis.

    **Random Protein**, **Random Nucleotide**
  </Card>
</CardGroup>

## GPU vs CPU Tools

<Columns>
  <Column>
    ### GPU Tools

    Deep learning models that require NVIDIA GPUs. Faster but require specific hardware.

    * **Structure Prediction:** AlphaFold3, Boltz2, Chai1, ESMFold, Protenix
    * **Inverse Folding:** ProteinMPNN, LigandMPNN, FAMPNN
    * **Language Models:** ESM2, ESM3, ESMC, AbLang, Evo1, Evo2, ProGen2, ProGen3
    * **Sequence Scoring:** Enformer, Borzoi, AlphaGenome
    * **Structure Design:** RFDiffusion3
    * **Structure Dynamics:** BioEmu
    * **RNA Splicing:** SpliceTransformer
  </Column>

  <Column>
    ### CPU Tools

    Classical bioinformatics algorithms and binary tools. Run anywhere.

    * **Gene Annotation:** PyHMMER, CRISPRtracrRNA, MinCED, Promoter Calculator
    * **Sequence Alignment:** BLAST, MMseqs2, MAFFT, ColabFold Search
    * **ORF Prediction:** Orfipy, Prodigal
    * **Structure Prediction:** ViennaRNA (RNA only)
    * **Structure Alignment:** TMAlign, USAlign
    * **Database Retrieval:** UniProt, PDB, NCBI
  </Column>
</Columns>

## Environment Isolation

Some tools have complex or conflicting dependencies. These tools use isolated virtual environments managed by `ToolInstance`:

* Each tool with isolated deps has a `standalone/` directory with `setup.sh` and `run.py`
* Virtual environments are created automatically on first use
* Execution is handled transparently; you call the same `run_tool()` API

See the [Tool Environments](/docs/tools/guides/tool-environments) guide for details on how this works.

## Tool Registry

All tools are registered via the `@tool()` decorator, enabling automatic discovery and schema generation:

```python python icon="python" theme={null}
from proto_tools.tools.tool_registry import ToolRegistry

# List all available tools
all_tools = ToolRegistry.list_all()
for tool_spec in all_tools:
    print(f"{tool_spec.key}: {tool_spec.label}")

# Get a specific tool's schema
schema = ToolRegistry.get_schemas("esmfold-prediction")

# Get a minimal example input
example = ToolRegistry.get_example_input("esmfold-prediction")

# Get citation
citation = ToolRegistry.get_citation("esmfold-prediction")
```

## Next Steps

<CardGroup cols={2}>
  <Card title="Entities" icon="box" href="/docs/tools/concepts/entities">
    Structure and Ligand data objects used by tools
  </Card>

  <Card title="Quickstart" icon="rocket" href="/docs/tools/guides/quickstart">
    Run your first tool in 5 minutes
  </Card>

  <Card title="Tool Persistence" icon="bolt" href="/docs/tools/guides/tool-persistence">
    Batch workloads with persistent tool instances
  </Card>

  <Card title="Device Management" icon="microchip" href="/docs/tools/guides/device-management">
    GPU allocation and multi-device execution
  </Card>
</CardGroup>
