---
type: "firecrawl-provider"
description: "UniProtKB, the UniProt Consortium's protein knowledgebase (EMBL-EBI, SIB and PIR), through its public REST API at rest.uniprot.org: search entries by text, gene, organism and Swiss-Prot review status; read one entry's protein and gene names with synonyms, organism, curated function, subcellular location with evidence codes, GO terms, disease associations, sequence length and PDB, AlphaFold, ChEMBL, Ensembl, NCBI Gene and HGNC cross-references; and map gene symbols or Ensembl, NCBI Gene, PDB and ChEMBL IDs to accessions. Data is CC BY 4.0: every result carries its license, attribution and entry URL."
use_when: "UniProtKB, the UniProt Consortium's protein knowledgebase (EMBL-EBI, SIB and PIR), through its public REST API at rest.uniprot.org: search entries by text, gene, organism and Swiss-Prot review status; read one entry's protein and gene names with synonyms, organism, curated function, subcellular location with evidence codes, GO terms, disease associations, sequence length and PDB, AlphaFold, ChEMBL, Ensembl, NCBI Gene and HGNC cross-references; and map gene symbols or Ensembl, NCBI Gene, PDB and ChEMBL IDs to accessions. Data is CC BY 4.0: every result carries its license, attribution and entry URL."
categories: "Health"
capabilities: 3
credits_per_call: 5
---
# UniProt on Firecrawl Alexandria

UniProtKB, the UniProt Consortium's protein knowledgebase (EMBL-EBI, SIB and PIR), through its public REST API at rest.uniprot.org: search entries by text, gene, organism and Swiss-Prot review status; read one entry's protein and gene names with synonyms, organism, curated function, subcellular location with evidence codes, GO terms, disease associations, sequence length and PDB, AlphaFold, ChEMBL, Ensembl, NCBI Gene and HGNC cross-references; and map gene symbols or Ensembl, NCBI Gene, PDB and ChEMBL IDs to accessions. Data is CC BY 4.0: every result carries its license, attribution and entry URL.

- Categories: Health
- Category index: [Health category](https://firecrawl.dev/alexandria/agents/categories/health)
- Provider key: `uniprot-org`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/uniprot-org)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/uniprot-org/openapi.json)

## Capabilities

- [Get](https://firecrawl.dev/alexandria/agents/providers/uniprot-org/proteins/get): One UniProtKB entry by accession (`P04637`), isoform accession (`P04637-2`), entry name (`P53_HUMAN`) or uniprot.org entry URL: recommended protein name with every synonym, gene names with synonyms, organism and lineage, curated function, subcellular location (per isoform, with topology and ECO evidence codes marking experimental, by-similarity or automatic assertions), GO terms with evidence, disease associations with OMIM numbers, sequence length and mass, and PDB, AlphaFold, ChEMBL, Ensembl, NCBI Gene and HGNC cross-references. Secondary (merged) accessions and entry names resolve to the current entry. Unknown and deleted accessions are `not_found`.
- [Map ids](https://firecrawl.dev/alexandria/agents/providers/uniprot-org/proteins/map_ids): Map up to 50 gene symbols, or Ensembl, NCBI Gene, PDB or ChEMBL identifiers, to UniProtKB accessions in one call. Gene symbols match primary gene names, gene synonyms (`P53` finds TP53), ordered locus and ORF names, and `matched_on` says which; identifier sources match the entry's cross-references (Ensembl gene, transcript or protein IDs, with or without version). Reviewed Swiss-Prot entries only by default and listed first. Inputs without a match are listed in `unmatched`; when nothing matches the result is `not_found`.
- [Search](https://firecrawl.dev/alexandria/agents/providers/uniprot-org/proteins/search): Search UniProtKB, the UniProt protein knowledgebase, by free text (gene, protein or disease names) or UniProt query syntax, optionally restricted to an organism (NCBI taxonomy ID or name, including descendant strains) and to reviewed Swiss-Prot or unreviewed TrEMBL entries. Each result has the accession, entry name, review status, recommended protein name with its synonyms, gene name with synonyms, organism, length, annotation score, protein existence level and the curated subcellular location terms. Results come in UniProt's relevance order, `total_count` is the full hit count, and `next_cursor` pages onward. An empty result is a valid empty page.

## 1. Choose this provider when

UniProtKB, the UniProt Consortium's protein knowledgebase (EMBL-EBI, SIB and PIR), through its public REST API at rest.uniprot.org: search entries by text, gene, organism and Swiss-Prot review status; read one entry's protein and gene names with synonyms, organism, curated function, subcellular location with evidence codes, GO terms, disease associations, sequence length and PDB, AlphaFold, ChEMBL, Ensembl, NCBI Gene and HGNC cross-references; and map gene symbols or Ensembl, NCBI Gene, PDB and ChEMBL IDs to accessions. Data is CC BY 4.0: every result carries its license, attribution and entry URL.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "uniprot-org",
  "capability": "proteins/get",
  "options": {
    "accession": "P31358"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `accession` (string): UniProtKB accession (`P04637`, `A0A000`), isoform accession (`P04637-2`) or entry name (`P53_HUMAN`); case-insensitive. Example: `P04637`
- `include_sequence` (boolean): Also return the amino-acid sequence in `sequence.value`. Example: `false`
- `url` (string): UniProtKB entry URL, e.g. `https://www.uniprot.org/uniprotkb/P04637/entry`. Exactly one of `accession` and `url`. Example: `https://www.uniprot.org/uniprotkb/P04637/entry`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "uniprot-org",
    capability: "proteins/get",
    options: {
      accession: "P31358",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "uniprot-org",
  "capability": "proteins/get",
  "options": {
    "accession": "P31358"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "uniprot-org",
    "capability": "proteins/get",
    "options": {
      "accession": "P31358"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'uniprot-org/proteins/get' \
  --options '{"accession":"P31358"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "uniprot-org",
  "capability": "proteins/get",
  "options": {
    "accession": "P31358"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "uniprot-org",
  "capability": "proteins/get",
  "options": {
    "accession": "P31358"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "accession": "P31358",
  "annotation_score": 5,
  "cross_references": {
    "alphafold": [
      "P31358"
    ],
    "chembl": [
      "CHEMBL1912"
    ],
    "ensembl": [
      {
        "gene": "ENSG00000169442.9",
        "isoform": null,
        "protein": "ENSP00000363330.2",
        "transcript": "ENST00000374213.3"
      }
    ],
    "hgnc": [
      "HGNC:1804"
    ],
    "ncbi_gene": [
      "1043"
    ],
    "pdb": [
      {
        "chains": "E/F=27-36",
        "id": "6OBD",
        "method": "X-ray",
        "resolution": "2.20 A"
      }
    ]
  },
  "diseases": [],
  "ec_numbers": [],
  "entry_name": "CD52_HUMAN",
  "entry_version": 189,
  "function": [
    {
      "evidence": [],
      "text": "May play a role in carrying and orienting carbohydrate, as well as having a more specific role"
    }
  ],
  "gene_name": "CD52",
  "gene_synonyms": [
    "CDW52",
    "HE5"
  ],
  "genes": [
    {
      "name": "CD52",
      "ordered_locus_names": [],
      "orf_names": [],
      "synonyms": [
        "CDW52",
        "HE5"
      ]
    }
  ],
  "go_terms": [
    {
      "aspect": "cellular_component",
      "assigned_by": "Reactome",
      "evidence": [],
      "evidence_code": "TAS",
      "id": "GO:0005576",
      "term": "extracellular region"
    },
    {
      "aspect": "cellular_component",
      "assigned_by": "ProtInc",
      "evidence": [
        {
          "assertion": "manual",
          "code": "ECO:0000304",
          "id": "1711975",
          "label": "Traceable author statement evidence",
          "source": "PubMed"
        }
      ],
      "evidence_code": "TAS",
      "id": "GO:0016020",
      "term": "membrane"
    },
    {
      "aspect": "cellular_component",
      "assigned_by": "UniProtKB",
      "evidence": [
        {
          "assertion": "manual",
          "code": "ECO:0000304",
          "id": "1711975",
          "label": "Traceable author statement evidence",
          "source": "PubMed"
        }
      ],
      "evidence_code": "TAS",
      "id": "GO:0005886",
      "term": "plasma membrane"
    },
    {
      "aspect": "cellular_component",
      "assigned_by": "GO_Central",
      "evidence": [],
      "evidence_code": "IBA",
      "id": "GO:0097225",
      "term": "sperm midpiece"
    },
    {
      "aspect": "biological_process",
      "assigned_by": "UniProtKB",
      "evidence": [
        {
          "assertion": "manual",
          "code": "ECO:0000314",
          "id": "8223854",
          "label": "Direct assay evidence",
          "source": "PubMed"
        }
      ],
      "evidence_code": "IDA",
      "id": "GO:0007204",
      "term": "positive regulation of cytosolic calcium ion concentration"
    },
    {
      "aspect": "biological_process",
      "assigned_by": "UniProtKB",
      "evidence": [
        {
          "assertion": "manual",
          "code": "ECO:0000303",
          "id": "8223854",
          "label": "Non-traceable author statement evidence",
          "source": "PubMed"
        }
      ],
      "evidence_code": "NAS",
      "id": "GO:0045730",
      "term": "respiratory burst"
    }
  ],
  "last_annotation_update": "2026-09-02",
  "license": {
    "attribution": "UniProt Consortium, UniProtKB release 2026_03 (https://www.uniprot.org), licensed under CC BY 4.0",
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "observed_at_ms": 1792447176156,
  "organism": {
    "common_name": "Human",
    "lineage": [
      "Eukaryota",
      "Metazoa",
      "Chordata",
      "Craniata",
      "Vertebrata",
      "Euteleostomi",
      "Mammalia",
      "Eutheria",
      "Euarchontoglires",
      "Primates",
      "Haplorrhini",
      "Catarrhini",
      "Hominidae",
      "Homo"
    ],
    "scientific_name": "Homo sapiens",
    "taxon_id": 9606
  },
  "protein_existence": "1: Evidence at protein level",
  "protein_name": "CAMPATH-1 antigen",
  "protein_name_source": "recommended",
  "protein_synonyms": [
    "CDw52",
    "Cambridge pathology 1 antigen",
    "Epididymal secretory protein E5",
    "Human epididymis-specific protein 5",
    "He5",
    "CD52"
  ],
  "release": "2026_03",
  "release_date": "02-September-2026",
  "requested_id": "P31358",
  "reviewed": true,
  "sequence": {
    "length": 61,
    "mass_da": 6614
  },
  "source_url": "https://www.uniprot.org/uniprotkb/P31358/entry",
  "subcellular_location": [
    {
      "locations": [
        {
          "evidence": [],
          "location": "Cell membrane",
          "location_id": "SL-0039",
          "orientation": null,
          "topology": "Lipid-anchor, GPI-anchor"
        }
      ],
      "molecule": null,
      "note": null,
      "note_evidence": []
    }
  ],
  "subcellular_locations": [
    "Cell membrane"
  ]
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Get

- Capability: `proteins/get`
- Description: One UniProtKB entry by accession (`P04637`), isoform accession (`P04637-2`), entry name (`P53_HUMAN`) or uniprot.org entry URL: recommended protein name with every synonym, gene names with synonyms, organism and lineage, curated function, subcellular location (per isoform, with topology and ECO evidence codes marking experimental, by-similarity or automatic assertions), GO terms with evidence, disease associations with OMIM numbers, sequence length and mass, and PDB, AlphaFold, ChEMBL, Ensembl, NCBI Gene and HGNC cross-references. Secondary (merged) accessions and entry names resolve to the current entry. Unknown and deleted accessions are `not_found`.
- Instructions: After `search` or `map_ids` gives an accession, or when you have one: where a protein is located in the cell and on what evidence, what it does, which diseases it is linked to, and its IDs in PDB, ChEMBL and Ensembl.
- Cost: 5 credits per call
- Capability file: [Get](https://firecrawl.dev/alexandria/agents/providers/uniprot-org/proteins/get)

Accepted options:
- `accession` (string): UniProtKB accession (`P04637`, `A0A000`), isoform accession (`P04637-2`) or entry name (`P53_HUMAN`); case-insensitive. Example: `P04637`
- `include_sequence` (boolean): Also return the amino-acid sequence in `sequence.value`. Example: `false`
- `url` (string): UniProtKB entry URL, e.g. `https://www.uniprot.org/uniprotkb/P04637/entry`. Exactly one of `accession` and `url`. Example: `https://www.uniprot.org/uniprotkb/P04637/entry`

Response schema example:
```json
{
  "accession": "P31358",
  "annotation_score": 5,
  "cross_references": {
    "alphafold": [
      "P31358"
    ],
    "chembl": [
      "CHEMBL1912"
    ],
    "ensembl": [
      {
        "gene": "ENSG00000169442.9",
        "isoform": null,
        "protein": "ENSP00000363330.2",
        "transcript": "ENST00000374213.3"
      }
    ],
    "hgnc": [
      "HGNC:1804"
    ],
    "ncbi_gene": [
      "1043"
    ],
    "pdb": [
      {
        "chains": "E/F=27-36",
        "id": "6OBD",
        "method": "X-ray",
        "resolution": "2.20 A"
      }
    ]
  },
  "diseases": [],
  "ec_numbers": [],
  "entry_name": "CD52_HUMAN",
  "entry_version": 189,
  "function": [
    {
      "evidence": [],
      "text": "May play a role in carrying and orienting carbohydrate, as well as having a more specific role"
    }
  ],
  "gene_name": "CD52",
  "gene_synonyms": [
    "CDW52",
    "HE5"
  ],
  "genes": [
    {
      "name": "CD52",
      "ordered_locus_names": [],
      "orf_names": [],
      "synonyms": [
        "CDW52",
        "HE5"
      ]
    }
  ],
  "go_terms": [
    {
      "aspect": "cellular_component",
      "assigned_by": "Reactome",
      "evidence": [],
      "evidence_code": "TAS",
      "id": "GO:0005576",
      "term": "extracellular region"
    },
    {
      "aspect": "cellular_component",
      "assigned_by": "ProtInc",
      "evidence": [
        {
          "assertion": "manual",
          "code": "ECO:0000304",
          "id": "1711975",
          "label": "Traceable author statement evidence",
          "source": "PubMed"
        }
      ],
      "evidence_code": "TAS",
      "id": "GO:0016020",
      "term": "membrane"
    },
    {
      "aspect": "cellular_component",
      "assigned_by": "UniProtKB",
      "evidence": [
        {
          "assertion": "manual",
          "code": "ECO:0000304",
          "id": "1711975",
          "label": "Traceable author statement evidence",
          "source": "PubMed"
        }
      ],
      "evidence_code": "TAS",
      "id": "GO:0005886",
      "term": "plasma membrane"
    },
    {
      "aspect": "cellular_component",
      "assigned_by": "GO_Central",
      "evidence": [],
      "evidence_code": "IBA",
      "id": "GO:0097225",
      "term": "sperm midpiece"
    },
    {
      "aspect": "biological_process",
      "assigned_by": "UniProtKB",
      "evidence": [
        {
          "assertion": "manual",
          "code": "ECO:0000314",
          "id": "8223854",
          "label": "Direct assay evidence",
          "source": "PubMed"
        }
      ],
      "evidence_code": "IDA",
      "id": "GO:0007204",
      "term": "positive regulation of cytosolic calcium ion concentration"
    },
    {
      "aspect": "biological_process",
      "assigned_by": "UniProtKB",
      "evidence": [
        {
          "assertion": "manual",
          "code": "ECO:0000303",
          "id": "8223854",
          "label": "Non-traceable author statement evidence",
          "source": "PubMed"
        }
      ],
      "evidence_code": "NAS",
      "id": "GO:0045730",
      "term": "respiratory burst"
    }
  ],
  "last_annotation_update": "2026-09-02",
  "license": {
    "attribution": "UniProt Consortium, UniProtKB release 2026_03 (https://www.uniprot.org), licensed under CC BY 4.0",
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "observed_at_ms": 1792447176156,
  "organism": {
    "common_name": "Human",
    "lineage": [
      "Eukaryota",
      "Metazoa",
      "Chordata",
      "Craniata",
      "Vertebrata",
      "Euteleostomi",
      "Mammalia",
      "Eutheria",
      "Euarchontoglires",
      "Primates",
      "Haplorrhini",
      "Catarrhini",
      "Hominidae",
      "Homo"
    ],
    "scientific_name": "Homo sapiens",
    "taxon_id": 9606
  },
  "protein_existence": "1: Evidence at protein level",
  "protein_name": "CAMPATH-1 antigen",
  "protein_name_source": "recommended",
  "protein_synonyms": [
    "CDw52",
    "Cambridge pathology 1 antigen",
    "Epididymal secretory protein E5",
    "Human epididymis-specific protein 5",
    "He5",
    "CD52"
  ],
  "release": "2026_03",
  "release_date": "02-September-2026",
  "requested_id": "P31358",
  "reviewed": true,
  "sequence": {
    "length": 61,
    "mass_da": 6614
  },
  "source_url": "https://www.uniprot.org/uniprotkb/P31358/entry",
  "subcellular_location": [
    {
      "locations": [
        {
          "evidence": [],
          "location": "Cell membrane",
          "location_id": "SL-0039",
          "orientation": null,
          "topology": "Lipid-anchor, GPI-anchor"
        }
      ],
      "molecule": null,
      "note": null,
      "note_evidence": []
    }
  ],
  "subcellular_locations": [
    "Cell membrane"
  ]
}
```

### Map ids

- Capability: `proteins/map_ids`
- Description: Map up to 50 gene symbols, or Ensembl, NCBI Gene, PDB or ChEMBL identifiers, to UniProtKB accessions in one call. Gene symbols match primary gene names, gene synonyms (`P53` finds TP53), ordered locus and ORF names, and `matched_on` says which; identifier sources match the entry's cross-references (Ensembl gene, transcript or protein IDs, with or without version). Reviewed Swiss-Prot entries only by default and listed first. Inputs without a match are listed in `unmatched`; when nothing matches the result is `not_found`.
- Instructions: Resolve gene symbols from a paper or an expression table (pass `organism`, e.g. `9606`, since symbols repeat across species), or IDs from Ensembl, NCBI Gene, PDB or ChEMBL, to accessions before calling `get`.
- Cost: 5 credits per call
- Capability file: [Map ids](https://firecrawl.dev/alexandria/agents/providers/uniprot-org/proteins/map_ids)

Accepted options:
- `from` (string): Kind of the identifiers: `gene` (gene symbols and synonyms), `ensembl` (ENSG/ENST/ENSP IDs), `ncbi_gene` (Entrez Gene IDs such as `7157`), `pdb` (4-character PDB IDs), `chembl` (ChEMBL target IDs). Example: `gene`
- `ids` (string[], required): Identifiers of one kind, e.g. `["TP53", "CD52"]` or `["ENSG00000141510"]`. Example: `["TP53","CD52"]`
- `organism` (string): Restrict to an organism: NCBI taxonomy ID (`9606` human, `10090` mouse) or name. Strongly recommended for gene symbols. Example: `9606`
- `reviewed_only` (boolean): Only reviewed Swiss-Prot entries (default). false also returns unreviewed TrEMBL entries, which can be many per gene. Example: `false`

Response schema example:
```json
{
  "from": "gene",
  "license": {
    "attribution": "UniProt Consortium, UniProtKB release 2026_03 (https://www.uniprot.org), licensed under CC BY 4.0",
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "mappings": [
    {
      "input": "TP53",
      "matches": [
        {
          "accession": "P04637",
          "entry_name": "P53_HUMAN",
          "gene_name": "TP53",
          "license": "CC BY 4.0",
          "matched_on": "gene_name",
          "organism": {
            "common_name": "Human",
            "scientific_name": "Homo sapiens",
            "taxon_id": 9606
          },
          "protein_name": "Cellular tumor antigen p53",
          "reviewed": true,
          "source_url": "https://www.uniprot.org/uniprotkb/P04637/entry"
        }
      ]
    },
    {
      "input": "P53",
      "matches": [
        {
          "accession": "P04637",
          "entry_name": "P53_HUMAN",
          "gene_name": "TP53",
          "license": "CC BY 4.0",
          "matched_on": "gene_synonym",
          "organism": {
            "common_name": "Human",
            "scientific_name": "Homo sapiens",
            "taxon_id": 9606
          },
          "protein_name": "Cellular tumor antigen p53",
          "reviewed": true,
          "source_url": "https://www.uniprot.org/uniprotkb/P04637/entry"
        }
      ]
    },
    {
      "input": "CD52",
      "matches": [
        {
          "accession": "P31358",
          "entry_name": "CD52_HUMAN",
          "gene_name": "CD52",
          "license": "CC BY 4.0",
          "matched_on": "gene_name",
          "organism": {
            "common_name": "Human",
            "scientific_name": "Homo sapiens",
            "taxon_id": 9606
          },
          "protein_name": "CAMPATH-1 antigen",
          "reviewed": true,
          "source_url": "https://www.uniprot.org/uniprotkb/P31358/entry"
        }
      ]
    },
    {
      "input": "HLA-A",
      "matches": [
        {
          "accession": "P04439",
          "entry_name": "HLAA_HUMAN",
          "gene_name": "HLA-A",
          "license": "CC BY 4.0",
          "matched_on": "gene_name",
          "organism": {
            "common_name": "Human",
            "scientific_name": "Homo sapiens",
            "taxon_id": 9606
          },
          "protein_name": "HLA class I histocompatibility antigen, A alpha chain",
          "reviewed": true,
          "source_url": "https://www.uniprot.org/uniprotkb/P04439/entry"
        }
      ]
    }
  ],
  "matched_count": 4,
  "observed_at_ms": 1792447179227,
  "organism": "9606",
  "release": "2026_03",
  "release_date": "02-September-2026",
  "reviewed_only": true,
  "total_count": 3,
  "uniprot_query": "(gene_exact:\"TP53\" OR gene_exact:\"P53\" OR gene_exact:\"CD52\" OR gene_exact:\"HLA-A\" OR gene_exact:\"NOTAGENE1\") AND taxonomy_id:9606 AND reviewed:true",
  "unmatched": [
    "NOTAGENE1"
  ]
}
```

### Search

- Capability: `proteins/search`
- Description: Search UniProtKB, the UniProt protein knowledgebase, by free text (gene, protein or disease names) or UniProt query syntax, optionally restricted to an organism (NCBI taxonomy ID or name, including descendant strains) and to reviewed Swiss-Prot or unreviewed TrEMBL entries. Each result has the accession, entry name, review status, recommended protein name with its synonyms, gene name with synonyms, organism, length, annotation score, protein existence level and the curated subcellular location terms. Results come in UniProt's relevance order, `total_count` is the full hit count, and `next_cursor` pages onward. An empty result is a valid empty page.
- Instructions: Start here to find the UniProt accession of a protein or gene ("human CD52", "insulin receptor", `gene_exact:TP53`), then call `get` for its function, subcellular location with evidence, GO terms, diseases and cross-references. For a list of gene symbols, `map_ids` resolves them in one call.
- Cost: 5 credits per call
- Capability file: [Search](https://firecrawl.dev/alexandria/agents/providers/uniprot-org/proteins/search)

Accepted options:
- `cursor` (string): `next_cursor` from the previous page. Repeat the same query, organism, reviewed and limit with it. Example: `next_cursor`
- `limit` (number): Results per page. Example: `10`
- `organism` (string): Restrict to an organism: an NCBI taxonomy ID (`9606` for human, `10090` mouse, `562` E. coli with all strains) or a name (`Homo sapiens`, `human`). Example: `9606`
- `query` (string, required): Free text or UniProt query syntax (uniprot.org/help/query-fields), e.g. `CD52`, `insulin receptor`, `gene_exact:TP53`, `protein_name:"CAMPATH-1 antigen"`, `cc_scl_term:SL-0039` (subcellular location term), `cc_disease:"Li-Fraumeni syndrome"`, `go:0005886`, `ec:2.7.11.1`, combined with AND/OR/NOT. Example: `CD52`
- `reviewed` (boolean): true: only reviewed Swiss-Prot entries (curated, the usual choice); false: only unreviewed TrEMBL entries. Omit for both. Example: `false`

Response schema example:
```json
{
  "license": {
    "attribution": "UniProt Consortium, UniProtKB release 2026_03 (https://www.uniprot.org), licensed under CC BY 4.0",
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "limit": 3,
  "next_cursor": null,
  "observed_at_ms": 1792447175538,
  "query": "CD52",
  "release": "2026_03",
  "release_date": "02-September-2026",
  "results": [
    {
      "accession": "P31358",
      "annotation_score": 5,
      "entry_name": "CD52_HUMAN",
      "gene_name": "CD52",
      "gene_synonyms": [
        "CDW52",
        "HE5"
      ],
      "length": 61,
      "license": "CC BY 4.0",
      "organism": {
        "common_name": "Human",
        "scientific_name": "Homo sapiens",
        "taxon_id": 9606
      },
      "protein_existence": "1: Evidence at protein level",
      "protein_name": "CAMPATH-1 antigen",
      "protein_synonyms": [
        "CDw52",
        "Cambridge pathology 1 antigen",
        "Epididymal secretory protein E5",
        "Human epididymis-specific protein 5",
        "He5",
        "CD52"
      ],
      "reviewed": true,
      "source_url": "https://www.uniprot.org/uniprotkb/P31358/entry",
      "subcellular_locations": [
        "Cell membrane"
      ]
    },
    {
      "accession": "Q96LC7",
      "annotation_score": 5,
      "entry_name": "SIG10_HUMAN",
      "gene_name": "SIGLEC10",
      "gene_synonyms": [
        "SLG2"
      ],
      "length": 697,
      "license": "CC BY 4.0",
      "organism": {
        "common_name": "Human",
        "scientific_name": "Homo sapiens",
        "taxon_id": 9606
      },
      "protein_existence": "1: Evidence at protein level",
      "protein_name": "Sialic acid-binding Ig-like lectin 10",
      "protein_synonyms": [
        "Siglec-10",
        "Siglec-like protein 2"
      ],
      "reviewed": true,
      "source_url": "https://www.uniprot.org/uniprotkb/Q96LC7/entry",
      "subcellular_locations": [
        "Cell membrane",
        "Secreted"
      ]
    }
  ],
  "source_url": "https://www.uniprot.org/uniprotkb?query=%28CD52%29+AND+taxonomy_id%3A9606+AND+reviewed%3Atrue",
  "total_count": 2,
  "uniprot_query": "(CD52) AND taxonomy_id:9606 AND reviewed:true"
}
```
