PubMed Advanced MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PubMed Advanced MCP ServerSearch PubMed for clinical trials on Alzheimer's disease"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐งฌ PubMed Advanced MCP Server
A comprehensive Model Context Protocol (MCP) server that exposes PubMed and PubMed Central research literature APIs as intelligent tools for LLM applications.
Built with โค๏ธ by Suyash Ekhande
Features โข Quick Start โข Tools โข Examples โข Architecture
https://github.com/user-attachments/assets/892978f7-88d8-4b26-992e-41ba87c1b1cf
๐ Features
16 Intelligent Tools organized into 5 categories for comprehensive biomedical literature access
34M+ PubMed Articles - Search across the world's largest biomedical abstract database
7M+ PMC Full-Text Articles - Access complete article content from PubMed Central
Smart Rate Limiting - Automatic compliance with NCBI rate limits (3-10 req/sec)
Cross-Database Linking - Connect articles to genes, proteins, clinical variants, and more
ID Conversion - Seamlessly convert between PMID, PMCID, DOI, and Manuscript IDs
BioC Format Support - Pre-parsed text for NLP and text mining applications
Pipeline Operations - Build complex multi-step queries using Entrez History Server
Batch Processing - Efficiently handle 10K+ articles with chunked operations
Related MCP server: mcp-pubmed
๐ฆ Installation
Prerequisites
Python 3.10 or higher
pip or uv package manager
Install from source
# Clone the repository
git clone https://github.com/yourusername/pubmed-advanced-mcp.git
cd pubmed-advanced-mcp
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Or install as package
pip install -e .Configure API Key (Recommended)
# Copy example environment file
cp .env.example .env
# Edit .env and add your NCBI API key
# Get one at: https://www.ncbi.nlm.nih.gov/account/Note: Without an API key, you're limited to 3 requests/second. With an API key, you get 10 requests/second.
๐ Quick Start
Run the MCP Server
# Using Python directly (Streamable HTTP on port 8000)
python -m src.server
# With custom host/port
MCP_HOST=127.0.0.1 MCP_PORT=9000 python -m src.serverTransport: This server uses Streamable HTTP as the only transport protocol. It runs on
http://0.0.0.0:8000/mcpby default.
Run with Docker
# Build the image
docker build -t pubmed-mcp .
# Run the container
docker run -d -p 8000:8000 --name pubmed-mcp pubmed-mcp
# Run with NCBI API key for higher rate limits
docker run -d -p 8000:8000 -e NCBI_API_KEY=your-api-key pubmed-mcp๐ Available Tools
Category 1: Search & Discovery (5 tools)
Tool | Description | Example Use Case |
| Search 34M+ PubMed abstracts | Find reviews on CAR-T therapy |
| Full-text search in PMC | Search methods sections for protocols |
| MeSH controlled vocabulary search | Find all cancer therapy articles |
| Multi-field Boolean queries | Complex author + topic + date searches |
| Cross-database hit counts | Discover data across NCBI |
Category 2: Document Retrieval (4 tools)
Tool | Description | Example Use Case |
| Get article metadata | Retrieve author and abstract info |
| Get complete article content | Download full PMC articles |
| BioC format for NLP | Text mining and NER tasks |
| Bulk article retrieval | Download 1000+ articles efficiently |
Category 3: Cross-Reference & Linking (3 tools)
Tool | Description | Example Use Case |
| Citation/similarity links | Build citation networks |
| Cross-link to Gene, Protein, etc. | Find genes mentioned in articles |
| Author publication history | Track researcher output |
Category 4: ID Conversion (2 tools)
Tool | Description | Example Use Case |
| Batch ID conversion | Convert DOIs to PMIDs |
| Single ID resolution | Look up article by any ID type |
Category 5: Advanced Operations (2 tools)
Tool | Description | Example Use Case |
| Multi-step query pipelines | Complex research workflows |
| Large-scale processing | Process 10K+ articles |
๐ Usage Examples
Basic Search
User: Find recent reviews about CRISPR gene editing in cancer
AI uses: pubmed_search(
query="CRISPR gene editing cancer",
filters={"publication_types": ["Review"], "publication_date_start": "2023"},
max_results=10
)MeSH-Based Search
User: Find all articles about breast cancer treatment using MeSH terms
AI uses: mesh_term_search(
mesh_term="Breast Neoplasms",
qualifiers=["therapy", "drug therapy"],
explode=True,
max_results=50
)Find Related Articles
User: What articles are similar to PMID 37000000?
AI uses: find_related_articles(
pmid="37000000",
relationship_type="similar",
max_results=20
)Convert Article IDs
User: Convert these DOIs to PMIDs: 10.1038/nature12373, 10.1126/science.1225829
AI uses: convert_article_ids(
ids=["10.1038/nature12373", "10.1126/science.1225829"],
from_type="auto"
)Build a Research Pipeline
User: Find diabetes review articles that are linked to HLA genes
AI uses: build_search_pipeline(
steps=[
{"operation": "search", "database": "pubmed",
"parameters": {"query": "diabetes[mh] AND review[pt]"}},
{"operation": "link", "database": "gene",
"parameters": {"from_db": "pubmed"}}
]
)Batch Processing
User: Get metadata for these 500 PMIDs for my literature review
AI uses: batch_fetch_articles(
pmids=["12345678", "23456789", ...], # 500 IDs
include_metadata=True,
include_abstract=True,
batch_size=100
)๐ Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ LLM / AI Agent Client โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
MCP Protocol (Streamable HTTP)
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ FastMCP Server (Python) โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 16 MCP Tools โ โ
โ โ Search โ Retrieval โ Linking โ ID Conversion โ Advanced Ops โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ API Clients (with Rate Limiting) โ โ
โ โ E-Utilities โ BioC API โ ID Converter โ Session Manager โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
HTTP/REST API Calls
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ NCBI E-Utilitiesโ โ BioC APIs โ โ ID Converter โ
โ (34M+ articles) โ โ (29M+ articles) โ โ (200 IDs/batch) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ๐ Project Structure
pubmed-advanced-mcp/
โโโ src/
โ โโโ __init__.py
โ โโโ server.py # FastMCP server with all 16 tools
โ โโโ config.py # Configuration management
โ โ
โ โโโ clients/ # API client modules
โ โ โโโ base.py # Base HTTP client with rate limiting
โ โ โโโ eutilities.py # NCBI E-Utilities client
โ โ โโโ bioc_api.py # BioC text mining API
โ โ โโโ id_converter.py # PMC ID Converter
โ โ โโโ session_manager.py # Entrez History management
โ โ
โ โโโ tools/ # MCP Tool implementations
โ โ โโโ search_tools.py # 5 search tools
โ โ โโโ retrieval_tools.py # 4 retrieval tools
โ โ โโโ linking_tools.py # 3 linking tools
โ โ โโโ id_conversion_tools.py # 2 ID tools
โ โ โโโ advanced_tools.py # 2 advanced tools
โ โ
โ โโโ schemas/ # Pydantic models
โ โ โโโ tool_schemas.py # Input/output schemas
โ โ
โ โโโ utils/ # Utilities
โ โโโ rate_limiter.py # Token bucket rate limiter
โ โโโ query_builder.py # E-utilities query builder
โ โโโ error_handler.py # Custom exceptions
โ
โโโ docs/
โ โโโ implementation/ # Implementation documentation
โ โโโ *.md # Original requirements
โ
โโโ requirements.txt
โโโ pyproject.toml
โโโ .env.example
โโโ README.mdโ๏ธ Configuration
Environment Variables
Variable | Description | Default |
| NCBI API key for higher rate limits | None (3 req/sec) |
| Tool identifier for NCBI |
|
| Contact email (required by NCBI) |
|
Rate Limits
Scenario | Rate Limit |
Without API Key | 3 requests/second |
With API Key | 10 requests/second |
Violation | IP blocked for 24+ hours |
๐ฌ Sample Prompts for LLMs
Here are example prompts you can use with Claude or other LLM clients:
Literature Review
"Find all systematic reviews about COVID-19 vaccine efficacy published in 2023-2024.
Include the abstracts and MeSH terms."Gene-Disease Research
"Search for articles about TP53 mutations in breast cancer. Then link these articles
to related gene records in NCBI Gene database."Author Analysis
"Find all publications by Jennifer Doudna in the last 5 years and summarize
her research focus areas."ID Conversion
"I have these DOIs from my reference manager. Convert them to PMIDs so I can
search for related articles: 10.1038/nature12373, 10.1126/science.1225829"Text Mining Pipeline
"Get the full text of PMC7611378 in BioC format. I need it for named entity
recognition to extract drug names and disease mentions."๐งช Testing
Run Tests
# Install dev dependencies
pip install -e ".[dev]"
# Run all tests
pytest
# Run with verbose output
pytest -v
# Run specific test file
pytest tests/test_search_tools.py๐ API Documentation
E-Utilities Query Syntax
The server supports full E-utilities query syntax:
# Basic search
cancer
# Field-specific search
cancer[ti] # Title
CRISPR[ab] # Abstract
"Zhang F"[au] # Author
Nature[ta] # Journal
# Boolean operators (MUST be uppercase)
cancer AND therapy
cancer OR tumor
cancer NOT lung
# Date ranges
cancer AND 2023[dp] # Year
cancer AND 2020:2024[dp] # Range
# MeSH terms
"Breast Neoplasms"[mh] # MeSH heading
"Neoplasms/therapy"[mh] # With qualifier
# Publication types
review[pt]
clinical trial[pt]๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/AmazingFeature)Commit your changes (
git commit -m 'Add some AmazingFeature')Push to the branch (
git push origin feature/AmazingFeature)Open a Pull Request
Acknowledgments
NCBI for providing the E-utilities and related APIs
FastMCP for the excellent MCP framework
The biomedical research community for their contributions to PubMed
Made with โค๏ธ for the biomedical research community
Built by Suyash Ekhande
Available Tools
16 toolsadvanced_searchA
Build complex Boolean queries with field-specific search.
Provides precise control over search logic with multiple terms, fields, and Boolean operators.
| Name | Required | Description | Default |
|---|---|---|---|
| date_field | No | "publication_date" or "entry_date" | publication_date |
| max_results | No | Number of results | |
| query_builder | Yes | List of search terms, each with: - field: "title", "abstract", "author", "journal", "all_fields", "mesh" - term: The search term - operator: "AND", "OR", "NOT" | |
| date_range_end | No | ||
| date_range_start | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention any behavioral traits such as read-only nature, rate limits, error conditions, or what the response contains. The description only states what the tool does, not how it behaves or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: two sentences that immediately state the core purpose and value. Every word earns its place, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return value documentation is not a burden on the description. However, the description lacks context about when to use this tool versus simpler search tools, and it does not provide examples or clarify the structure of the query_builder beyond what the schema already states. Given the tool's moderate complexity, the description is minimally sufficient but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 60% of the parameters with descriptions (e.g., query_builder field/term/operator, date_field options). The description adds minimal extra meaning beyond the schema, mentioning 'multiple terms, fields, and Boolean operators' but not detailing the specific parameters or their composition. Since schema coverage is moderate, the description does not significantly compensate for missing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Build') and resource ('complex Boolean queries with field-specific search'). It distinguishes itself from sibling tools like global_search and pubmed_search by emphasizing complex Boolean logic and field-specific control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for complex queries requiring Boolean operators and field-specific search, but it does not explicitly state when to use this tool over alternatives, nor does it mention exclusions or alternatives. The usage context is implied but not directly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_fetch_articlesA
Efficiently fetch multiple articles with rate limiting.
Handles large batches by chunking requests and respecting NCBI rate limits. Returns both successful and failed retrievals.
| Name | Required | Description | Default |
|---|---|---|---|
| pmids | Yes | List of PubMed IDs (up to 10,000) | |
| batch_size | No | IDs per API call (max 500) | |
| include_abstract | No | Include abstracts | |
| include_metadata | No | Include article metadata |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden; it reveals chunking, rate-limit handling, and the return of both successful and failed retrievals. This gives useful behavioral insight beyond the schema, though it omits details like error handling or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary purpose, and contains no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and full parameter documentation, the description sufficiently frames the tool's role. It could benefit from explicit alternatives or exclusions, but overall it's complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, so baseline is 3. The description adds context that batch_size relates to chunking and rate limits, but doesn't provide any additional parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches multiple articles, using a specific verb and resource. It implies batch behavior but doesn't explicitly differentiate from siblings like batch_process_articles or fetch_article_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes it handles large batches and respects NCBI rate limits, indicating when to use it (large-scale retrieval with rate-limit management). It doesn't name alternatives or exclusions but provides clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_process_articlesB
Process large sets of articles with batch operations.
Handles datasets of 10K+ articles efficiently with chunked processing and rate limiting.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | - "fetch_summaries": Get article metadata - "fetch_full": Get full records - "export_bioc": Export in BioC format - "text_statistics": Compute text statistics | fetch_summaries |
| batch_config | No | {"batch_size": 100, "parallel_workers": 3} | |
| input_source | Yes | Data source specification - {"from_search": {"query": "...", "database": "pubmed"}} - {"from_ids": ["pmid1", "pmid2", ...]} - {"from_pipeline": {"query_key": "1", "web_env": "..."}} | |
| output_format | No | "json", "csv", or "ndjson" | json |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses chunked processing and rate limiting, which are useful behavioral traits, but it does not mention whether operations are read-only, require authentication, or how errors are handled. This is partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences that are front-loaded with the purpose and add one key detail about handling scale and rate limiting. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema (all parameters described, nested objects explained) and the presence of an output schema, the description covers the high-level usage and scale. It could mention the specific operation types, but those are already in the schema, so the description is adequate for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents all four parameters with examples and allowed values. The description adds no additional meaning about parameters, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it processes large sets of articles with batch operations, but 'process' is a generic verb that does not specify the actual operations (fetch summaries, export BioC, etc.). It identifies the resource (articles) and scale, but lacks a specific action, making it vague and not clearly distinguishing from siblings like batch_fetch_articles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for large datasets ('10K+ articles') and mentions efficiency, which provides some context. However, it does not explicitly state when to use this tool over alternatives like batch_fetch_articles, nor does it give exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_search_pipelineA
Build and execute a multi-step search pipeline.
Uses Entrez History Server to chain operations efficiently. Ideal for complex queries like: "Find diabetes reviews, then limit to articles linked to HLA genes"
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | List of pipeline steps, each with: - operation: "search", "link", or "combine" - database: Target database ("pubmed", "pmc", "gene", etc.) - parameters: Operation-specific params - search: {"query": "search terms"} - link: {"from_db": "pubmed", "link_name": "pubmed_gene"} - combine: {"combine_with": 1, "operator": "AND"} | |
| output_step | No | Step number to return results from |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing side effects and behavior. It mentions the Entrez History Server, hinting at server-side state, but does not clarify whether the operation is read-only, whether it has lasting side effects, how errors or rate limits manifest, or what happens after execution. This is insufficient for a compound action that 'builds and executes' a pipeline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact at two sentences plus an example. The first sentence states the core purpose, the second adds the technical mechanism (Entrez History Server), and the example clarifies the intended query pattern. Every element earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with a nested parameter structure, but the schema provides rich detail and the description gives one use case. However, the absence of any behavioral caveats (e.g., limits on number of steps, required authentication, or whether results are returned as IDs or summaries) makes it only partially complete. An output schema exists, so return format may be covered there, but broader execution expectations are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% parameter coverage, including detailed descriptions for the 'steps' array and 'output_step'. The description adds an illustrative example that demonstrates how to combine search and link operations in the steps parameter, which reinforces the schema's abstract structure with a concrete scenario.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Build and execute a multi-step search pipeline.' This specifies a concrete action (build and execute) on a specific resource (multi-step search pipeline), and the example ('Find diabetes reviews, then limit to articles linked to HLA genes') distinguishes it from single-step sibling tools like pubmed_search or link_to_databases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use this tool: it is 'Ideal for complex queries' and mentions the efficiency gain from using the Entrez History Server. However, it does not explicitly state when not to use it or mention alternative simpler tools (e.g., pubmed_search for one-step searches), so it lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_article_idsA
Convert article IDs between different formats.
Supports batch conversion (up to 200 IDs) between:
PMID (PubMed ID): e.g., "37000000"
PMCID (PubMed Central ID): e.g., "PMC7611378"
DOI: e.g., "10.1093/nar/gks1195"
Manuscript ID: e.g., "NIHMS1677310"
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | List of IDs to convert (max 200) | |
| from_type | No | "auto" (detect), "pmid", "pmcid", "doi", "mid" | auto |
| include_versions | No | Include version history |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It adds useful context by mentioning the batch limit and the four supported ID formats. However, it says nothing about error handling, authentication, or return behavior. Given the tool is a simple read-only conversion, this is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with a bullet list, immediately stating the tool's purpose and then elaborating on formats. Every line contributes to understanding, with no fluff or redundant repetition of schema details. It is excellently structured and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity of this tool, the output schema exists, and the parameter schema is fully documented, the description covers the essential information. It lacks a note about how this tool relates to 'resolve_article_identifier', but that gap is more of a usage guideline issue. Overall, it is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, providing descriptions for all three parameters. The description adds value by giving concrete examples of each ID format (e.g., '37000000', 'PMC7611378'), which helps the agent format inputs correctly. This goes beyond the schema's terse parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts article IDs between formats, using the specific verb 'convert' and identifying the resource (article IDs). It distinguishes itself from siblings by focusing on format conversion, but it doesn't explicitly differentiate from the similarly named 'resolve_article_identifier'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about batch conversion (up to 200 IDs) and the supported formats, which implies when to use it. However, it does not explicitly state when not to use it or mention alternatives like 'resolve_article_identifier' for single-ID resolution. This is an implied usage scenario rather than explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_article_summaryA
Fetch detailed article summary and metadata.
Returns comprehensive information including title, authors, abstract, MeSH terms, journal details, DOI, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| pmid | Yes | PubMed ID (e.g., "37000000") | |
| database | No | "pubmed" or "pmc" | pubmed |
| include_full_metadata | No | Include all available metadata |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It honestly describes the fetch/read nature and what data it returns, which implies minimal side effects. However, it does not disclose any operational details such as error behavior, potential rate limits, permissions, or behavior on invalid input. The absence of risky behavior (mutation) earns it a mid-range score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of exactly two sentences with no redundant words. The primary action is front-loaded, and the second sentence efficiently lists the key output fields. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema means return values are already structurally covered, so the description need not explain them in detail. The description gives a solid overview of what the tool returns and implies its scope. It could be slightly more explicit about how this tool fits with siblings like fetch_full_article, but overall it is complete for the tool's simple fetch functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters (pmid, database, include_full_metadata) have complete schema descriptions, so the baseline is 3. The tool description does not add parameter-specific semantics beyond the schema, nor does it highlight any special parameter interactions or value formatting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as fetching 'detailed article summary and metadata' and enumerates the specific fields returned (title, authors, abstract, MeSH terms, journal details, DOI). This is a specific verb+resource and distinguishes it from search tools, but it does not explicitly compare against fetch_full_article, so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when an article summary or metadata is needed, but it gives no explicit guidance about when not to use it or which alternative to choose (e.g., fetch_full_article for full text). There are no prerequisites, exclusions, or conditional scenarios mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_bioc_articleA
Fetch article in BioC format for text mining.
BioC provides pre-parsed text ideal for NLP tasks:
Passage-level segmentation (title, abstract, sections)
Sentence-level boundaries
Ready for named entity recognition, relation extraction
| Name | Required | Description | Default |
|---|---|---|---|
| pmid | No | PubMed ID (for abstract in BioC) | |
| pmcid | No | PMC ID (for full-text in BioC) | |
| format | No | "xml" or "json" | json |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It does so by explaining what BioC output contains (passage segmentation, sentence boundaries) and why it is suitable for NER/relation extraction. It does not discuss error cases or side effects, but for a simple read-only fetch tool, the description is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with a clear imperative first sentence followed by a compact bullet list. Every line adds useful context about BioC features, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only three optional parameters, an output schema, and a clear purpose. The description complements the schema well by explaining the BioC format's value. However, it does not explicitly note that at least one of pmid or pmcid must be provided, which is a minor gap for an otherwise complete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with clear descriptions for pmid ('PubMed ID for abstract in BioC'), pmcid, and format. The description adds no additional parameter-level guidance, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Fetch article in BioC format for text mining,' which combines a specific verb, resource, and purpose. This clearly distinguishes it from sibling tools like fetch_article_summary or fetch_full_article by emphasizing the BioC format and NLP use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'BioC provides pre-parsed text ideal for NLP tasks' and lists segmentation/boundaries, giving clear context for when to use this tool. It does not explicitly name alternatives or state when not to use it, but the NLP framing effectively implies the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_full_articleA
Fetch complete article content.
For PubMed: Returns abstract and metadata (full text not available). For PMC: Returns full text if article is in PMC Open Access.
| Name | Required | Description | Default |
|---|---|---|---|
| pmid | No | PubMed ID (for abstracts) | |
| pmcid | No | PMC ID (for full-text, e.g., "PMC7611378") | |
| format | No | "abstract", "medline", or "xml" | xml |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently discloses that PubMed does not return full text and that PMC full text is contingent on Open Access status. This covers key behavioral constraints, though it does not detail format-specific behavior or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main action, followed by necessary caveats. Two short sentences, no redundancy, every sentence provides essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and schema coverage is 100%, the description adequately covers the key decision points: which ID to use and what content to expect. It could mention relationship to siblings or error handling, but it is sufficiently complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds semantic value by pairing PMID/PMCID with expected content types and the Open Access caveat. The format parameter is not elaborated beyond schema, but the description elevates the parameters' practical meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches article content, with specific differentiation between PubMed (abstract and metadata only) and PMC (full text if Open Access). This distinguishes it from siblings like fetch_article_summary and fetch_bioc_article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by mapping PMID to PubMed (abstract) and PMCID to PMC (full text if OA). It does not explicitly name alternative tools or exclusion criteria, but the context is sufficient for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_citations_by_authorsB
Find all publications by a specific author.
| Name | Required | Description | Default |
|---|---|---|---|
| author_name | Yes | Author name ("LastName FirstInitial" format works best, e.g., "Smith J" or "Zhang Feng") | |
| max_results | No | Maximum publications to return | |
| date_range_end | No | End year (YYYY) | |
| date_range_start | No | Start year (YYYY) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must explain behavior, but it only says 'find all publications.' This is misleading because the max_results parameter limits output, and the description omits details about response format, limits, or any side effects. It does not contradict annotations (there are none), but it provides very thin behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous phrases. Every word contributes to conveying the core function, making it highly concise and well-structured for the purpose it serves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, sibling search tools, no annotations), the description is too minimal. While an output schema exists to explain return values, the description fails to provide guidance on usage context, result limits, or how it differs from other search tools, leaving an agent under-equipped for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all four parameters with 100% coverage, including the meaning of author_name, max_results, and the date range parameters. The description adds no parameter-level semantics beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds publications by an author, with a specific verb ('Find') and resource ('publications', though the tool name says 'citations'). It does not explicitly differentiate from sibling tools like pubmed_search or advanced_search, but the author-specific scope makes its purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when you need publications by a specific author, but it provides no explicit guidance on when to use this tool versus the many search-oriented siblings (pubmed_search, pmc_search, etc.). There are no exclusions or direct comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
global_searchA
Search across all NCBI databases to find data availability.
Returns hit counts for 38+ NCBI databases, helping identify which databases have relevant data for your query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| databases | No | Specific databases to check (all if empty) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well by disclosing that it returns hit counts rather than full records, and that it covers 38+ databases. It does not mention rate limits or query syntax, but the core behavior is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the action, and every clause earns its place. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, full schema coverage, and the presence of an output schema, the description provides enough context. It explains what the tool does, what it returns (hit counts), and why it's useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds the 'all databases' scope but does not add extra meaning beyond the schema's own parameter descriptions for 'query' and 'databases'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Search') and resource ('all NCBI databases'), clearly differentiating it from siblings like pubmed_search or pmc_search that target specific databases. It also states the tool returns hit counts, which clarifies its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool to discover data availability across databases, which implies a discovery/overview use case. It does not explicitly name alternatives or when-not-to-use, so it misses the top bar for explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_to_databasesA
Find records in other NCBI databases linked to an article.
Maps from literature to biological knowledge bases.
| Name | Required | Description | Default |
|---|---|---|---|
| pmid | Yes | Source PubMed ID | |
| target_databases | Yes | Databases to link to: - "gene": Associated genes - "protein": Related proteins - "structure": 3D molecular structures - "clinvar": Clinical variants - "snp": Genetic variants - "biosystems": Biological pathways - "pccompound": Chemical compounds |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states what the tool does (finds linked records) without describing any constraints, side effects, return characteristics, or potential limitations such as pagination or database availability. This is a significant gap for a tool that accesses external databases, as the agent cannot anticipate whether the operation is read-only or if any parameters are ignored.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that immediately communicate the core function. Every word adds value, with no redundancy or filler. This is an example of efficient, front-loaded writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 fact that an output schema exists (so return values need not be explained), the description is minimally adequate. However, it lacks usage guidance and behavioral transparency, which prevents it from being fully complete. For a simple look-up tool, this is sufficient but not exemplary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for both parameters, with clear explanations for 'pmid' and the list of possible 'target_databases' values. The description itself adds no additional semantic detail beyond the schema, but the schema is self-sufficient, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Find records in other NCBI databases linked to an article.' This specifies a verb and resource, and the second sentence 'Maps from literature to biological knowledge bases' further clarifies the purpose. It distinguishes from sibling tools focused on fetching articles or searching, as this unique cross-linking capability is not offered elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('Maps from literature to biological knowledge bases') but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions. There is no mention of when not to use it or what other tools might be better suited, leaving the agent to infer the appropriate scenario from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mesh_term_searchB
Search using MeSH controlled vocabulary terms.
MeSH (Medical Subject Headings) provides standardized, hierarchical indexing. Using MeSH ensures consistent retrieval across different terminologies.
| Name | Required | Description | Default |
|---|---|---|---|
| explode | No | Include all subtree terms (default True) | |
| mesh_term | Yes | MeSH descriptor (e.g., "Neoplasms", "Diabetes Mellitus") | |
| qualifiers | No | Subheadings (e.g., ["therapy", "prevention", "genetics"]) | |
| max_results | No | Number of results | |
| search_mode | No | "exact" or "descendant" (include hierarchy) | descendant |
| date_range_end | No | ||
| date_range_start | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey behavioral traits. It only mentions the hierarchical nature of MeSH, hinting at hierarchical expansion but not disclosing default behaviors like explode=true, qualifier handling, or date-range filtering. The description does not mention output format, pagination, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loads the core purpose in the first sentence. The second paragraph adds useful background on MeSH but could be integrated or shortened; overall it remains concise and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters and no annotations, the description is insufficiently complete. It fails to specify the searchable database, result types, or any limitations. The presence of an output schema partially compensates, but the description lacks critical contextual information for an agent to confidently select and use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers most parameters with descriptions (71% coverage), so the baseline is 3. The description adds no direct parameter details, though the hierarchical indexing note contextualizes search_mode and explode. This does not raise the score above the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search') and the resource ('MeSH controlled vocabulary terms'), which distinguishes it from general search tools like global_search or pubmed_search. However, it does not specify the underlying corpus being searched (e.g., PubMed vs PMC), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that MeSH is valuable for standardized retrieval across different terminologies, but does not explicitly state when to choose this tool over alternatives. No exclusions or alternative tool mentions are provided, making the usage context 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.
pmc_searchA
Search PMC for full-text articles.
Searches 7M+ full-text articles in PubMed Central. Unlike PubMed (abstracts only), PMC searches the complete article text.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| filters | No | Optional filters (same as pubmed_search) | |
| max_results | No | Number of results | |
| use_history | No | Store for pipeline chaining | |
| has_full_text | No | Limit to articles with full text (default True) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It states that the tool 'Searches 7M+ full-text articles in PubMed Central' and emphasizes the full-text nature, which is useful. But it does not disclose potential side effects, rate limits, pagination behavior, or whether results are restricted to open accessโinformation that could matter to an agent. It does make the core behavior clear, so it is not a 2.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the main action front-loaded: 'Search PMC for full-text articles.' The second sentence provides a crucial clarifying contrast with PubMed. There is zero wasted wording, making it exceptionally concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool, the description is complete enough: it identifies the resource, distinguishes from PubMed, and the output schema covers return values. It does not elaborate on result formatting or special behaviors, but the output schema and parameter schema fill those gaps. The only minor omission is lack of any mention of access limitations beyond full-text availability, but this is not critical. Overall, it is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage of all five parameters, each with a description, so the baseline is 3. The description does not add any parameter-level meaning; it only provides high-level context about the search scope. Since schema already documents parameters fully, the description adds no additional semantic value beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Search PMC for full-text articles.' It uses a specific verb and resource, and explicitly distinguishes itself from PubMed: 'Unlike PubMed (abstracts only), PMC searches the complete article text.' This effectively differentiates the tool from the sibling 'pubmed_search' and makes its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when full-text article search is needed. It names PubMed as an alternative and contrasts them ('Unlike PubMed (abstracts only)...'), giving explicit guidance about choosing PMC over PubMed. However, it does not mention when not to use the tool or discuss other sibling alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pubmed_searchA
Search PubMed for biomedical literature.
Searches 34M+ PubMed abstracts using natural language or E-utilities syntax. Returns publication metadata including titles, abstracts, authors, and MeSH terms.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., "CRISPR gene therapy", "cancer AND 2023[dp]") | |
| filters | No | Optional filters: - publication_date_start/end: Date range (YYYY or YYYY-MM-DD) - publication_types: ["Review", "Clinical Trial", etc.] - language: "eng", "spa", etc. - free_full_text_only: Limit to free articles | |
| sort_by | No | "relevance", "pub_date", or "first_author" | relevance |
| max_results | No | Number of results (1-10000) | |
| use_history | No | Store for pipeline chaining | |
| include_abstract | No | Include abstracts in results |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the search scope (34M+ PubMed abstracts), query syntax flexibility, and return content (metadata including abstract and MeSH terms). This adds meaningful behavioral context beyond the schema, though it omits details like rate limits or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences plus a one-liner about return content. Every sentence provides distinct value, and the core purpose is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with an output schema and full parameter documentation, the description is sufficient. It clearly states what it does, what it searches, and what it returns. It lacks explicit alternative guidance, but that is covered under usage guidelines. Overall, complete enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining that the query can be natural language or E-utilities syntax, which goes beyond the schema's examples. It also notes return fields like MeSH terms, aiding expectation of parameter impact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Search PubMed for biomedical literature', which is a specific verb+resource. It distinguishes from siblings like pmc_search by explicitly naming PubMed, but does not explicitly differentiate from other search tools like advanced_search or global_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for searching biomedical literature. It mentions support for natural language or E-utilities syntax, implying flexible usage, but does not explicitly state when not to use it or suggest alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_article_identifierA
Resolve a single identifier to all available ID formats.
Automatically detects the ID type and returns all available identifiers for the article.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Any article ID (PMID, PMCID, DOI, or MID) | |
| auto_detect_type | No | Auto-detect the ID type |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully explain behavior. It transparently states that the tool auto-detects the ID type and returns all identifiers, but it does not disclose what happens on invalid input, whether auto_detect_type=false changes behavior, or any error handling details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loads the core purpose, and contains no filler. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple identifier resolution tool with an output schema present, the description adequately covers the main functionality. However, it lacks any mention of error handling or limitations, and the presence of the similar 'convert_article_ids' sibling suggests a bit more context would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters with descriptions and 100% coverage. The description adds no significant meaning beyond the schema, though it does reinforce the auto-detection behavior tied to auto_detect_type. This matches the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves a single identifier to all available ID formats, using a specific verb and resource. However, it does not explicitly distinguish itself from the similar sibling tool 'convert_article_ids', so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a single identifier and need all available ID formats, but it provides no context on when to use this tool instead of alternatives like batch_fetch_articles or convert_article_ids, and no exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
v1.0.0- First observed
advanced_search - First observed
batch_fetch_articles - First observed
batch_process_articles - First observed
build_search_pipeline - First observed
convert_article_ids - First observed
fetch_article_summary - First observed
fetch_bioc_article - First observed
fetch_full_article - First observed
find_citations_by_authors - First observed
find_related_articles - First observed
global_search - First observed
link_to_databases - First observed
mesh_term_search - First observed
pmc_search - First observed
pubmed_search - First observed
resolve_article_identifier
TDQS
Scored across 16 tools
Multiple tools have overlapping purposes: resolve_article_identifier and convert_article_ids both handle ID conversion; fetch_article_summary and fetch_full_article return similar data for PubMed; batch_fetch_articles and batch_process_articles are vaguely differentiated. Descriptions help but boundaries remain unclear, increasing the risk of misselection.
Naming patterns are inconsistent. Some tools use verb-first names (fetch_, find_, convert_), while search tools use noun-based names (pubmed_search, advanced_search). The mix of conventions makes the tool set feel unpredictable.
16 tools is on the heavier side for a PubMed-focused server. Several tools appear redundant (e.g., two ID converters, multiple search variants), making the count feel inflated. However, it is not extreme and still within a workable range.
The tool set covers the core PubMed/NCBI workflows: searching across databases, fetching summaries and full text, ID conversion, related articles, database links, and batch processing. Minor gaps exist (e.g., no direct author search, but find_citations_by_authors addresses this), but overall the domain is well-covered.
Maintenance
Related MCP Connectors
Auditable MCP server for PubMed, Europe PMC, ClinicalTrials.gov, and bioRxiv/medRxiv queries
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
PubMed MCP โ wraps the NCBI E-utilities API (biomedical literature, free, no auth)
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA specialized MCP server that provides a structured interface to the Europe PMC database for biological and clinical evidence retrieval. It enables LLMs to gather, rank, and synthesize published research focusing on therapeutic targets and disease associations.1MIT
- AlicenseAqualityDmaintenanceAn MCP server that provides direct access to PubMed and PubMed Central via the NCBI E-utilities API. It enables AI models to search biomedical literature, retrieve detailed article metadata, and download open-access full texts.5MIT
- AlicenseCqualityCmaintenanceA PubMed MCP server that enables LLMs to search, retrieve details, and download full-text articles from PubMed, with support for batch queries, cross-referencing, and EndNote export.1361 npm6Apache 2.0
- AlicenseAqualityAmaintenanceA high-performance MCP server that gives LLMs access to 25 biomedical tools federated across 50+ upstream APIs for genes, variants, drugs, diseases, literature, clinical trials, and structural biology.41775 npm12Apache 2.0