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

# Protein Resolve

> Resolve a gene symbol, synonym, entry name or protein name to UniProt accessions.

Protein identities from UniProtKB under CC BY 4.0, attributed to the UniProt Consortium. For research and education only; not medical advice. Give a gene symbol or synonym (TP53, P53, HER2), an entry name (P53\_HUMAN), or a protein name (insulin). Exact gene names and synonyms are searched first. If none match, protein names are searched unless the query is a single uppercase token or contains digits without spaces. taxon\_id defaults to human (9606); reviewed\_only defaults to true. Entry names are resolved directly across organisms and review statuses. Returns up to limit matches, reviewed entries first then source order, with recommended full protein name, primary gene, gene synonyms, organism, annotation score and how each matched. ambiguous is true when multiple matches are kept and none matched an entry name or primary gene. total is the sum of source counts for the searches made. With reviewed\_only false, unreviewed entries are searched and counted only when reviewed matches do not fill limit. No match returns an empty list. Absent scalar values are null. Use the accession with Protein Function, Sequence, Structure or Domains for those facts. UniProt releases updates every eight weeks.

## Authentication

Requires x402 payment in the `payment-signature` header.

## Request Body

**query** `string` *required*

A gene symbol or synonym, entry name, or protein name; letters, digits, spaces and the characters . \_ / - only. 1 to 60 characters.

**taxon\_id** `integer`

The organism taxonomy ID; human (9606) by default. From 1 to 999999999. Defaults to `9606`.

**reviewed\_only** `boolean`

Only reviewed entries; false includes unreviewed entries. Defaults to `true`.

**limit** `integer`

The most matches to return. From 1 to 10. Defaults to `5`.

<Snippet file="audit-context-params.mdx" />

## Response (200 OK)

Top-level envelope: `success` (boolean) and `data` (object). All fields below are nested under `data`.

**data.request\_id** `string`

Durable job ID for audit and lookup

**data.status** `string`

Job status: `completed`

**data.tool** `string`

Always `protein_resolve`

**data.result** `object`

The answer, described under Result below

**data.evidence** `object`

Where the answer came from and when

**data.evidence.source** `string`

The public body the data comes from. Always `UniProt Consortium`.

**data.evidence.source\_kind** `string`

`public` when the data comes from a public body, `commercial` otherwise

**data.evidence.retrieved\_at** `string`

When the lookup was made, as an ISO 8601 UTC time

**data.evidence.as\_of** `string`

When the source says the fact was last updated, or `null` when the source gives no date

## Result

Nested under `data.result`.

**data.result.matches** `object[]`

Matching proteins, reviewed first then source order, up to limit.

**data.result.matches\[].accession** `string`

Accession. `null` when the source gives no value.

**data.result.matches\[].entry\_name** `string`

Entry name. `null` when the source gives no value.

**data.result.matches\[].reviewed** `boolean`

Reviewed. `null` when the source gives no value.

**data.result.matches\[].protein\_name** `string`

The recommended full protein name. `null` when the source gives no value.

**data.result.matches\[].gene** `string`

The primary gene name. `null` when the source gives no value.

**data.result.matches\[].gene\_synonyms** `string[]`

Gene synonyms.

**data.result.matches\[].organism** `object`

Organism.

**data.result.matches\[].organism.scientific\_name** `string`

Scientific name. `null` when the source gives no value.

**data.result.matches\[].organism.taxon\_id** `number`

Taxon id. `null` when the source gives no value.

**data.result.matches\[].annotation\_score** `number`

Annotation score. `null` when the source gives no value.

**data.result.matches\[].matched\_on** `string`

Matched on.

**data.result.matches\[].page\_url** `string`

Page url. `null` when the source gives no value.

**data.result.ambiguous** `boolean`

Multiple kept matches and no entry-name or primary-gene match.

**data.result.total** `integer`

Sum of source totals for the searches made; unreviewed entries are counted only when needed to fill limit.

```bash cURL theme={null}
curl -X POST https://win.oneshotagent.com/v1/tools/resolve/protein \
  -H "Content-Type: application/json" \
  -H "payment-signature: <base64 x402 payment>" \
  -d '{
    "query": "TP53"
  }'
```

```javascript JavaScript theme={null}
const response = await fetch("https://win.oneshotagent.com/v1/tools/resolve/protein", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "payment-signature": paymentProof,
  },
  body: JSON.stringify({
    "query": "TP53"
  }),
});
```

```typescript SDK theme={null}
const result = await agent.tool('resolve/protein', {
  query: 'TP53'
});
console.log(result.data.result);
console.log(result.data.evidence);
```

```json Response (200) theme={null}
{
  "success": true,
  "data": {
    "request_id": "uuid",
    "receipt_id": "rcpt_...",
    "status": "completed",
    "tool": "protein_resolve",
    "result": {
      "matches": [
        {
          "accession": "P04637",
          "entry_name": "P53_HUMAN",
          "reviewed": true,
          "protein_name": "Cellular tumor antigen p53",
          "gene": "TP53",
          "gene_synonyms": [
            "P53"
          ],
          "organism": {
            "scientific_name": "Homo sapiens",
            "taxon_id": 9606
          },
          "annotation_score": 5,
          "matched_on": "gene",
          "page_url": "https://www.uniprot.org/uniprotkb/P04637/entry"
        }
      ],
      "ambiguous": false,
      "total": 1
    },
    "evidence": {
      "source": "UniProt Consortium",
      "source_kind": "public",
      "retrieved_at": "2026-01-15T12:00:00.000Z",
      "calls": [
        {
          "retrieved_at": "2026-01-15T12:00:00.000Z"
        }
      ],
      "as_of": null
    }
  }
}
```

> [!NOTE]
>
> See [Pricing](/pricing) for this tool's price. A wallet (x402) call receives it in the 402 quote before anything is charged; a call paid from prepaid credits is charged when the API accepts the request and answers `200`.

## Notes

* Results return inline. The finished job stays available at `/v1/requests/{request_id}`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.