Skip to main content
Glama

search_uniprot

Read-only

Search UniProtKB proteins by gene, organism, or functional keyword using UniProt query syntax, optionally limiting results to reviewed Swiss-Prot entries.

Instructions

Search UniProtKB proteins.

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": {
      "query": "<query>"
    },
    "name": "search_uniprot"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNo
queryYesUniProt query syntax, e.g. 'gene:KPC-2' or 'carbapenemase AND organism_id:573'
reviewed_onlyNoOnly Swiss-Prot (manually reviewed) entries

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.3

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and network profile is supplied. The description adds nothing beyond that - it says nothing about result ordering, truncation at the limit, pagination, or what the open-world search actually hits, which is the value the description should be adding.

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

Conciseness3/5

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

A single clause with no wasted words, which is good, but it is under-specified rather than genuinely concise. There is no front-loaded scope statement or routing hint to justify the minimal length.

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

Completeness2/5

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

An output schema exists so return values need not be described, and annotations cover safety. However, for a three-parameter search tool in a crowded sibling set, the description leaves out query capabilities, result limits behavior, and the distinction from direct-entry lookup, which an agent needs to call it correctly.

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

Parameters2/5

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

Schema description coverage is 67%; the schema already explains UniProt query syntax for 'query' and what 'reviewed_only' means, while 'limit' is undocumented but bounded by min/max/default. The description contributes no parameter meaning at all, so it does not compensate for the uncovered parameter.

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

Purpose4/5

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

The description names a specific verb ('Search') and resource ('UniProtKB proteins'), so an agent immediately knows this is a query tool against a protein database. It stops short of differentiating from the sibling 'get_uniprot_entry', which is the obvious alternative an agent would weigh.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus 'get_uniprot_entry' or 'fetch_sequence', no mention of what queries are suited to it, and no exclusions. The only cue an agent gets is the verb 'Search', which is inferred rather than stated.

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