Skip to main content
Glama

uniprot-mcp-server: get entry

uniprot_get_entry
Read-onlyIdempotent

Fetch full curated UniProtKB entries by accession in one batch (up to 20). Each entry carries function, catalytic activity, cofactors, subcellular location, disease involvement, PTMs, natural variants, isoforms, domains, GO terms, keywords, and cross-references. Partial failures do not abort the batch — resolved entries land in succeeded[] and unknown or inactive (merged, demerged, deleted) accessions in failed[], where an inactive accession names its replacement or UniParc ID. Pass fields to trim the upstream projection. Initial responses exceeding 24,000 UTF-8 bytes across both output surfaces return kind: "outline": a single resolved record lists sections with byte sizes; a batch lists outlinedEntries in request order and retains failed[]. Re-call each outlined accession individually, e.g. accessions:["P04637"], for its full record or section outline, then add sections:["disease","variants"] to select sections. sections takes exactly one accession; trim a batch with fields instead. All returned list items and cross-reference IDs render in full. A large list section pages with section_limit/section_offset on a re-call naming that one section. This tool does not search: accessions come from uniprot_search_proteins.results[].accession or uniprot_map_ids. Strip any isoform suffix (P04637-2 to P04637) before calling.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "accessions": "<accessions>"
    },
    "name": "uniprot_get_entry"
  }
}

Input Schema

NameRequiredDescriptionDefault
fieldsNoComma-separated UniProtKB field names to project, e.g. "accession,gene_names,cc_function,ft_variant". Omit for the full curated default set. Use this on the initial call to trim payload.
sectionsNoOnly used to re-call one accession after a kind: "outline" response — pass a subset of the outlined section keys to fetch just those sections. Requires exactly one accession: a batch with sections is rejected, so trim a batch with fields. A requested section the record lacks is named in absentSections, not an error. Do not pass on the initial call.
accessionsYesAccessions to fetch (1–20). From uniprot_search_proteins or uniprot_map_ids.
section_limitNoWindow size for one list section on a sections re-call: return at most this many items of it (1–500). Requires sections naming exactly one list section, e.g. ["variants"] (or ptms, domains, goTerms). Omit together with section_offset to return the whole section.
section_offsetNoZero-based index of the first item in the windowed section. Defaults to 0. Pass the previous response's nextOffset to page forward. Same requirements as section_limit; set without section_limit, returns every item from this index on.

Output Schema

NameRequiredDescriptionDefault
capNoThe section_limit applied. Present when truncated.
kindNoResult kind. "full": read succeeded[] and failed[]. "outline": the complete inline result exceeded 24,000 UTF-8 bytes; read outlinedEntries for a batch or sections for a single record, and re-call one accession individually.
errorNoPresent when the call failed. Absent on success.
shownNoItems in the returned window. Present when truncated.
failedNoAccessions that did not resolve to an active entry — unknown to UniProtKB, or inactive (merged, demerged, or deleted). Retained on batch outlines as well as full results.
noticeNoRe-call guidance. On a single-record outline: re-call that accession with sections:[...] to pull specific sections. On a batch outline: re-call each outlined accession individually with accessions:[accession]. On a section window: the section_offset that pages the rest, or why the window came back empty.
windowNoThe window applied to succeeded[0]'s one requested section. Present only when section_limit or section_offset was set; totalCount and nextOffset place it in the full section.
sectionsNoSection outline for a single fully resolved accession whose inline result exceeds the budget. Absent on batch outlines, which return outlinedEntries instead.
succeededNoEntries that resolved successfully. Present when kind is "full".
truncatedNoTrue when items remain past the returned window. Absent on the final window.
nextOffsetNosection_offset for the next window (same section_limit). Present while items remain.
totalCountNoItems in the windowed section before section_limit/section_offset applied. Present on every windowed call; 0 when the record lacks the section.
absentSectionsNoRequested section keys this record does not carry — UniProt holds no annotation of that kind for it, or fields excluded it. Not an error: the other requested sections are returned. Present only on a sections re-call that named one.
outlinedEntriesNoSuccessful entries omitted when the aggregate inline result exceeds 24,000 UTF-8 bytes, in request order. Re-call each accession individually for its full record or section outline.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedOutput schema / properties / failed / description
      Previous value: -"Accessions that were well-formed but did not resolve to an active entry — unknown to UniProtKB, or inactive (merged, demerged, or deleted). Present when kind is \"full\"."New value: +"Accessions that did not resolve to an active entry — unknown to UniProtKB, or inactive (merged, demerged, or deleted). Retained on batch outlines as well as full results."
    • changedOutput schema / properties / kind / description
      Previous value: -"Result kind. \"full\": the batch resolved — read succeeded[] and failed[]. \"outline\": a single record exceeded the context budget and is returned as a section listing — re-call the same accession with sections:[...] to pull specific sections."New value: +"Result kind. \"full\": read succeeded[] and failed[]. \"outline\": the complete inline result exceeded 24,000 UTF-8 bytes; read outlinedEntries for a batch or sections for a single record, and re-call one accession individually."
    • changedOutput schema / properties / notice / description
      Previous value: -"Re-call guidance. On kind \"outline\": re-call the same accession with sections:[...] to pull specific sections. On a section window: the section_offset that pages the rest, or why the window came back empty."New value: +"Re-call guidance. On a single-record outline: re-call that accession with sections:[...] to pull specific sections. On a batch outline: re-call each outlined accession individually with accessions:[accession]. On a section window: the section_offset that pages the rest, or why the window came back empty."
    • addedOutput schema / properties / outlinedEntries
      Added value: +{
      +  "description": "Successful entries omitted when the aggregate inline result exceeds 24,000 UTF-8 bytes, in request order. Re-call each accession individually for its full record or section outline.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "An omitted successful entry and its size.",
      +    "properties": {
      +      "accession": {
      +        "description": "Accession to re-call individually with accessions:[accession].",
      +        "type": "string"
      +      },
      +      "bytes": {
      +        "description": "UTF-8 serialized bytes of this entry before outlining.",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "accession",
      +      "bytes"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / sections / description
      Previous value: -"Section outline returned when a single record exceeds the context budget. Present when kind is \"outline\"."New value: +"Section outline for a single fully resolved accession whose inline result exceeds the budget. Absent on batch outlines, which return outlinedEntries instead."
  2. Changed15 schema fields changed
    • addedInput schema / properties / section_limit
      Added value: +{
      +  "description": "Window size for one list section on a sections re-call: return at most this many items of it (1–500). Requires sections naming exactly one list section, e.g. [\"variants\"] (or ptms, domains, goTerms). Omit together with section_offset to return the whole section.",
      +  "maximum": 500,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / section_offset
      Added value: +{
      +  "description": "Zero-based index of the first item in the windowed section. Defaults to 0. Pass the previous response's nextOffset to page forward. Same requirements as section_limit; set without section_limit, returns every item from this index on.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedInput schema / properties / sections / description
      Previous value: -"Only used to re-call after a kind: \"outline\" response — pass a subset of the outlined section keys to fetch just those sections. Do not pass on the initial call."New value: +"Only used to re-call one accession after a kind: \"outline\" response — pass a subset of the outlined section keys to fetch just those sections. Requires exactly one accession: a batch with sections is rejected, so trim a batch with fields. A requested section the record lacks is named in absentSections, not an error. Do not pass on the initial call."
    • addedOutput schema / properties / absentSections
      Added value: +{
      +  "description": "Requested section keys this record does not carry — UniProt holds no annotation of that kind for it, or fields excluded it. Not an error: the other requested sections are returned. Present only on a sections re-call that named one.",
      +  "items": {
      +    "description": "A requested section key the record does not carry.",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / cap
      Added value: +{
      +  "description": "The section_limit applied. Present when truncated.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `all_not_found`: Every accession in the batch was well-formed but unknown to UniProtKB. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `sections_single_accession`: sections was passed with more than one accession — rejected before any request. sections re-calls a single outlined record. `unknown_section`: sections named a key this tool never emits — rejected before any request. The message lists every valid key. `invalid_section_window`: section_limit or section_offset was set without sections naming exactly one list section — no sections, several, or a non-list section such as organism or xrefs. Rejected before any request. `all_not_found`: No accession in the batch resolved to an active entry — each was unknown to UniProtKB or inactive (merged, demerged, or deleted). The message names each inactive accession and its replacement. `invalid_fields`: UniProtKB rejected the fields value — the message relays UniProt naming the rejected field. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "all_not_found"
      -]New value: +[
      +  "sections_single_accession",
      +  "unknown_section",
      +  "invalid_section_window",
      +  "all_not_found",
      +  "invalid_fields"
      +]
    • changedOutput schema / properties / failed / description
      Previous value: -"Accessions that were well-formed but not found in UniProtKB. Present when kind is \"full\"."New value: +"Accessions that were well-formed but did not resolve to an active entry — unknown to UniProtKB, or inactive (merged, demerged, or deleted). Present when kind is \"full\"."
    • changedOutput schema / properties / failed / items / properties / error / description
      Previous value: -"Why it failed and how to recover."New value: +"Why it failed and how to recover. For an inactive accession: the merge target to retry with, the demerge products to choose among, or the UniParc ID that keeps a deleted sequence."
    • addedOutput schema / properties / nextOffset
      Added value: +{
      +  "description": "section_offset for the next window (same section_limit). Present while items remain.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / notice / description
      Previous value: -"Re-call guidance when kind is \"outline\" — re-call the same accession with sections:[...] to pull specific sections."New value: +"Re-call guidance. On kind \"outline\": re-call the same accession with sections:[...] to pull specific sections. On a section window: the section_offset that pages the rest, or why the window came back empty."
    • addedOutput schema / properties / shown
      Added value: +{
      +  "description": "Items in the returned window. Present when truncated.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / totalCount
      Added value: +{
      +  "description": "Items in the windowed section before section_limit/section_offset applied. Present on every windowed call; 0 when the record lacks the section.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "description": "True when items remain past the returned window. Absent on the final window.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / window
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The window applied to succeeded[0]'s one requested section. Present only when section_limit or section_offset was set; totalCount and nextOffset place it in the full section.",
      +  "properties": {
      +    "offset": {
      +      "description": "Index of the first returned item within the full section.",
      +      "type": "number"
      +    },
      +    "section": {
      +      "description": "The section key section_limit/section_offset windowed.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "section",
      +    "offset"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, idempotent, and open-world, and the description adds substantial operational behavior beyond that. It discloses partial-failure handling via succeeded[] and failed[], inactive accession replacement or UniParc IDs, the outline threshold over 24,000 UTF-8 bytes, and section paging behavior.

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?

The description is front-loaded with the core fetch operation and then proceeds through failure handling, outline behavior, paging, and accession sourcing in a logical order. It is longer than a simple tool needs, but the length is justified by the complex outline/paging behavior, with only minor redundancy around sections and fields.

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?

Given the tool's complexity, five parameters, rich output schema, and safety annotations, the description is complete enough for correct invocation. It covers source of accessions, batching limits, failure semantics, outline recovery, section selection, and paging, leaving no critical operational gap.

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 description coverage is 100%, so the schema already documents the parameters well. The description still adds useful semantics: fields trims the initial projection, sections is only for re-calling one outlined accession and rejects batches, and section_limit/section_offset page one list section on a re-call. This is strong added meaning, though some of it repeats schema-level constraints.

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?

The description states a specific verb and resource (fetch full curated UniProtKB entries by accession) and clarifies the batch scope (up to 20). It explicitly distinguishes this tool from search by saying accessions come from uniprot_search_proteins or uniprot_map_ids, so the agent can distinguish it from siblings.

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?

It gives explicit when-to-use guidance, including that this tool does not search and where accessions must come from. It also explains when to use fields versus sections, when sections are only valid after an outline response, and that isoform suffixes must be stripped before calling.

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.