---
title: MSA search results
description: 'One a3m alignment per distinct chain with its depth, plus cache hits, searched chains, the database release and search timing.'
---

A finished MSA search job returns one `.a3m` alignment file per distinct chain, a results JSON, and a manifest. The result object lists every chain you supplied in input order, with its depth and the name of its alignment file.

## Per-chain fields

`chains` has one entry per supplied chain, in input order. Repeated chains appear once per position and share one file.

| Field | Meaning |
|---|---|
| `index` | Position of the chain in your `sequences` list, from 0 |
| `length` | Residues after normalization |
| `sequence_key` | SHA-256 of the normalized sequence. This is the cache key |
| `depth` | Sequences in the alignment, query included |
| `a3m_file` | Name of this chain's alignment artifact, `msa_<first 16 characters of sequence_key>.a3m` |

`depth` is the first thing to read. A shallow alignment (a few dozen sequences or fewer) carries little evolutionary signal, and a fold built on it behaves much like a single-sequence fold. A depth of 1 means the search found nothing but the query.

The file names use the sequence key, never the sequence itself.

## Job-level fields

| Field | Meaning |
|---|---|
| `cache_hits` | Distinct chains answered from your organization's 30-day cache |
| `searched` | Distinct chains searched by this job |
| `pairing` | Always `unpaired`: one alignment per chain, no cross-chain pairing |
| `db_release` | The database release searched, for example `uniref30_2302+colabfold_envdb_202108+mmseqs18-8cc5c`. `null` when every chain came from the cache |
| `search_stats` | Timing for a fresh search: `db_release`, `search_seconds`, `container_startup_seconds` (set when the search service started cold for this job), per-chain `depths` keyed by sequence key, `pairing`, and `gpu` (the accelerator the search ran on). `null` when nothing was searched |
| `processing_time_seconds` | Wall time of the whole job |

A cached alignment was computed against the same database release, because the cache is keyed by release as well as by sequence. If the databases are ever updated, older alignments are not served for the new release.

## Artifacts

| Artifact type | What it holds |
|---|---|
| `msa_a3m` | One per distinct chain. The alignment in A3M format, query first. Its metadata repeats `sequence_key`, `depth` and `length` |
| `msa_search_results` | The result object above as JSON, under a `result` key |
| `msa_search_manifest` | The job manifest, listing the artifacts above |

## What is not returned

- **No paired MSA.** Complexes get one unpaired alignment per chain. There is no species-matched pairing across chains.
- **No hit table.** There are no per-hit e-values, identities or accessions. Use [BLAST](/docs/blast) when you need named homologs.
- **No structure.** Pass the chains to [Boltz-2](/docs/boltz2) or [Chai-1](/docs/chai) to fold them. Those tools read the same cache, so chains you searched here are not searched again.

## Read next
