Skip to main content
Glama

uniprot-mcp-server: map IDs

uniprot_map_ids
Read-onlyIdempotent

Translate identifiers across databases via UniProt's ID-mapping service — gene names to accessions, accession to PDB / Ensembl / RefSeq / ChEMBL / GeneID, and back. The job runs asynchronously; this tool submits it and polls within a budget. A running job returns status "running" with a ticket; pass that ticket alone to poll the same job. A completed call returns status "finished" with one results page; when continuation is present, pass it alone to fetch the next completed page without re-submitting or polling the job. A gene name often maps to one reviewed Swiss-Prot accession plus dozens of unreviewed TrEMBL ones, so target UniProtKB-Swiss-Prot (reviewed only) for the usual intent, or UniProtKB to include TrEMBL. Pair a gene-symbol from_db with tax_id to disambiguate species. A row whose UniProtKB target is inactive (merged, demerged, or deleted) carries an inactive marker naming its replacements. Chain the resulting active accessions into uniprot_get_entry.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "uniprot_map_ids"
  }
}

Input Schema

NameRequiredDescriptionDefault
idsNoIdentifiers to translate. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.
to_dbNoTarget database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB also includes unreviewed TrEMBL. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.
tax_idNoExact NCBI taxon node for submission, e.g. 9606 for human. Unlike protein search taxonomy filters, this excludes descendant strains and subspecies. Resolve the strain taxon with uniprot_get_taxonomy when needed; no descendant filtering is applied to mapped results.
ticketNoRunning-job ticket from a prior status "running" response. Pass it alone to poll that job; do not combine it with continuation or submission inputs.
from_dbNoSource database. Gene_Name = gene symbol (e.g. TP53; pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation.
continuationNoCompleted-page continuation from a prior status "finished" response. Pass it alone to fetch the next page without polling or re-submitting.

Output Schema

NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
noticeNoStatus guidance — e.g. that the job is still running, that no IDs mapped, that target identity is unavailable, or that inactive targets could not be marked on this page.
statusNoJob state: "finished" (one completed results page included) or "running" (poll with ticket).
ticketNoRunning-job ticket (present only when status is "running"). Pass it alone to poll the same job.
resultsNoResolved mappings on this completed page (present only when status is "finished"). Failed source IDs are reported in unmappedIds.
mappedCountNoNumber of resolved mappings on this page (finished jobs only).
unmappedIdsNoJob-wide source IDs UniProt reported as failed, repeated on every completed page. Absent when none failed.
continuationNoNext completed-page continuation (finished jobs only). Pass it alone to fetch the next page; absent on the terminal page.
totalMappingsNoJob-wide total mappings reported by UniProt; absent when unavailable.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • changedInput schema / properties / from_db / description
      Previous value: -"Source database. Gene_Name = HGNC symbol (pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."New value: +"Source database. Gene_Name = gene symbol (e.g. TP53; pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."
    • changedInput schema / properties / tax_id / description
      Previous value: -"NCBI taxon ID to disambiguate ambiguous source IDs (e.g. a gene symbol across species). Recommended with Gene_Name; e.g. 9606 for human."New value: +"Exact NCBI taxon node for submission, e.g. 9606 for human. Unlike protein search taxonomy filters, this excludes descendant strains and subspecies. Resolve the strain taxon with uniprot_get_taxonomy when needed; no descendant filtering is applied to mapped results."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `missing_inputs`: No complete submission, running-job ticket, or completed-page continuation was provided. `conflicting_inputs`: Submission inputs, a running-job ticket, or a completed-page continuation were combined. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is not a UniProt job ID, or is unknown or has expired server-side (UniProt holds jobs only temporarily). `invalid_continuation`: The completed-page continuation has an invalid job ID, is unknown or expired, or UniProt rejected the page with HTTP 400. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `mapping_failed`: UniProt reports a terminal ERROR for the mapping job. `missing_inputs`: No complete submission, running-job ticket, or completed-page continuation was provided. `conflicting_inputs`: Submission inputs, a running-job ticket, or a completed-page continuation were combined. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is not a UniProt job ID, or is unknown or has expired server-side (UniProt holds jobs only temporarily). `invalid_continuation`: The completed-page continuation has an invalid job ID, is unknown or expired, or UniProt rejected the page with HTTP 400. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "missing_inputs",
      -  "conflicting_inputs",
      -  "unsupported_db_pair",
      -  "invalid_ticket",
      -  "invalid_continuation"
      -]New value: +[
      +  "mapping_failed",
      +  "missing_inputs",
      +  "conflicting_inputs",
      +  "unsupported_db_pair",
      +  "invalid_ticket",
      +  "invalid_continuation"
      +]
    • changedOutput schema / properties / mappedCount / description
      Previous value: -"Number of resolved mappings (finished jobs only)."New value: +"Number of resolved mappings on this page (finished jobs only)."
    • changedOutput schema / properties / notice / description
      Previous value: -"Status guidance — e.g. that the job is still running, that no IDs mapped, or that inactive targets could not be marked on this page."New value: +"Status guidance — e.g. that the job is still running, that no IDs mapped, that target identity is unavailable, or that inactive targets could not be marked on this page."
    • addedOutput schema / properties / results / items / properties / entryName
      Added value: +{
      +  "description": "UniProtKB entry name when available.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / gene
      Added value: +{
      +  "description": "Primary target gene name when available.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / organism
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "UniProtKB target organism when available.",
      +  "properties": {
      +    "scientificName": {
      +      "description": "Target organism name when available.",
      +      "type": "string"
      +    },
      +    "taxonId": {
      +      "description": "Target NCBI taxon ID.",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "taxonId"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / results / items / properties / reviewed
      Added value: +{
      +  "description": "Whether UniProtKB marks the target reviewed.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / totalMappings
      Added value: +{
      +  "description": "Job-wide total mappings reported by UniProt; absent when unavailable.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / unmappedIds / description
      Previous value: -"Source IDs UniProt reported as failed on this completed page. Absent when none failed."New value: +"Job-wide source IDs UniProt reported as failed, repeated on every completed page. Absent when none failed."
  2. Changed1 schema field changed
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `missing_inputs`: No complete submission, running-job ticket, or completed-page continuation was provided. `conflicting_inputs`: Submission inputs, a running-job ticket, or a completed-page continuation were combined. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is not a UniProt job ID, or is unknown or has expired server-side (UniProt holds jobs only temporarily). `invalid_continuation`: The completed-page continuation does not carry a UniProt job ID, or refers to a result page that is unknown or expired. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `missing_inputs`: No complete submission, running-job ticket, or completed-page continuation was provided. `conflicting_inputs`: Submission inputs, a running-job ticket, or a completed-page continuation were combined. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is not a UniProt job ID, or is unknown or has expired server-side (UniProt holds jobs only temporarily). `invalid_continuation`: The completed-page continuation has an invalid job ID, is unknown or expired, or UniProt rejected the page with HTTP 400. Other values are possible when a failure originates below the handler."
  3. Changed5 schema fields changed
    • changedInput schema / properties / to_db / description
      Previous value: -"Target database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB / UniProtKB_AC-ID also include unreviewed TrEMBL. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."New value: +"Target database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB also includes unreviewed TrEMBL. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."
    • changedInput schema / properties / to_db / enum
      Previous value: -[
      -  "UniProtKB",
      -  "UniProtKB-Swiss-Prot",
      -  "UniProtKB_AC-ID",
      -  "Gene_Name",
      -  "GeneID",
      -  "Ensembl",
      -  "Ensembl_Protein",
      -  "PDB",
      -  "RefSeq_Nucleotide",
      -  "RefSeq_Protein",
      -  "ChEMBL",
      -  "PomBase",
      -  "WormBase_Protein"
      -]New value: +[
      +  "UniProtKB",
      +  "UniProtKB-Swiss-Prot",
      +  "Gene_Name",
      +  "GeneID",
      +  "Ensembl",
      +  "Ensembl_Protein",
      +  "PDB",
      +  "RefSeq_Nucleotide",
      +  "RefSeq_Protein",
      +  "ChEMBL",
      +  "PomBase",
      +  "WormBase_Protein"
      +]
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `missing_inputs`: No complete submission, running-job ticket, or completed-page continuation was provided. `conflicting_inputs`: Submission inputs, a running-job ticket, or a completed-page continuation were combined. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is unknown or has expired server-side (UniProt holds jobs only temporarily). `invalid_continuation`: The completed-page continuation refers to a result page that is unknown or expired. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `missing_inputs`: No complete submission, running-job ticket, or completed-page continuation was provided. `conflicting_inputs`: Submission inputs, a running-job ticket, or a completed-page continuation were combined. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is not a UniProt job ID, or is unknown or has expired server-side (UniProt holds jobs only temporarily). `invalid_continuation`: The completed-page continuation does not carry a UniProt job ID, or refers to a result page that is unknown or expired. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / notice / description
      Previous value: -"Status guidance — e.g. that the job is still running, or that no IDs mapped."New value: +"Status guidance — e.g. that the job is still running, that no IDs mapped, or that inactive targets could not be marked on this page."
    • addedOutput schema / properties / results / items / properties / inactive
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present only when the target accession is inactive in UniProtKB — it has no entry to fetch; use replacedBy or uniParcId instead. Absent for an active target.",
      +  "properties": {
      +    "deletedReason": {
      +      "description": "Why UniProt deleted the target, when it says. Present on DELETED only.",
      +      "type": "string"
      +    },
      +    "reason": {
      +      "description": "UniProt inactiveReasonType: MERGED, DEMERGED, or DELETED. Omitted when UniProt names none.",
      +      "type": "string"
      +    },
      +    "replacedBy": {
      +      "description": "Accessions that replace the target — the merge target (MERGED) or the demerge products (DEMERGED).",
      +      "items": {
      +        "description": "A replacement UniProtKB accession.",
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "uniParcId": {
      +      "description": "UniParc ID that still holds the sequence, when UniProt gives one.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  4. Changed13 schema fields changed
    • addedInput schema / properties / continuation
      Added value: +{
      +  "description": "Completed-page continuation from a prior status \"finished\" response. Pass it alone to fetch the next page without polling or re-submitting.",
      +  "properties": {
      +    "cursor": {
      +      "description": "Opaque cursor for the next completed results page.",
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "jobId": {
      +      "description": "UniProt ID-mapping job identifier for the completed job.",
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "jobId",
      +    "cursor"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / from_db / description
      Previous value: -"Source database. Gene_Name = HGNC symbol (pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required unless resuming with a ticket."New value: +"Source database. Gene_Name = HGNC symbol (pair with tax_id); UniProtKB_AC-ID = accession or entry name; Ensembl/Ensembl_Protein = ENSG/ENSP; PDB; RefSeq_Nucleotide/RefSeq_Protein = NM_/NP_; ChEMBL; GeneID = NCBI Gene. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."
    • changedInput schema / properties / ids / description
      Previous value: -"Identifiers to translate. Required unless resuming with a ticket."New value: +"Identifiers to translate. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."
    • changedInput schema / properties / ticket / description
      Previous value: -"A ticket from a prior status \"running\" response. Pass this alone (no from_db/to_db/ids) to fetch the completed result."New value: +"Running-job ticket from a prior status \"running\" response. Pass it alone to poll that job; do not combine it with continuation or submission inputs."
    • addedInput schema / properties / ticket / minLength
      Added value: +1
    • changedInput schema / properties / to_db / description
      Previous value: -"Target database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB / UniProtKB_AC-ID also include unreviewed TrEMBL. Required unless resuming with a ticket."New value: +"Target database. UniProtKB-Swiss-Prot = reviewed accessions only (the usual intent); UniProtKB / UniProtKB_AC-ID also include unreviewed TrEMBL. Required only when submitting a new mapping job; omitted when resuming with a ticket or continuation."
    • addedOutput schema / properties / continuation
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Next completed-page continuation (finished jobs only). Pass it alone to fetch the next page; absent on the terminal page.",
      +  "properties": {
      +    "cursor": {
      +      "description": "Opaque cursor for the next completed results page.",
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "jobId": {
      +      "description": "UniProt ID-mapping job identifier for the completed job.",
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "jobId",
      +    "cursor"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `missing_inputs`: Neither a ticket nor the full from_db/to_db/ids triple was provided. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is unknown or has expired server-side (UniProt holds jobs only temporarily). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `missing_inputs`: No complete submission, running-job ticket, or completed-page continuation was provided. `conflicting_inputs`: Submission inputs, a running-job ticket, or a completed-page continuation were combined. `unsupported_db_pair`: The from_db/to_db combination is not supported by the ID-mapping service. `invalid_ticket`: The resume ticket is unknown or has expired server-side (UniProt holds jobs only temporarily). `invalid_continuation`: The completed-page continuation refers to a result page that is unknown or expired. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "missing_inputs",
      -  "unsupported_db_pair",
      -  "invalid_ticket"
      -]New value: +[
      +  "missing_inputs",
      +  "conflicting_inputs",
      +  "unsupported_db_pair",
      +  "invalid_ticket",
      +  "invalid_continuation"
      +]
    • changedOutput schema / properties / results / description
      Previous value: -"Resolved mappings (present when status is \"finished\"). A source ID with no mapping is simply absent."New value: +"Resolved mappings on this completed page (present only when status is \"finished\"). Failed source IDs are reported in unmappedIds."
    • changedOutput schema / properties / status / description
      Previous value: -"Job state: \"finished\" (results included) or \"running\" (re-call with the ticket)."New value: +"Job state: \"finished\" (one completed results page included) or \"running\" (poll with ticket)."
    • changedOutput schema / properties / ticket / description
      Previous value: -"Resumable job ticket (present when status is \"running\"). Re-call this tool with ticket set, and nothing else, to fetch the result."New value: +"Running-job ticket (present only when status is \"running\"). Pass it alone to poll the same job."
    • changedOutput schema / properties / unmappedIds / description
      Previous value: -"Input IDs with no mapping in the target database (finished jobs only). Absent when resuming or all mapped."New value: +"Source IDs UniProt reported as failed on this completed page. Absent when none failed."
  5. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly/idempotent/openWorld; the description carries the real behavioral burden by disclosing the asynchronous job model, that this tool submits and polls within a budget, the "running"/"finished" status contract, and that a ticket or continuation must be passed alone. It also warns that inactive UniProtKB targets are marked with their replacements, which is operationally important and absent from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and then proceeds in a logical order: job lifecycle, then each resumption mode, then database/taxonomy selection advice, then output caveats and chaining. It is dense but nearly every sentence carries decision-relevant information; only slight redundancy with the schema's ticket/continuation wording keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter, nested-object tool with an output schema, the description covers everything an agent needs: how to start a job, how to resume by ticket or continuation, how to pick databases and taxonomy, and how to handle inactive targets. Return value structure is left to the output schema, appropriately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description still adds genuine meaning by explaining why to choose UniProtKB-Swiss-Prot over UniProtKB and by reinforcing that ticket and continuation are standalone inputs rather than combinable ones. It does not restate every field, but the mode-selection semantics it adds go beyond the schema's per-field text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Translate identifiers across databases via UniProt's ID-mapping service") and immediately enumerates concrete directions (gene names to accessions, accession to PDB/Ensembl/RefSeq/ChEMBL/GeneID, and back). This is clearly a mapping tool, distinguishable from sibling retrieval tools like uniprot_get_entry or uniprot_search_proteins, which it explicitly positions as downstream.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit selection guidance: target UniProtKB-Swiss-Prot "for the usual intent" versus UniProtKB to include TrEMBL, and pair a gene symbol with tax_id to disambiguate species. It also routes the agent onward ("Chain the resulting active accessions into uniprot_get_entry") and specifies mutually exclusive modes of invocation (submit, poll with ticket, fetch page with continuation).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.