Skip to main content
Glama
kmaneesh

BioPython MCP Server

by kmaneesh

BioPython MCP Server

CI codecov PyPI version PyPI downloads Python 3.10+ License: MIT Code style: black

A Model Context Protocol (MCP) server that provides comprehensive BioPython capabilities for biological sequence analysis, alignment, database access, and structural bioinformatics.

Overview

BioPython MCP bridges the powerful BioPython library with MCP-enabled applications like Claude Desktop, allowing seamless integration of bioinformatics tools into AI-assisted workflows. This enables researchers, clinicians, and developers to perform complex biological analyses through natural language interfaces.

Related MCP server: BioMCP

Motivation

Bioinformatics workflows often require switching between multiple tools and writing custom scripts. BioPython MCP simplifies this by:

  • Unified Interface: Access BioPython's capabilities through a standardized MCP protocol

  • AI Integration: Combine computational biology with AI-powered analysis and interpretation

  • Workflow Automation: Chain complex bioinformatics tasks through conversational interfaces

  • Accessibility: Make advanced bioinformatics tools available to non-programmers

Features

  • Sequence Operations

    • DNA/RNA translation and transcription

    • Reverse complement calculation

    • GC content analysis

    • Motif finding and pattern matching

  • Sequence Alignment

    • Pairwise global and local alignment

    • Multiple sequence alignment support

    • Alignment scoring with substitution matrices

  • Database Access

    • GenBank sequence retrieval

    • UniProt protein data access

    • PubMed literature search

    • NCBI database queries

  • Protein Structure Analysis

    • PDB structure fetching and parsing

    • Structure statistics calculation

    • Active site residue analysis

  • Phylogenetics

    • Phylogenetic tree construction (NJ, UPGMA)

    • Distance matrix calculation

    • Tree visualization

Installation

Requirements

  • Python 3.10 or higher

  • pip or uv package manager

The fastest way to run BioPython MCP without installation:

uvx biopython-mcp

Or run from source:

git clone https://github.com/kmaneesh/biopython-mcp.git
cd biopython-mcp
uvx --from . biopython-mcp

Install from PyPI

pip install biopython-mcp

Install from Source with uv

git clone https://github.com/kmaneesh/biopython-mcp.git
cd biopython-mcp
uv venv --python 3.10
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"

Install from Source with pip

git clone https://github.com/kmaneesh/biopython-mcp.git
cd biopython-mcp
pip install -e ".[dev]"

Development Installation

For contributing or development:

git clone https://github.com/kmaneesh/biopython-mcp.git
cd biopython-mcp
uv venv --python 3.10
source .venv/bin/activate
uv pip install -e ".[dev]"
pre-commit install

Quick Start

Running the Server

Start the MCP server:

# With uvx (no installation needed)
uvx biopython-mcp

# Or if installed
biopython-mcp

Configuration for Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

Using uvx (recommended):

{
  "mcpServers": {
    "biopython": {
      "command": "uvx",
      "args": ["biopython-mcp"],
      "env": {
        "NCBI_EMAIL": "you@example.com",
        "NCBI_API_KEY": "your_ncbi_api_key",
        "OBSIDIAN_VAULT_PATH": "/Users/yourname/Documents/ObsidianVault"
      }
    }
  }
}

Using installed package:

{
  "mcpServers": {
    "biopython": {
      "command": "biopython-mcp",
      "env": {
        "NCBI_EMAIL": "you@example.com",
        "NCBI_API_KEY": "your_ncbi_api_key",
        "OBSIDIAN_VAULT_PATH": "/Users/yourname/Documents/ObsidianVault"
      }
    }
  }
}

Using local development version:

{
  "mcpServers": {
    "biopython": {
      "command": "uvx",
      "args": ["--from", "/path/to/biopython-mcp", "biopython-mcp"],
      "env": {
        "NCBI_EMAIL": "you@example.com",
        "NCBI_API_KEY": "your_ncbi_api_key",
        "OBSIDIAN_VAULT_PATH": "/Users/yourname/Documents/ObsidianVault"
      }
    }
  }
}

Basic Usage Example

Once configured, you can use BioPython tools through Claude Desktop:

User: Translate the DNA sequence ATGGCCATTGTAATGGGCCGC to protein

Claude: [Uses translate_sequence tool]
Result: MAIVMGR (7 amino acids)

User: What's the GC content of this sequence?

Claude: [Uses calculate_gc_content tool]
Result: 57.14% GC content

Available Tools

Sequence Operations

Tool

Description

translate_sequence

Translate DNA/RNA to protein

reverse_complement

Get reverse complement of DNA

transcribe_dna

Transcribe DNA to RNA

calculate_gc_content

Calculate GC percentage

find_motif

Find sequence motifs

Alignment

Tool

Description

pairwise_align

Align two sequences

multiple_sequence_alignment

Align multiple sequences

calculate_alignment_score

Score alignments

Database Access

Tool

Description

fetch_genbank

Retrieve GenBank records

fetch_uniprot

Retrieve UniProt entries

search_pubmed

Search PubMed literature

fetch_sequence_by_id

Get sequences by ID

Structure Analysis

Tool

Description

fetch_pdb_structure

Download PDB structures

calculate_structure_stats

Analyze structure statistics

find_active_site

Extract active site info

Phylogenetics

Tool

Description

build_phylogenetic_tree

Build phylogenetic trees

calculate_distance_matrix

Compute distance matrices

draw_tree

Visualize trees

See the Tools Reference for detailed documentation.

Configuration Options

Environment Variables

  • NCBI_EMAIL: Email address for NCBI Entrez queries (recommended)

  • NCBI_API_KEY: API key for higher NCBI rate limits (optional)

  • OBSIDIAN_VAULT_PATH: Path to your Obsidian vault root directory (optional, for pubmed_review)

    • When set, the LLM will determine the directory path and filename for saving literature reviews

    • Can be overridden per-call with the obsidian_vault parameter

Setting Environment Variables

export NCBI_EMAIL="your.email@example.com"
export NCBI_API_KEY="your_api_key_here"
export OBSIDIAN_VAULT_PATH="/Users/yourname/Documents/ObsidianVault"

Examples

Analyze a Gene Sequence

# 1. Fetch from GenBank
fetch_genbank(accession="NM_000207", email="user@example.com")

# 2. Calculate GC content
calculate_gc_content(sequence="ATGGCC...")

# 3. Translate to protein
translate_sequence(sequence="ATGGCC...")

# 4. Find start codons
find_motif(sequence="ATGGCC...", motif="ATG")

Compare Sequences

# Perform global alignment
pairwise_align(
    seq1="ATGGCCATTGTAATGGGCCGC",
    seq2="ATGGCCATTGTTATGGGCCGC",
    mode="global"
)

Build Phylogenetic Tree

# Build tree from aligned sequences
build_phylogenetic_tree(
    sequences=["ATGGCC...", "ATGGCT...", "ATGGCA..."],
    method="nj",
    labels=["Species_A", "Species_B", "Species_C"]
)

See examples/ for complete workflow examples.

Documentation

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Setup

  1. Fork the repository

  2. Clone your fork: git clone https://github.com/yourusername/biopython-mcp.git

  3. Install development dependencies: pip install -e ".[dev]"

  4. Install pre-commit hooks: pre-commit install

  5. Create a feature branch: git checkout -b feature-name

  6. Make your changes and commit

  7. Run tests: pytest

  8. Push and create a pull request

Code Quality

We use:

  • Black for code formatting

  • Ruff for linting

  • mypy for type checking

  • pytest for testing

  • pre-commit for automated checks

Testing

Run tests:

pytest

Run tests with coverage:

pytest --cov=biopython_mcp --cov-report=term-missing

Generate coverage reports (HTML and XML):

pytest --cov=biopython_mcp --cov-report=html --cov-report=xml --cov-report=term-missing

View HTML coverage report:

open htmlcov/index.html  # macOS
xdg-open htmlcov/index.html  # Linux
start htmlcov/index.html  # Windows

Run type checking:

mypy biopython_mcp/

CI/CD Coverage

The project uses GitHub Actions for continuous integration with automatic coverage reporting to Codecov.

Coverage is automatically uploaded when:

  • Tests run on Ubuntu with Python 3.11

  • Pull requests are created or updated

  • Commits are pushed to main or develop branches

Note for Contributors: Coverage reports are publicly available. The CI workflow uses the CODECOV_TOKEN secret for authenticated uploads. Repository maintainers should configure this secret in GitHub repository settings.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Citation

If you use BioPython MCP in your research, please cite:

@software{biopython_mcp,
  title = {BioPython MCP: Model Context Protocol Server for BioPython},
  author = {BioPython MCP Contributors},
  year = {2026},
  url = {https://github.com/kmaneesh/biopython-mcp}
}

Acknowledgments

Support

Roadmap

  • Add support for protein secondary structure prediction

  • Implement BLAST search integration

  • Add sequence feature annotation tools

  • Support for custom HMM profiles

  • Interactive structure visualization

  • Batch processing capabilities

  • REST API wrapper


Made with BioPython and MCP

Available Tools

32 tools
build_phylogenetic_treeA

Build a phylogenetic tree from sequences.

Args: sequences: List of aligned sequences method: Tree building method - 'nj' (neighbor-joining) or 'upgma' (default: 'nj') labels: Optional labels for sequences

Returns: Dictionary containing tree information

ParametersJSON Schema
NameRequiredDescriptionDefault
sequencesYes
methodNonj
labelsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits beyond what the schema implies, such as computation limits, required input constraints (e.g., aligned sequences), or error conditions. The return type is vaguely described without additional context.

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 concise, starting with the purpose and then listing parameters and return type. However, the args section is somewhat verbose and could be condensed without losing clarity.

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

Completeness3/5

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

Given the tool's moderate complexity and the existence of an output schema, the description provides adequate but minimal context. It does not discuss input validation or use cases, leaving gaps in comprehensiveness.

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?

With 0% schema description coverage, the description adds significant meaning: it explains the sequences parameter explicitly, details the method options and default, and clarifies that labels are optional. This compensates well for the lack of schema descriptions.

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 clearly states the tool's action ('Build a phylogenetic tree') and identifies the key resource ('from sequences'). It distinguishes itself from siblings like calculate_distance_matrix and draw_tree by specifying the output is a tree structure.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives, such as when sequences are already aligned versus needing alignment first. The implication is present but not overt, and no exclusions or prerequisites are mentioned.

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

calculate_alignment_scoreA

Calculate the score of a given alignment using a substitution matrix.

Args: alignment_str: Aligned sequences (with gaps) as a formatted string matrix_name: Name of substitution matrix to use (default: 'BLOSUM62')

Returns: Dictionary containing alignment score and statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
alignment_strYes
matrix_nameNoBLOSUM62

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It mentions using a substitution matrix and returning a dictionary, but lacks details on the expected format of alignment_str, error handling, or case sensitivity. This leaves ambiguity for the AI agent.

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

Conciseness5/5

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

The description is brief and front-loaded with the purpose. Every sentence adds value, and the Args/Returns structure is clear.

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

Completeness3/5

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

Given an output schema exists, the description need not detail return values. However, it omits critical details about the required format of alignment_str, which could cause errors. It is adequate but not fully complete.

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 0%, so the description must compensate. It adds meaning for both parameters: alignment_str is 'Aligned sequences (with gaps) as a formatted string' and matrix_name has a default value. However, it does not specify exact formatting or valid matrix names.

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 clearly states the verb 'Calculate' and the resource 'alignment score using a substitution matrix'. This distinguishes it from sibling tools that perform alignment creation (pairwise_align, multiple_sequence_alignment) or other analyses.

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

Usage Guidelines4/5

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

The description implies when to use the tool: to score an existing alignment. It does not explicitly say when not to use or mention alternatives, but the purpose is clear enough to differentiate from siblings.

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

calculate_distance_matrixC

Calculate pairwise distance matrix for sequences.

Args: sequences: List of aligned sequences model: Distance model to use (default: 'identity') labels: Optional labels for sequences

Returns: Dictionary containing distance matrix

ParametersJSON Schema
NameRequiredDescriptionDefault
sequencesYes
modelNoidentity
labelsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must carry behavioral disclosure but only mentions parameters and returns. It does not explain possible models, error conditions, or performance characteristics, leaving the agent with minimal insight beyond the schema.

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 relatively concise with no redundant text, but the structure mixes a brief purpose with parameter list in a docstring format, which is functional yet not maximally efficient.

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?

Given the tool's complexity, no output schema details, and sibling tools requiring differentiation, the description is incomplete; it omits expected input formats, model options, and example usage, leaving significant gaps for an agent.

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

Parameters3/5

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

Schema coverage is 0%, so the description adds meaning by naming param roles (aligned sequences, model with default, optional labels). However, it lacks details on model options, format constraints, or label usage, only partially compensating for the coverage gap.

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 clearly states the tool calculates a pairwise distance matrix for sequences, specifying the resource and action. It distinguishes from siblings like build_phylogenetic_tree by focusing on distances, but could be more explicit about the requirement for aligned sequences.

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?

No guidance on when to use this tool versus alternatives. While it implies usage for computing distances from aligned sequences, it does not mention exclusions or compare to siblings like pairwise_align or calculate_alignment_score.

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

calculate_gc_contentB

Calculate the GC content of a DNA or RNA sequence.

Args: sequence: DNA or RNA sequence string

Returns: Dictionary containing GC content percentage and counts

ParametersJSON Schema
NameRequiredDescriptionDefault
sequenceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

Annotations are absent, so the description must carry the full burden of behavioral disclosure. It only mentions the return format (dictionary with percentage and counts) but omits details like input validation, case sensitivity, potential errors, or performance considerations for long sequences.

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 short and front-loaded with the purpose. However, the args/returns block is somewhat redundant given the input schema and output schema exist. Still, it is efficient and avoids unnecessary detail.

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

Completeness3/5

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

Given the tool's low complexity (1 parameter, output schema exists), the description covers the basic purpose and return format. However, it lacks usage guidelines and behavioral details, leaving the description adequate but not fully complete.

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?

With 0% schema description coverage, the description's 'DNA or RNA sequence string' adds meaningful context beyond the schema's type 'string'. It clarifies acceptable input types, which is helpful for a single parameter tool.

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 clearly states 'Calculate the GC content of a DNA or RNA sequence', specifying both the verb and the resource. It distinguishes itself from sibling tools like 'reverse_complement' or 'translate_sequence' by focusing specifically on GC content calculation.

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?

No guidance is provided on when to use this tool versus alternatives, nor are any prerequisites or exclusions mentioned. The description simply states what it does without contextual usage advice.

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

calculate_structure_statsC

Calculate statistics for a PDB structure file.

Args: pdb_file: Path to PDB file

Returns: Dictionary containing structure statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
pdb_fileYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, and the description lacks any behavioral traits: no mention of side effects, permissions, rate limits, or computational cost. The tool performs a calculation but gives no insight into execution 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 very short and front-loaded with the core purpose. Every sentence is functional, though the docstring-style 'Args' and 'Returns' are somewhat redundant given the schema but acceptable.

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

Completeness3/5

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

For a one-parameter tool with an output schema (as noted in context signals), the description adequately summarizes the return type as a dictionary. However, lacking examples or typical keys, it is minimally complete.

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 0%. The description weakly adds 'Path to PDB file' which is already implied by the parameter name pdb_file and type string. No additional context (e.g., file format, location restrictions) is provided.

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 clearly states the verb 'Calculate' and resource 'statistics for a PDB structure file', distinguishing it from fetching or other operations. However, it does not specify what statistics are computed, limiting clarity.

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?

No guidance on when to use this tool vs siblings (e.g., fetch_pdb_structure). It does not mention prerequisites or typical use cases, leaving the agent to infer.

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

clear_entrez_cacheA

Clear cached Entrez results.

The caching system stores Entrez query results to reduce API calls and improve response times. Use this tool to clear stale cache data.

Args: database: Database name to clear (empty string clears all databases)

Returns: Dictionary containing: - success: Whether operation succeeded - cleared: Number of cache files removed - database: Database cleared (or "all" if empty string) - cache_location: Path to cache directory

Examples: >>> clear_entrez_cache() # Clear all caches >>> clear_entrez_cache("pubmed") # Clear only PubMed cache >>> clear_entrez_cache("gene") # Clear only Gene cache

Notes: - Caching is optional and controlled via use_cache parameter - Default TTL: 1 hour for searches, 7 days for fetches - Cache stored in ~/.biopython-mcp/cache/ - Cached data includes search results and summaries

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, but the description fully discloses behavior: it clears cache, returns a dictionary with success/cleared count/database cleared/cache location, and notes on caching optionality, TTL, and storage.

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 well-structured with sections (Args, Returns, Examples, Notes) and front-loaded purpose. While slightly lengthy, each section provides value; minor conciseness improvements possible.

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?

The description covers all necessary aspects: purpose, parameters, return values (despite output schema presence), examples, and behavioral notes. No gaps remain for a simple one-parameter tool.

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

Parameters5/5

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

The single parameter 'database' is explained: 'Database name to clear (empty string clears all databases)'. Examples illustrate usage. This adds significant meaning beyond the schema's default type.

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 clearly states 'Clear cached Entrez results' and explains the caching system. It uniquely identifies the tool's purpose among siblings, none of which deal with cache clearing.

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

Usage Guidelines4/5

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

The description advises using the tool to clear stale cache data and provides notes on caching behavior, but lacks explicit when-to-use vs. alternatives. However, no alternatives exist for cache clearing.

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

clinvar_variant_lookupA

Search ClinVar for genetic variants and their clinical interpretations.

This specialized wrapper combines entrez_search and entrez_summary for convenient ClinVar queries.

Args: variant: Variant notation (e.g., "rs80357906", "NM_000059.3:c.1521_1523del") gene: Gene symbol (e.g., "BRCA1", "TP53") condition: Condition/phenotype (e.g., "breast cancer", "Lynch syndrome") significance: Clinical significance filter: - "pathogenic" - "likely_pathogenic" - "benign" - "likely_benign" - "uncertain" max_results: Maximum results to return (default: 20) use_cache: Whether to use cached results (default: True)

Returns: Dictionary containing: - variants: List of variant dictionaries with clinical information - count: Number of variants returned - total_found: Total matches in ClinVar - query_terms: Dictionary of search terms used - cached: Whether result was from cache (if use_cache=True)

Examples: >>> clinvar_variant_lookup(gene="BRCA1", significance="pathogenic", max_results=5) >>> clinvar_variant_lookup(variant="rs80357906") >>> clinvar_variant_lookup(gene="TP53", condition="cancer", max_results=10)

Notes: - At least one search parameter must be provided - Multiple parameters are combined with AND logic - Rate limited (3 req/sec or 10 req/sec with API key) - Cached results inherit TTL from underlying entrez_search and entrez_summary calls

ParametersJSON Schema
NameRequiredDescriptionDefault
variantNo
geneNo
conditionNo
significanceNo
max_resultsNo
use_cacheNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses rate limits, caching behavior (use_cache and TTL inheritance), and AND logic for parameter combination. It does not explicitly state read-only nature, but it is implied. This is more transparent than typical.

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

Conciseness5/5

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

The description is well-structured with Args, Returns, Examples, and Notes sections. Every sentence adds value, and the core purpose is front-loaded. No unnecessary content.

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 6 parameters, no annotations, and an output schema that is described in detail (return dictionary structure), the description covers all necessary aspects: input, output, examples, and behavioral notes. It is fully complete for an AI agent to use correctly.

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

Parameters5/5

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

Input schema has 6 parameters with 0% description coverage, but the description adds full meaning for each: variant notation examples, gene symbol, condition, significance filter list, default max_results, and use_cache. This fully compensates for the lack of schema descriptions.

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 clearly states it searches ClinVar for genetic variants and clinical interpretations, and specifies it is a specialized wrapper combining entrez_search and entrez_summary. This differentiates it from sibling tools like entrez_search and entrez_summary.

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

Usage Guidelines3/5

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

The Notes section explains that at least one search parameter is required and multiple parameters are combined with AND logic. Examples demonstrate typical use cases. However, it does not explicitly state when to use this tool versus alternatives like entrez_search or entrez_summary, nor does it describe when NOT to use it.

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

draw_treeA

Draw a phylogenetic tree from Newick format.

Args: tree_newick: Tree in Newick format output_format: Output format - 'ascii' for text representation (default: 'ascii')

Returns: Dictionary containing tree visualization

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_newickYes
output_formatNoascii

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavior. It mentions the return type but does not disclose any side effects, error handling, or constraints, which is acceptable for a simple drawing tool but not thorough.

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

Conciseness5/5

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

The description is extremely concise: a one-sentence purpose, then a bullet-point parameter list, and a returns line. No wasted words, and all relevant information is included.

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

Completeness4/5

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

Given the tool has only two parameters, no annotations, and an output schema exists, the description is fairly complete. It covers inputs and return type, but lacks examples or error handling details, which are minor omissions.

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?

The schema has 0% description coverage, so the description must add meaning. It explains both parameters: tree_newick is the tree in Newick format, output_format has a default of 'ascii' for text representation, adding significant value beyond the schema.

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 clearly states the tool draws a phylogenetic tree from Newick format, with a specific verb and resource. It distinguishes from sibling tools like build_phylogenetic_tree, which likely builds trees from other data.

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

Usage Guidelines3/5

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

Usage is implied: use when you have a Newick string. However, no explicit when-to-use or alternatives are mentioned, leaving some ambiguity.

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

entrez_fetchA

Fetch full records from NCBI Entrez by UID.

Args: database: Database name (e.g., 'pubmed', 'nucleotide', 'gene', 'protein') ids: Single ID, comma-separated string, or list of IDs rettype: Return type - 'xml', 'gb', 'fasta', 'abstract', etc. (default: 'xml') retmode: Return mode - 'xml', 'text', 'json' (default: 'xml') use_cache: Whether to use cached results (default: True, TTL: 7 days)

Returns: Dictionary containing: - data: Raw data in requested format (parsed if XML, raw text otherwise) - ids: List of IDs fetched - count: Number of records retrieved - format: Return type/mode used - database: Database queried - cached: Whether result was from cache (if use_cache=True)

Examples: >>> entrez_fetch("pubmed", "12345678", rettype="abstract", retmode="xml") >>> entrez_fetch("nucleotide", ["NM_000207", "NM_001127"], rettype="fasta", retmode="text") >>> entrez_fetch("gene", "672", rettype="xml") >>> entrez_fetch("protein", "NP_000198.1", rettype="fasta", retmode="text")

Notes: - For >100 IDs, consider batching to avoid timeouts - Valid rettype/retmode combinations depend on database - XML mode returns parsed Python dict/list structure - Text mode returns raw string data - Rate limited to 3 req/sec (or 10 req/sec with API key) - Cached results have 7 day TTL since record data is relatively static

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYes
idsYes
rettypeNoxml
retmodeNoxml
use_cacheNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description fully shoulders behavioral transparency. It discloses rate limits (3 req/sec, 10 with API key), caching with 7-day TTL, return format handling (XML parsed, text raw), and batching advice. This is substantial, though it could mention potential timeout behaviors explicitly.

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

Conciseness5/5

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

The description is well-structured with clear sections (Args, Returns, Examples, Notes) and is concise given the complexity. Every sentence adds value, and the information is front-loaded with the essential purpose and parameters. No redundancy or fluff.

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 (5 parameters, output schema present), the description covers all necessary aspects: parameter semantics, return value structure, caching behavior, rate limits, and multiple examples. It is sufficiently complete for an agent to select and invoke correctly.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate heavily. It does so by explaining each parameter (database, ids, rettype, retmode, use_cache) with types, defaults, and examples. The Returns section also adds meaning to the output schema, making the tool's usage clear without needing the schema alone.

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 clearly states 'Fetch full records from NCBI Entrez by UID' and provides parameter details and examples. However, it does not explicitly differentiate this tool from sibling tools like entrez_search or entrez_summary, relying on the user to infer the distinction based on the 'by UID' focus.

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

Usage Guidelines3/5

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

The description includes notes on batching, rate limits, and caching, which provide implicit usage guidance. However, it lacks explicit when-to-use vs. alternatives (e.g., when to use this vs. entrez_search or fetch_genbank), and no when-not-to-use scenarios are mentioned.

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

entrez_infoA

Get information about NCBI Entrez databases.

Args: database: Specific database name (empty string for list of all databases)

Returns: Dictionary containing database information: - If database="": List of all available databases with count - If database specified: Detailed info including description, record count, searchable fields, and available links

Examples: >>> entrez_info() # List all databases >>> entrez_info("pubmed") # Get PubMed database details >>> entrez_info("gene") # Get Gene database details

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, but the description fully discloses the tool's behavior: it returns a list of databases when database is empty, or detailed info otherwise. It also describes the return structure and field examples.

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 structured with clear sections (Args, Returns, Examples) but is slightly verbose for a single-parameter tool. However, the examples and clarity justify the length.

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 output schema exists, the description still covers both possible return structures in detail. It also includes multiple examples for different inputs, making it fully complete.

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

Parameters5/5

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

Schema has 0% description coverage, but the description thoroughly explains the parameter's effect (empty vs specific string) and provides three usage examples, adding significant value beyond the schema.

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 clearly states the tool retrieves information about NCBI Entrez databases, with distinct behavior for empty vs specific database parameter. This distinguishes it from sibling tools like entrez_search and entrez_fetch.

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

Usage Guidelines4/5

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

The description implies usage for obtaining database metadata before searches but does not explicitly contrast with alternatives. It provides clear examples that guide usage.

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

entrez_summaryA

Get document summaries (DocSums) from NCBI Entrez.

Document summaries are lightweight alternatives to full records, containing key metadata without the full content. Much faster for metadata-only queries.

Args: database: Database name (e.g., 'pubmed', 'gene', 'clinvar', 'nucleotide') ids: Single ID, comma-separated string, or list of IDs use_cache: Whether to use cached results (default: True, TTL: 7 days)

Returns: Dictionary containing: - summaries: List of document summary dictionaries - ids: List of IDs requested - count: Number of summaries returned - database: Database queried - cached: Whether result was from cache (if use_cache=True)

Examples: >>> entrez_summary("pubmed", "12345678") >>> entrez_summary("gene", ["672", "7157"]) # BRCA1, TP53 >>> entrez_summary("clinvar", "12345") >>> entrez_summary("nucleotide", "NM_000207,NM_001127")

Notes: - Much faster than entrez_fetch for metadata-only queries - Fields returned vary by database type - Rate limited to 3 req/sec (or 10 req/sec with API key) - Use this instead of fetch when you don't need full sequence/text - Cached results have 7 day TTL since summary data is relatively static

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYes
idsYes
use_cacheNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: lightweight nature, speed advantage, rate limits (3 req/sec or 10 with API key), 7-day cache TTL, and database-dependent fields. All relevant for safe and effective use.

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?

Well-structured with sections (Args, Returns, Examples, Notes) and front-loaded. Slightly verbose but every sentence adds value; minor room for tightening without losing content.

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?

Covers all aspects: purpose, parameters, usage guidelines, behavioral traits, return format, and examples. With output schema present, the description of return values aligns well. Complete for a query tool.

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

Parameters5/5

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

Schema has 0% parameter descriptions; the description fully compensates by explaining each parameter: database (with examples), ids (single, comma-separated, or list), use_cache (default true, TTL 7 days). Includes multiple usage examples.

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 clearly states 'Get document summaries (DocSums) from NCBI Entrez', specifying the verb and resource. It distinguishes from siblings by noting it is lighter and faster than entrez_fetch for metadata-only queries, and provides explicit alternatives.

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?

Provides explicit when-to-use (metadata-only, lightweight), when-not-to-use (full content needed), and alternatives (entrez_fetch). Also mentions rate limits and caching behavior, giving clear context for appropriate invocation.

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

fetch_genbankA

Fetch a sequence from GenBank by accession number.

Args: accession: GenBank accession number email: Email address for Entrez (required by NCBI) rettype: Return type - 'gb' for GenBank, 'fasta' for FASTA (default: 'gb')

Returns: Dictionary containing the sequence record and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
accessionYes
emailNouser@example.com
rettypeNogb

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions that an email is required by NCBI and returns a dictionary, but does not disclose rate limits, error handling, or side effects. Some behavioral context is present.

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

Conciseness5/5

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

The description is a well-structured docstring with clear Args and Returns sections. It is concise at about 8 lines with no unnecessary words, and the main action is front-loaded.

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

Completeness4/5

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

Given the tool has an output schema (mentioned in context), the description's note on return type is sufficient. It covers the main purpose and parameters, though could benefit from mentioning error scenarios or rate limits for completeness.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates fully: it explains accession as 'GenBank accession number', email as 'Email address for Entrez (required by NCBI)', and rettype options ('gb' for GenBank, 'fasta' for FASTA) with default. This adds substantial meaning beyond the raw schema.

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 clearly states 'Fetch a sequence from GenBank by accession number', using a specific verb and resource. It distinguishes from sibling tools like fetch_pdb_structure and fetch_uniprot by specifying GenBank.

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

Usage Guidelines3/5

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

The description implies usage for GenBank sequences but does not explicitly state when to use or not use this tool versus alternatives like fetch_sequence_by_id. No exclusion or prerequisite guidance is given.

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

fetch_pdb_structureA

Fetch a protein structure from the PDB database.

Args: pdb_id: PDB identifier (e.g., '1ABC') file_format: File format - 'pdb' or 'cif' (default: 'pdb')

Returns: Dictionary containing structure information and file location

ParametersJSON Schema
NameRequiredDescriptionDefault
pdb_idYes
file_formatNopdb

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only mentions the return type (dictionary with structure info and file location) but does not discuss side effects, authentication, or rate limits. It is insufficient for a fetch operation's transparency.

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

Conciseness5/5

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

The description is concise and front-loaded, with three sentences covering purpose, parameters, and return type. Every sentence serves a purpose without redundancy.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, output schema present), the description covers the essential information. However, it could provide more detail about the returned structure information, but the output schema likely fills that 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 0%, but the description adds examples for pdb_id ('1ABC') and clarifies file_format values ('pdb' or 'cif') with default behavior. This adds value beyond the schema's type and default fields.

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 clearly states 'Fetch a protein structure from the PDB database' using a specific verb and resource. It differentiates from sibling tools like fetch_uniprot or fetch_genbank by specifying the PDB database.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. While the name is self-explanatory, no guidance on when not to use or alternative tools is provided.

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

fetch_sequence_by_idC

Fetch a sequence from NCBI database by ID.

Args: db: Database name ('nucleotide', 'protein', etc.) seq_id: Sequence identifier email: Email address for Entrez (required by NCBI)

Returns: Dictionary containing sequence information

ParametersJSON Schema
NameRequiredDescriptionDefault
dbYes
seq_idYes
emailNouser@example.com

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It does not disclose side effects, error behavior, or authentication needs. The return type is mentioned but no details on edge cases like missing IDs.

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?

Concise with clear docstring format separating Args and Returns. No unnecessary text, but could be slightly more compact.

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?

Given the complexity (3 parameters, no enums, output schema exists), the description is incomplete. It lacks usage context, error handling, and differentiation from many sibling tools. The output schema may help but is not shown.

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?

The schema has 0% description coverage, so the description must compensate. It briefly explains each parameter (db, seq_id, email) but lacks details like valid database names, ID formats, or the effect of the default email. Minimal value added beyond names.

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 clearly states it fetches a sequence from NCBI by ID, using a specific verb and resource. However, it does not distinguish from sibling tools like fetch_genbank or entrez_fetch, which also fetch sequences.

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?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, required NCBI account, or rate limits. The only usage hint is that email is required by NCBI, but no further context.

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

fetch_uniprotA

Fetch a protein sequence from UniProt.

Args: uniprot_id: UniProt accession or ID format: Output format - 'fasta', 'txt', 'xml' (default: 'fasta')

Returns: Dictionary containing the UniProt record

ParametersJSON Schema
NameRequiredDescriptionDefault
uniprot_idYes
formatNofasta

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool fetches a sequence and returns a dictionary, and it lists parameter options. However, it does not detail error handling or potential failures.

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

Conciseness5/5

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

The description is succinctly structured with Args/Returns sections, no redundant information, and every sentence is informative. It is front-loaded with the core purpose.

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

Completeness4/5

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

Given the tool's simplicity and the presence of an output schema, the description is largely complete. It covers the purpose, parameters, and return format. Missing are details on input validation or error conditions, but these are acceptable gaps for a basic fetcher.

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 0%, but the description explains both parameters: uniprot_id as the accession/ID and format with allowed values ('fasta', 'txt', 'xml') and default. This meaningfully supplements the bare schema.

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 clearly states 'Fetch a protein sequence from UniProt', specifying a unique resource (UniProt) and action. This distinguishes it from siblings like fetch_genbank (GenBank) and fetch_pdb_structure (PDB).

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

Usage Guidelines3/5

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

The description implies usage for retrieving UniProt sequences but does not explicitly compare to alternatives like fetch_sequence_by_id or state when not to use it. Guidance is implicit rather than explicit.

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

find_active_siteB

Extract information about specific residues (e.g., active site).

Args: pdb_file: Path to PDB file residue_numbers: List of residue numbers to analyze chain_id: Chain identifier (default: 'A')

Returns: Dictionary containing active site residue information

ParametersJSON Schema
NameRequiredDescriptionDefault
pdb_fileYes
residue_numbersYes
chain_idNoA

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It implies a read-only operation but does not mention file requirements, error handling, performance, or side effects. The return type is noted but not detailed.

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

Conciseness5/5

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

The description is concise with a clear one-line purpose, structured Args/Returns sections. Every sentence adds value without redundancy.

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

Completeness4/5

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

Given the tool's complexity (3 params, output schema exists), the description covers purpose, parameters, and return type. It lacks error handling and usage context, but is sufficient for basic understanding.

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?

The 'Args' section adds meaning beyond the schema, explaining each parameter (e.g., 'Path to PDB file', 'List of residue numbers'). Given 0% schema coverage, this provides necessary semantics, though constraints like valid ranges are missing.

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 clearly states the verb 'Extract' and the resource 'information about specific residues', with an example 'active site'. It distinguishes from sibling tools like 'find_motif' implicitly by focusing on residue-level data, but lacks explicit differentiation.

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?

No guidance on when to use this tool versus alternatives like 'find_motif' or other structure analysis tools. There is no mention of prerequisites, exclusions, or context, leaving the agent to infer usage.

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

find_motifA

Find all occurrences of a motif in a sequence.

Args: sequence: DNA, RNA, or protein sequence to search motif: Motif pattern to find overlapping: Allow overlapping matches (default: True)

Returns: Dictionary containing motif positions and count

ParametersJSON Schema
NameRequiredDescriptionDefault
sequenceYes
motifYes
overlappingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so description carries full burden. It explains core behavior (find motif, return positions/count) but lacks details on edge cases, algorithm, or performance.

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

Conciseness5/5

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

Description is brief, structured as Args/Returns, and front-loaded. Every sentence is necessary with no redundancy.

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

Completeness4/5

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

Given low complexity, description covers parameters and return value. Could mention edge cases like empty sequence or motif not found, but overall adequate.

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 0%, but description explains all three parameters: sequence, motif, and overlapping (with default). This adds semantic meaning beyond the schema's types.

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 clearly states 'Find all occurrences of a motif in a sequence' with specific verb and resource. It distinguishes from sibling tools like reverse_complement or translate_sequence.

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

Usage Guidelines3/5

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

The description implies usage for finding motifs but does not explicitly state when to use or exclude alternatives like find_active_site or multiple_sequence_alignment.

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

gene_info_fetchA

Fetch comprehensive gene information from NCBI Gene database.

This specialized wrapper provides easy access to gene records with structured output.

Args: gene_symbol: Gene symbol (e.g., "BRCA1", "TP53") gene_id: NCBI Gene ID (e.g., "672" for BRCA1) organism: Organism name (default: "Homo sapiens") use_cache: Whether to use cached results (default: True)

Returns: Dictionary containing: - gene_id: NCBI Gene ID - symbol: Official gene symbol - name: Full gene name - summary: Gene summary/description - organism: Organism name - chromosome: Chromosomal location - aliases: List of gene aliases - type: Gene type (protein-coding, ncRNA, etc.) - cached: Whether result was from cache (if use_cache=True)

Examples: >>> gene_info_fetch(gene_symbol="BRCA1") >>> gene_info_fetch(gene_id="672") >>> gene_info_fetch(gene_symbol="Brca1", organism="Mus musculus")

Notes: - Provide either gene_symbol or gene_id (gene_id takes precedence) - Organism filter helps disambiguate gene symbols - Rate limited (3 req/sec or 10 req/sec with API key) - Cached results inherit TTL from underlying entrez_search and entrez_summary calls

ParametersJSON Schema
NameRequiredDescriptionDefault
gene_symbolNo
gene_idNo
organismNoHomo sapiens
use_cacheNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Discloses rate limiting, precedence rules (gene_id over gene_symbol), caching behavior, TTL inheritance, and structured output format. No annotations exist, so description carries full burden and does so thoroughly.

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

Conciseness5/5

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

Well-organized with clear sections (Args, Returns, Examples, Notes). Every sentence adds value; no redundancy. Front-loaded with purpose.

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?

Covers all aspects: input parameters, output schema, examples, and behavioral notes. No missing information for a tool with this complexity and no annotations.

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

Parameters5/5

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

Schema description coverage is 0%, but the description's Args section explains each parameter with defaults, examples, and precedence. Fully compensates for lack of schema descriptions.

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?

Clearly states 'Fetch comprehensive gene information from NCBI Gene database' with specific verb and resource. Differentiates from sibling tools like entrez_fetch by being a specialized wrapper for gene records with structured output.

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

Usage Guidelines4/5

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

Provides clear context: 'Provide either gene_symbol or gene_id', organism disambiguation, rate limits, and caching. Lacks explicit when-to-use vs alternatives, but examples and purpose imply usage for gene info.

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

get_doi_urlA

Get the URL for a DOI.

Args: doi: Digital Object Identifier

Returns: Full URL to DOI resolver

Examples: >>> get_doi_url("10.1371/journal.pone.0012345") 'https://doi.org/10.1371/journal.pone.0012345'

ParametersJSON Schema
NameRequiredDescriptionDefault
doiYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided. Description discloses basic behavior (getting a URL) but lacks details on error handling, authentication needs, or rate limits. For a simple read tool, minimal disclosure is acceptable but could be improved.

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

Conciseness5/5

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

Description is concise with clear sections (Args, Returns, Examples). Every sentence adds value; no waste.

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?

Tool is simple with one parameter and an output schema. Description covers functionality, parameter, return value, and example, making it fully complete for agent use.

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 0%, but description adds 'Digital Object Identifier' and provides an example, compensating for schema gaps. Adds meaningful context beyond parameter name.

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 clearly states 'Get the URL for a DOI', specifying the verb 'get' and resource 'URL for a DOI'. It distinguishes from sibling tool 'get_pmc_url' which handles PMC IDs instead.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. The context implies it's for DOIs (vs. PMC IDs for get_pmc_url), but no clear when-not or alternative mentions.

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

get_pmc_urlA

Get the URL for a PubMed Central article.

Args: pmc_id: PMC identifier (with or without 'PMC' prefix)

Returns: Full URL to PMC article page

Examples: >>> get_pmc_url("PMC3539452") 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3539452/'

>>> get_pmc_url("3539452")
'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3539452/'
ParametersJSON Schema
NameRequiredDescriptionDefault
pmc_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description bears full responsibility. It indicates the tool returns a URL string but does not mention error behavior (e.g., invalid ID, network issues) or confirm it is a read-only operation. Acceptable but incomplete.

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

Conciseness5/5

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

The description is extremely concise: one sentence for purpose, three short sections (Args, Returns, Examples), and every sentence adds value. No wasted words.

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 simplicity (one parameter, straightforward URL construction), the description fully covers what an agent needs: input flexibility and output format. Output schema exists, so return details are covered.

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

Parameters5/5

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

Schema coverage is 0%, so the description provides all parameter information. It explains that pmc_id accepts both 'PMC' prefixed and bare numbers, with examples demonstrating both forms. This adds substantial meaning beyond the schema's 'string' type.

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 starts with 'Get the URL for a PubMed Central article', which clearly identifies the tool's action (get) and resource (URL for PMC article). It stands out from siblings like get_doi_url and pubmed_fetch.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives (e.g., get_doi_url, pubmed_fetch). Usage is implied through examples but lacks exclusions or prerequisites.

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

multiple_sequence_alignmentB

Perform multiple sequence alignment.

Args: sequences: List of sequences to align algorithm: Alignment algorithm to use (default: 'clustalw')

Returns: Dictionary containing alignment results

Note: This is a placeholder that demonstrates the structure. Full implementation would require external tools like MUSCLE or Clustal Omega.

ParametersJSON Schema
NameRequiredDescriptionDefault
sequencesYes
algorithmNoclustalw

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Without annotations, the description must disclose behavior. It notes this is a placeholder requiring external tools, which is transparent. However, it lacks details on side effects, performance, or error handling.

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 well-structured with Args/Returns/Note sections. It is concise, though the first sentence is redundant with the name. Overall efficient.

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?

Given the context signals (low schema coverage, no enums, output schema exists but not shown), the description provides basic info but is incomplete. The placeholder note indicates it's not fully functional, reducing completeness for an AI agent.

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

Parameters3/5

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

Schema coverage is 0%, so description adds meaning: 'sequences: List of sequences to align' and 'algorithm: Alignment algorithm to use (default: 'clustalw')'. This clarifies purpose but does not specify sequence format or algorithm options.

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 clearly states the tool performs multiple sequence alignment, a specific operation on sequences. It distinguishes from sibling tools like pairwise_align (pairwise) and build_phylogenetic_tree (post-alignment). However, it does not elaborate on the exact output or scope.

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?

No guidance on when to use this tool versus alternatives. The note about requiring external tools hints at limitations but does not explicitly compare to sibling tools or advise on selection criteria.

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

pairwise_alignA

Perform pairwise sequence alignment.

Args: seq1: First sequence seq2: Second sequence mode: Alignment mode - 'global' or 'local' (default: 'global') match_score: Score for matching residues (default: 2.0) mismatch_score: Score for mismatching residues (default: -1.0) gap_open: Gap opening penalty (default: -2.0) gap_extend: Gap extension penalty (default: -0.5)

Returns: Dictionary containing alignment results and statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
seq1Yes
seq2Yes
modeNoglobal
match_scoreNo
mismatch_scoreNo
gap_openNo
gap_extendNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It lists parameters and return type, but does not disclose behavioral traits such as computational complexity, sequence length limits, or side effects (though none expected). A basic description, but not deeply transparent.

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?

The description uses a standard docstring format with parameter listings, which is clear but somewhat verbose—many default values are already in the schema. While not excessively long, it could be more concise by omitting redundant default indicators.

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

Completeness4/5

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

The tool has 7 parameters (2 required) with no schema descriptions, and an output schema exists but is not detailed in the description. The description covers all parameters and states the return type as a dictionary with alignment results, which is adequate for a standard bioinformatics tool.

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?

Given that the input schema has 0% description coverage, the description compensates by naming each parameter (seq1, seq2, mode, match_score, etc.) and explaining their defaults and meaning (e.g., 'Score for matching residues'). This adds value beyond the bare schema.

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 explicitly states 'Perform pairwise sequence alignment' and lists two sequences and mode (global/local), clearly distinguishing it from sibling tools like multiple_sequence_alignment or build_phylogenetic_tree. The verb 'perform' combined with 'pairwise sequence alignment' precisely identifies the function.

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

Usage Guidelines3/5

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

The description implies use when pairwise alignment of two sequences is needed, but it does not provide explicit guidance on when to choose global vs local mode, nor does it mention alternatives like multiple_sequence_alignment. It lacks 'when'/'when not' statements.

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

pubmed_fetchA

Fetch full-text article from PubMed Central (PMC).

This function retrieves open access full-text articles from PMC using the PMC OAI service. Only works for open access articles that have a PMC ID.

Args: pmc_id: PMC identifier (with or without 'PMC' prefix, e.g., "PMC123456" or "123456") format: Output format - "xml" for structured XML or "text" for plain text (default: "xml") timeout: Request timeout in seconds (default: 30)

Returns: Dictionary containing the full-text article and metadata: - success (bool): Whether fetch was successful - pmc_id (str): The PMC identifier - format (str): Format of returned content - content (str): Full-text article content - content_length (int): Length of content in characters - error (str): Error message if unsuccessful

Examples: >>> result = pubmed_fetch("PMC3539452") >>> if result["success"]: ... print(result["content"][:100])

>>> result = pubmed_fetch("3539452", format="text")
>>> print(result["content"])

Note: - Only works for open access articles - Articles without PMC IDs cannot be fetched - Rate limiting applies (use with entrez_rate_limit context manager) - XML format preserves structure (sections, figures, tables, references) - Text format provides simplified plain text extraction

ParametersJSON Schema
NameRequiredDescriptionDefault
pmc_idYes
formatNoxml
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the OAI service dependency, open access requirement, rate limiting, and return format (success/error dictionary). It could be more specific about rate limits or automatic error handling, but covers essential behavioral traits.

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

Conciseness5/5

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

The description is well-structured with introduction, Args, Returns, Examples, and Note sections. It is front-loaded with the core purpose. Every sentence adds value, with no filler.

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 3 parameters, no annotations, and existing output schema, the description is complete. It covers all essential aspects: what it fetches, prerequisites, parameters with examples, return structure, and limitations. The output schema is effectively described in the Returns section.

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

Parameters5/5

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

Schema coverage is 0%, so the description must fully explain parameters. It does: pmc_id accepts with/without 'PMC' prefix, format specifies 'xml' or 'text', timeout in seconds. It also explains return fields. This compensates completely for the lack of schema descriptions.

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 clearly states the tool fetches full-text articles from PubMed Central (PMC) using the PMC OAI service, specifying it works only for open access articles with a PMC ID. This distinguishes it from siblings like pubmed_search (search) and entrez_fetch (generic fetch), giving a specific verb and resource.

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

Usage Guidelines4/5

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

The description provides clear context: only for open access articles with PMC IDs, with rate limiting. Examples show usage. However, it does not explicitly compare to alternatives like entrez_fetch for other databases or pubmed_search for metadata, missing explicit when-not-to-use guidance.

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

pubmed_reviewA

Create a formatted literature review from PubMed search results and write to MD file.

This function searches PubMed, fetches article metadata, formats it as markdown with complete abstracts, and writes the content directly to a file. The LLM determines both the storage location and filename.

Args: query: PubMed search query (supports full Entrez syntax including year filters) Example: "BRCA1 AND breast cancer AND 2020:2024[PDAT]" path: Relative directory path within vault (e.g., "research/cancer" or "genetics/reviews") The LLM decides the directory structure. filename: Name of the markdown file (e.g., "brca1_review_2024.md" or "alport_syndrome.md") The LLM decides the filename. Should include .md extension. obsidian_vault: Path to Obsidian vault root (optional, defaults to OBSIDIAN_VAULT_PATH env variable) Example: "/Users/user/Documents/MyVault" max_results: Maximum number of articles to include (default: 25, max: 1000) sort: Sort order - "pub_date", "relevance", etc. (default: "pub_date")

Returns: Dictionary with review results and metadata: - status: "success" or "error" - filepath: Full path where file was written - articles_found: Total number of articles found - articles_written: Number of articles successfully processed - articles_with_pmc: Count of articles with PMC IDs - articles_with_doi: Count of articles with DOIs - query: Original search query - file_size_kb: File size in kilobytes - year_range: {"min": int, "max": int} - top_journals: List of top 5 journals by article count - execution_time_seconds: Time taken to generate review

Examples: >>> # Using environment variable for vault path >>> result = pubmed_review( ... query="COL4A3[Gene] AND Alport syndrome", ... path="genetics/reviews", ... filename="alport_syndrome_2024.md" ... )

>>> # Overriding vault path
>>> result = pubmed_review(
...     query="BRCA1 AND breast cancer AND 2020:2024[PDAT]",
...     path="oncology/brca1",
...     filename="literature_review_jan2024.md",
...     obsidian_vault="/Users/user/Vault",
...     max_results=50
... )

Notes: - Vault path comes from OBSIDIAN_VAULT_PATH environment variable or obsidian_vault parameter - LLM controls both directory structure (path) and filename separately - Writes markdown file directly to disk with complete abstracts - Fetches articles in batches of 20 (NCBI limit) - Respects NCBI rate limits (3/sec or 10/sec with API key) - For very large reviews (>500 articles), consider splitting into multiple calls - Includes Obsidian-compatible YAML frontmatter

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
pathYes
filenameYes
obsidian_vaultNo
max_resultsNo
sortNopub_date

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses key behaviors: writes to disk, fetches in batches of 20, respects NCBI rate limits, includes YAML frontmatter, and uses environment variables for vault path. However, it does not state whether existing files are overwritten or what happens on write failure, leaving a minor gap.

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 well-structured with clear sections (Args, Returns, Examples, Notes) and uses markdown formatting. It is somewhat long (approx. 30 lines) but each part adds value. No redundant sentences; every section earns its place. Minor improvement could be trimming common knowledge (e.g., 'file should include .md extension' is implied).

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 (6 parameters, output dictionary, sibling differentiation), the description is complete. It covers purpose, all parameters with examples, return value schema, behavioral notes (rate limits, batching), and environmental context. The presence of a detailed Returns section means no need to explain return values further. No gaps identified.

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

Parameters5/5

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

Since input schema has 0% description coverage, the description entirely defines parameter semantics. It provides detailed explanations for all 6 parameters, including examples (e.g., query syntax), defaults, constraints (max_results max 1000), and valid options (sort values). This fully compensates for the schema's lack of descriptions.

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 clearly states it creates a formatted literature review from PubMed and writes to an MD file. The verb 'Create', resource 'literature review from PubMed', and output 'write to MD file' are specific. This distinguishes it from sibling tools like pubmed_search which only return results, or entrez_fetch which returns raw data.

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

Usage Guidelines3/5

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

The description provides context about LLM-controlled location and file writing, and adds a note about splitting large reviews. However, it does not explicitly state when to use this tool vs alternatives (e.g., pubmed_search for simple queries, entrez_fetch for raw data), nor does it include 'when not to use' guidance. Usage is implied but not explicitly bounded.

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

reverse_complementC

Get the reverse complement of a DNA sequence.

Args: sequence: DNA sequence string

Returns: Dictionary containing the reverse complement and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
sequenceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only states the operation but does not disclose whether the function is idempotent, what metadata is included in the return, or any potential side effects. This is insufficient for an agent to understand the tool's behavior fully.

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?

The description is concise—two sentences plus an args/returns section. However, it packs little information, making it under-specified rather than efficiently informative. It does not waste words but also fails to provide necessary detail.

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?

Given the tool is simple with one parameter and an output schema, the description is incomplete. It does not explain the return value beyond 'dictionary containing reverse complement and metadata,' leaving the agent unaware of the dictionary structure or possible keys.

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?

With 0% schema description coverage, the description must compensate. However, it merely restates the parameter name and type ('sequence: DNA sequence string'), adding no additional semantics such as expected format (e.g., uppercase, no spaces) or 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 clearly states the purpose: 'Get the reverse complement of a DNA sequence.' This is a specific verb+resource combination that distinctly identifies the tool's function. It is easily distinguishable from sibling tools like transcribe_dna, translate_sequence, or calculate_gc_content.

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?

The description provides no guidance on when to use this tool versus alternatives. With multiple related tools (e.g., transcribe_dna, translate_sequence) available, an agent receives no help in selecting the correct tool for the task.

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

search_pubmedC

Search PubMed for scientific articles.

Args: query: Search query string max_results: Maximum number of results to return (default: 10) email: Email address for Entrez (required by NCBI)

Returns: Dictionary containing search results with PMIDs and article information

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo
emailNouser@example.com

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description must fully convey behavior. It mentions the email requirement and the return format (dict with PMIDs and article info), but lacks details on rate limits, error handling, or pagination. It partially covers behavioral aspects.

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 well-structured with Args and Returns sections, making it easy to parse. However, it repeats default values already in the schema, slightly reducing conciseness.

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?

While an output schema exists (not shown), the description only vaguely describes the return value as a dictionary. Given the complexity of searching PubMed, more details on result structure, pagination, or limits are needed for completeness.

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?

With 0% schema description coverage, the description adds minimal meaning beyond the schema. It explains that email is required by NCBI, but otherwise repeats default values already present in the schema. This is insufficient to compensate for the lack of schema documentation.

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 clearly states the tool searches PubMed for scientific articles. It uses a specific verb and resource. However, among siblings there is also 'pubmed_search', which could cause confusion, and the description does not differentiate from that sibling.

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?

No guidance is provided on when to use this tool versus alternatives like 'pubmed_search' or 'pubmed_fetch'. The description only explains what the tool does, not the context of its use.

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

transcribe_dnaA

Transcribe DNA to RNA (or reverse transcribe RNA to DNA).

Args: sequence: DNA or RNA sequence string reverse: If True, reverse transcribe RNA to DNA (default: False)

Returns: Dictionary containing the transcribed sequence and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
sequenceYes
reverseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the tool returns a dictionary with sequence and metadata, but does not mention error handling or input validation, which is adequate for a simple transformation.

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

Conciseness5/5

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

The description is very concise, using bullet-style Args and Returns for clarity. Every sentence adds value, and the purpose is front-loaded.

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 simplicity and the presence of an output schema (as indicated by context signals), the description is complete. It covers the main functionality and return type without missing critical details.

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?

The description adds meaning beyond the schema by explaining 'sequence' accepts DNA or RNA and 'reverse' transcribes in the opposite direction. This compensates for the 0% schema description coverage.

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 clearly states the tool transcribes DNA to RNA or reverse transcribes RNA to DNA, providing a specific verb and resource. It distinguishes from siblings like reverse_complement and translate_sequence by focusing on transcription.

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

Usage Guidelines3/5

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

The description implies usage for transcription tasks but offers no explicit guidance on when to use this tool versus alternatives like reverse_complement or when not to use it.

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

translate_sequenceA

Translate a DNA or RNA sequence to protein.

Args: sequence: DNA or RNA sequence string table: Genetic code table to use (default: 1 for standard code) to_stop: Stop translation at first stop codon (default: False)

Returns: Dictionary containing the translated protein sequence and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
sequenceYes
tableNo
to_stopNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses key behaviors: translation uses a genetic code table, can stop at first stop codon, and returns a dict with protein sequence and metadata. However, it does not mention error handling or input validation.

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 well-structured with a clear purpose sentence followed by Args and Returns sections. It is slightly verbose but front-loaded and free of redundancy.

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 moderate complexity (3 parameters) and the presence of an output schema, the description provides sufficient context: it covers all parameters, return value, and key behavior. No critical gaps remain.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully explains each parameter: sequence as DNA/RNA string, table as genetic code table with default 1, to_stop as stop at first stop codon. This adds significant meaning beyond the schema's type and defaults.

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 clearly states 'Translate a DNA or RNA sequence to protein,' providing a specific verb and resource. It distinguishes itself from sibling tools like transcribe_dna and reverse_complement.

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?

No guidance is given on when to use this tool versus alternatives, nor are any prerequisites or exclusions mentioned. The description simply states what it does.

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

TDQS

B3.4/5.0
Disambiguation3/5

There is some overlap between tools, particularly with multiple PubMed search functions (search_pubmed and pubmed_search) and the generic entrez_search also able to search PubMed. Other tools are largely distinct, but the redundancy creates potential confusion for an agent selecting the appropriate tool.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., calculate_gc_content, fetch_uniprot), but a few deviate like reverse_complement (verb_object) and clinvar_variant_lookup (object_action). Overall naming is clear and mostly consistent.

Tool Count2/5

With 32 tools covering multiple subdomains (sequence analysis, alignment, phylogenetics, NCBI, structure, literature), the tool count is high for a single MCP server. This breadth suggests the server could be split into more focused servers for better manageability and clarity.

Completeness3/5

The toolset covers a wide range of bioinformatics tasks, but there are notable gaps such as missing tools for sequence format conversion, codon usage analysis, or comprehensive structural analysis. Additionally, the multiple_sequence_alignment tool is noted as a placeholder, indicating incomplete implementation.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enhances language models with protein structure analysis capabilities, enabling detailed active site analysis and disease-related protein searches through established protein databases.
    2
    18
  • A
    license
    A
    quality
    A
    maintenance
    Provides LLMs with structured access to critical biomedical databases including PubTator3 (PubMed/PMC), ClinicalTrials.gov, and MyVariant.info through the Model Context Protocol.
    35
    623
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A comprehensive Model Context Protocol server that enables advanced PubMed literature search, citation formatting, and research analysis through natural language interactions.
    12
    10
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    Provides programmatic access to AlphaFold protein structure predictions and UniProt data, enabling users to retrieve protein structures, summaries, and annotations through natural language.
    3

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kmaneesh/biopython-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server