Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HTTP_PROXYNoOptional HTTP proxy for API requests.
NCBI_EMAILYesRequired by NCBI API policy. Your email address.
S2_API_KEYNoOptional API key for Semantic Scholar. Alias: SEMANTIC_SCHOLAR_API_KEY
HTTPS_PROXYNoOptional HTTPS proxy for API requests.
CORE_API_KEYNoOptional API key for CORE. Get from https://core.ac.uk/services/api
EZPROXY_HOSTNoOptional EZproxy host, e.g., ezproxy.example.edu.
NCBI_API_KEYNoOptional API key for higher rate limits (10 req/s vs 3 req/s). Get from https://www.ncbi.nlm.nih.gov/account/settings/
CROSSREF_EMAILNoOptional email for CrossRef polite pool.
EZPROXY_ENABLEDNoOptional: set to 'true' after configuring EZPROXY_HOST and EZPROXY_COOKIE_FILE.
PUBMED_DATA_DIRNoOptional data directory for notes. Default: ~/.pubmed-search-mcp
UNPAYWALL_EMAILNoOptional email for Unpaywall OA resolver.
OPENALEX_API_KEYNoOptional API key for OpenAlex authenticated requests.
PUBMED_NOTES_DIRNoOptional target folder for save_literature_notes.
EZPROXY_COOKIE_FILENoOptional path to EZproxy cookies JSON file.
BROWSER_FETCH_CONFIGNoOptional JSON string enabling browser-session PDF fallback. Example: '{"enabled":true,"auto_enabled":true,"broker_url":"http://127.0.0.1:8766/fetch","token":"local-dev-token","allowed_hosts":["jamanetwork.com","*.jamanetwork.com"]}'
PUBMED_WORKSPACE_DIRNoOptional fallback workspace directory for notes.
SEMANTIC_SCHOLAR_API_KEYNoOptional alias for S2_API_KEY.
INSTITUTIONAL_DIRECT_FETCHNoOptional: set to 'true' to try DOI publisher pages before CORE fallback.
PUBMED_SEARCH_DISABLED_SOURCESNoOptional comma-separated list of sources to disable, e.g., 'semantic_scholar'.
PUBMED_ARTIFACT_INCLUDE_LOCAL_PATHSNoOptional: set to 'true' to include local_path and manifest_path in artifact responses.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tasks
{
  "list": {},
  "cancel": {},
  "requests": {
    "tools": {
      "call": {}
    }
  }
}
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
unified_searchA

๐Ÿ” Unified Search - Single entry point for multi-source academic search.

Automatically analyzes your query and searches the best sources. No need to choose between PubMed, OpenAlex, CrossRef, etc.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• WHAT IT DOES: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  1. Analyzes your query (complexity, intent, PICO elements)

  2. Automatically selects best sources based on query type

  3. Searches multiple sources in parallel

  4. Deduplicates and merges results

  5. Ranks by configurable criteria

  6. Enriches with OA links (Unpaywall)

  7. Auto-detects ICD-9/10 codes and expands to MeSH terms

  8. Optionally searches preprints (arXiv, medRxiv, bioRxiv)

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• EXAMPLES (most calls only need 1-2 params): โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Simple (1 param): unified_search("remimazolam ICU sedation")

With limit (2 params): unified_search("machine learning in anesthesia", limit=20)

Specify sources: unified_search("CRISPR gene therapy", sources="pubmed,openalex")

Auto minus one source: unified_search("sepsis biomarkers", sources="auto,-semantic_scholar")

Search all enabled sources except enrichment-only CrossRef: unified_search("icu sedation", sources="all,-crossref")

Clinical filters: unified_search("diabetes treatment", filters="year:2020-2025, age:aged, clinical:therapy")

Include preprints + shallow search: unified_search("COVID-19 vaccine", options="preprints, shallow")

Full control: unified_search("propofol vs remimazolam", sources="pubmed,semantic_scholar,europe_pmc", ranking="impact", filters="year:2020-, sex:female, species:humans", options="preprints, no_relax")

ICD Code Auto-Detection: unified_search("E11 complications") โ†’ Auto-expands E11 to "Diabetes Mellitus, Type 2"[MeSH]

Args: query: Your search query (natural language, ICD codes, or structured) limit: Maximum results per source (default 10, max 100) sources: Comma-separated list of sources to search. Available: "pubmed", "openalex", "semantic_scholar", "europe_pmc", "crossref", "core". Commercial connectors may also appear when enabled via env, e.g. "scopus" when SCOPUS_ENABLED=true and SCOPUS_API_KEY are configured, or "web_of_science" when WEB_OF_SCIENCE_ENABLED=true and WEB_OF_SCIENCE_API_KEY are configured. Default: auto-select based on query complexity. Supports "auto" and "all" with exclusions. Examples: "pubmed,openalex", "auto,-semantic_scholar", or "all,-crossref" Global disable env: PUBMED_SEARCH_DISABLED_SOURCES Example: PUBMED_SEARCH_DISABLED_SOURCES=semantic_scholar,core ranking: Ranking strategy: - "balanced": Default, considers all factors - "impact": Prioritize high-citation papers - "recency": Prioritize recent publications - "quality": Prioritize high-evidence studies (RCTs, meta-analyses) output_format: "markdown" (human-readable), "json", or "toon" (programmatic) filters: Comma-separated key:value pairs for filtering results. Supported keys: year:2020-2025 โ†’ publication year range year:2020- โ†’ from 2020 onwards year:-2025 โ†’ up to 2025 year:2024 โ†’ from 2024 onwards age: โ†’ age group filter (PubMed). Values: newborn, infant, preschool, child, adolescent, young_adult, adult, middle_aged, aged, aged_80 sex: โ†’ sex filter: male, female species: โ†’ species filter: humans, animals lang: โ†’ language filter: english, chinese, etc. clinical: โ†’ clinical query filter (PubMed EBM). Values: therapy, therapy_narrow, diagnosis, diagnosis_narrow, prognosis, prognosis_narrow, etiology, etiology_narrow, clinical_prediction, clinical_prediction_narrow Example: "year:2020-2025, age:aged, sex:female, clinical:therapy" options: Comma-separated flags to toggle behaviors. Supported flags: preprints โ†’ also search arXiv, medRxiv, bioRxiv all_types โ†’ include non-peer-reviewed articles no_oa โ†’ skip Unpaywall OA link enrichment no_analysis โ†’ hide query analysis section in output no_scores โ†’ hide similarity/relevance scores compact โ†’ compact structured JSON/TOON output no_next โ†’ hide next-tool suggestions in structured output no_provenance โ†’ hide section provenance in structured output no_relax โ†’ disable auto-relaxation on 0 results shallow โ†’ disable deep search (faster, keyword-only) Example: "preprints, shallow" or "no_analysis, no_scores" pipeline: YAML/JSON string defining a multi-step search pipeline. When provided, other parameters (except output_format) are ignored and the pipeline DAG is executed instead.

         Accepts **YAML** (recommended, human-friendly) or **JSON** format.

         **Template mode โ€” YAML** (shortcut for common workflows):
           template: pico
           params:
             P: ICU patients
             I: remimazolam
             C: propofol
             O: sedation

         Other templates:
           template: comprehensive
           params:
             query: CRISPR gene therapy

           template: exploration
           params:
             pmid: "12345678"

           template: gene_drug
           params:
             term: BRCA1

         **Custom pipeline โ€” YAML** (full DAG control, max 20 steps):
           name: My Custom Search
           steps:
             - id: s1
               action: search
               params:
                 query: remimazolam ICU
                 sources: pubmed,europe_pmc
                 limit: 50
             - id: s2
               action: search
               params:
                 query: propofol ICU
                 sources: pubmed
                 limit: 50
             - id: merged
               action: merge
               inputs: [s1, s2]
               params:
                 method: rrf
             - id: enriched
               action: metrics
               inputs: [merged]
           output:
             format: markdown
             limit: 20
             ranking: impact

         Shared params:
           globals: default params inherited by every step
           variables: values available as ${name} placeholders

         Debugging controls:
           dry_run: validate/preview the pipeline without searches
           stop_at: execute through one step id, e.g. "merged"

         **JSON also supported** (for programmatic use):
           {"template": "pico", "params": {"P": "ICU patients", "I": "remimazolam"}}

         Available actions:
           search      โ€” literature search (params: query, sources, limit, min_year, max_year)
           pico        โ€” PICO elements (params: P, I, C, O)
           expand      โ€” MeSH/synonym expansion (params: topic)
           details     โ€” fetch article details (params: pmids)
           related     โ€” find related articles (params: pmid, limit)
           citing      โ€” find citing articles (params: pmid, limit)
           references  โ€” get article references (params: pmid, limit)
           metrics     โ€” enrich with iCite citation metrics (inputs only)
           merge       โ€” combine results (params: method=union|intersection|rrf)
           filter      โ€” post-filter (params: min_year, max_year, article_types, min_citations, has_abstract)

Returns: Formatted search results with: - Query analysis (complexity, intent, PICO) - ICD code expansions (if detected) - Search statistics (sources, dedup count) - Ranked articles with metadata - Open access links where available - Preprints (if options includes "preprints") - Relaxation info (if auto_relax triggered) - Pipeline step summary (if pipeline mode)

analyze_search_queryA

Analyze a search query without executing the search.

Useful for understanding how unified_search will process your query before actually running it.

Args: query: The search query to analyze

Returns: Analysis including: - Complexity level (SIMPLE/MODERATE/COMPLEX/AMBIGUOUS) - Intent (LOOKUP/EXPLORATION/COMPARISON/SYSTEMATIC) - PICO elements (if detected) - Recommended sources - Recommended strategies

parse_picoA

Validate agent-provided PICO elements and return a runnable search plan.

The agent, not this MCP server, extracts P/I/C/O from the user's natural language question. When only description is provided, this tool returns the schema the agent should fill and asks the agent to call this tool again with structured elements.

Args: description: Original clinical question for provenance. p: Population / patient group extracted by the agent. i: Intervention / exposure / index test extracted by the agent. c: Comparator extracted by the agent, optional. o: Outcome extracted by the agent, recommended. p_query/i_query/c_query/o_query: Optional expanded PubMed-ready query fragments. When present, the PICO pipeline uses these for search while preserving the human-readable P/I/C/O labels. question_type: therapy, diagnosis, prognosis, or etiology. Inferred heuristically when omitted. profile: Search profile for the PICO template, default balanced. sources: Comma-separated sources for the pipeline. limit: Final result limit for the pipeline.

Returns: JSON containing validation, PICO schema, query plan, and pipeline YAML that can be passed to unified_search(pipeline=...).

generate_search_queriesA

Gather search intelligence for a topic - returns RAW MATERIALS for Agent to decide.

This tool provides the BUILDING BLOCKS for search, not finished queries. The Agent decides how to use them.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• TWO USAGE MODES: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

MODE 1: KEYWORD SEARCH (single topic) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ User: "ๆœๅฐ‹ remimazolam ็š„ๆ–‡็ป"

Step 1: generate_search_queries("remimazolam") Step 2: Build a Boolean query from returned materials Step 3: analyze_search_query(query="") Step 4: unified_search(query="")

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

MODE 2: PICO SEARCH (clinical question) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ User: "remimazolam ๅœจ ICU ้Žฎ้œๆฏ” propofol ๅฅฝๅ—Ž๏ผŸๆœƒๆธ›ๅฐ‘ delirium ๅ—Ž๏ผŸ"

Step 1: Agent extracts P/I/C/O from the clinical question, then calls parse_pico(description=..., p=..., i=..., c=..., o=...) to validate the structured handoff and get a runnable PICO pipeline.

Step 2: For EACH PICO element, call generate_search_queries() IN PARALLEL: - generate_search_queries("ICU patients") โ†’ P materials - generate_search_queries("remimazolam") โ†’ I materials - generate_search_queries("propofol") โ†’ C materials - generate_search_queries("delirium") โ†’ O materials

Step 3: Combine materials using Boolean logic: High precision: (P_terms) AND (I_terms) AND (C_terms) AND (O_terms) High recall: (P_terms) AND (I_terms OR C_terms) AND (O_terms)

Step 4: Add Clinical Query filter if appropriate: - therapy[filter] โ†’ ๆฒป็™‚ๆ•ˆๆžœๆฏ”่ผƒ - diagnosis[filter] โ†’ ่จบๆ–ท็›ธ้—œ - prognosis[filter] โ†’ ้ ๅพŒ็›ธ้—œ - etiology[filter] โ†’ ็—…ๅ› ็›ธ้—œ

Step 5: Validate the final query with analyze_search_query()
Step 6: Execute unified_search() with the final Boolean query

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Features:

  • Spelling correction via NCBI ESpell

  • MeSH term lookup for standardized vocabulary

  • Synonym expansion from MeSH database

  • Query analysis: Shows how PubMed actually interprets each query (Agent's understanding vs PubMed's actual interpretation)

Args: topic: Search topic - can be a single keyword or PICO element strategy: Affects suggested_queries (if included) - "comprehensive": Multiple angles, includes reviews (default) - "focused": Adds RCT filter for high evidence - "exploratory": Broader search with more synonyms check_spelling: Whether to check/correct spelling (default: True) include_suggestions: Include pre-built query suggestions (default: True)

Returns: JSON with RAW MATERIALS: - corrected_topic: Spell-checked topic - keywords: Extracted significant keywords - mesh_terms: MeSH data with preferred terms and synonyms - all_synonyms: Flattened list of all synonyms - suggested_queries: Optional pre-built queries with: - estimated_count: How many results PubMed would return - pubmed_translation: How PubMed actually interprets the query

find_related_articlesA

Find articles related to a given PubMed article. Uses PubMed's "Related Articles" feature to find similar papers.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ”— CITATION NETWORK EXPLORATION WORKFLOW โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

This is ONE of THREE tools for exploring citation networks:

1๏ธโƒฃ find_related_articles() โ† YOU ARE HERE โ”‚ ๐Ÿ“Œ Algorithm-based similarity (like PubMed "Similar Articles") โ”‚ ๐Ÿ“Œ Finds papers with similar topics, MeSH terms, authors โ”‚ ๐Ÿ“Œ Good for: Discovering related research you might have missed โ””โ”€โ–บ Returns: Similar papers (not based on citations)

2๏ธโƒฃ find_citing_articles() โ”‚ ๐Ÿ“Œ Forward citation search (who cited THIS paper?) โ”‚ ๐Ÿ“Œ Finds papers published AFTER the source article โ”‚ ๐Ÿ“Œ Good for: Tracking impact, finding follow-up studies โ””โ”€โ–บ Returns: Papers that cite this article

3๏ธโƒฃ get_article_references() โ”‚ ๐Ÿ“Œ Backward citation search (what did THIS paper cite?) โ”‚ ๐Ÿ“Œ Finds papers published BEFORE the source article โ”‚ ๐Ÿ“Œ Good for: Finding foundational papers, methodology sources โ””โ”€โ–บ Returns: This article's bibliography

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• EXAMPLE WORKFLOW: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Step 1: Start with a key paper find_related_articles(pmid="23132851") โ†’ Find similar research directions

Step 2: Explore backward (foundations) get_article_references(pmid="23132851") โ†’ Find the foundational papers it builds on

Step 3: Explore forward (impact) find_citing_articles(pmid="23132851") โ†’ Find how the field developed after this paper

Args: pmid: PubMed ID of the source article (accepts: "12345678", "PMID:12345678", 12345678). limit: Maximum number of related articles to return (1-50, default: 5).

Returns: List of related articles with details.

find_citing_articlesA

Find articles that cite a given PubMed article. Uses PubMed Central's citation data to find papers that reference this article.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ“ˆ FORWARD CITATION SEARCH (Impact Tracking) โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Direction: Source Paper โ†’ Papers that cite it (FORWARD in time)

USE CASES: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  • ๐Ÿ”ฌ Track research impact: Who built on this work?

  • ๐Ÿ“Š Find follow-up studies: What happened after this discovery?

  • ๐Ÿ”„ Identify controversies: Papers that challenge or refute findings

  • ๐Ÿ“š Literature review: Ensure you have the latest developments

COMPLEMENTARY TOOLS: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  • get_article_references(): BACKWARD search (what this paper cited)

  • find_related_articles(): Similar papers (topic-based, not citation-based)

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• EXAMPLE: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Find papers that cite a landmark CRISPR paper

find_citing_articles(pmid="23287718", limit=20) โ†’ Returns papers published AFTER 2012 that reference this work

Then analyze citation metrics

get_citation_metrics(pmids="last") โ†’ See which citing papers are most influential

Args: pmid: PubMed ID of the source article (accepts: "12345678", "PMID:12345678", 12345678). limit: Maximum number of citing articles to return (1-100, default: 10).

Returns: List of citing articles with details.

get_article_referencesA

Get the references (bibliography) of a PubMed article.

Returns the list of articles that this paper cites in its bibliography. This is the OPPOSITE of find_citing_articles:

  • get_article_references: Papers THIS article cites (backward in time)

  • find_citing_articles: Papers that cite THIS article (forward in time)

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ“š BACKWARD CITATION SEARCH (Foundation Discovery) โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Direction: Source Paper โ†’ Papers it cited (BACKWARD in time)

USE CASES: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  • ๐Ÿ›๏ธ Find foundational papers: Core works the field builds on

  • โš—๏ธ Methodology sources: Papers describing techniques used

  • ๐Ÿ“– Background reading: Build understanding of a topic

  • ๐Ÿ” Verify claims: Check sources for specific assertions

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• EXAMPLE WORKFLOW: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Start with a recent review article

get_article_references(pmid="38123456", limit=50) โ†’ Get the bibliography of this review

Find most-cited foundational papers

get_citation_metrics(pmids="last", sort_by="citation_count") โ†’ Identify which references are the most influential

Read a foundational paper

fetch_article_details(pmids="12345678") โ†’ Get full details of an important reference

Args: pmid: PubMed ID of the source article (accepts: "12345678", "PMID:12345678", 12345678). limit: Maximum number of references to return (1-100, default: 20).

Returns: List of referenced articles with details.

fetch_article_detailsA

Fetch detailed information for one or more PubMed articles.

Args: pmids: PubMed IDs - accepts multiple formats: - "12345678" (single) - "12345678,87654321" (comma-separated) - "PMID:12345678" (with prefix) - ["12345678", "87654321"] (list) - 12345678 (integer)

Returns: Detailed information for each article.

get_citation_metricsA

Get citation metrics from NIH iCite for articles.

Returns field-normalized citation data including:

  • citation_count: Total number of citations

  • relative_citation_ratio (RCR): Field-normalized metric (1.0 = average)

  • nih_percentile: Percentile ranking (0-100)

  • citations_per_year: Citation velocity

  • apt: Approximate Potential to Translate (clinical relevance 0-1)

Can sort and filter results by citation metrics.

Args: pmids: PubMed IDs - accepts multiple formats: - "12345678,87654321" (comma-separated) - ["12345678", "87654321"] (list) - "PMID:12345678" (with prefix) - "last" to use PMIDs from the last search sort_by: Metric to sort by: - "citation_count": Raw citation count (default) - "relative_citation_ratio": Field-normalized (recommended) - "nih_percentile": Percentile ranking - "citations_per_year": Citation velocity min_citations: Filter out articles with fewer citations min_rcr: Filter out articles with RCR below threshold (e.g., 1.0 = average) min_percentile: Filter out articles below percentile (e.g., 50 = top half)

Returns: Articles with citation metrics, sorted and filtered as requested.

verify_reference_listA

Verify a plain-text reference list against PubMed evidence.

First version scope: - Reference-list verification only - Client supplies the extracted reference list text - Backend parses entries and resolves them via PMID / DOI / ECitMatch

Second version scope: - Adds unresolved review workflow for partial_match and unresolved rows - Returns a manual-review queue with retry queries and review checklist - Supports human-in-the-loop acceptance/rejection in client-side workflows

Args: reference_text: Plain-text references, ideally one per line or a numbered reference list extracted from a file. source_name: Optional file label for reporting. max_references: Maximum number of references to process.

Returns: JSON verification report with parsed fields, matched PubMed evidence, and per-reference verification status.

prepare_exportA

Export citations to reference manager formats.

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— โ•‘ RECOMMENDED: Use source="official" (default) for best quality โ•‘ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

When to Use

  • Exporting references to EndNote, Zotero, Mendeley

  • Creating BibTeX for LaTeX documents

  • Generating citation lists for manuscripts

Source Options

Source

Formats

Quality

Speed

official

ris, medline, csl

โ˜…โ˜…โ˜…โ˜…โ˜…

Fast

local

ris, bibtex, csv, medline, json

โ˜…โ˜…โ˜…โ˜…

Fast

Format Selection Guide

  • ris: EndNote, Zotero, Mendeley (official recommended)

  • medline: NBIB format for PubMed tools

  • csl: JSON for programmatic citation styling

  • bibtex: LaTeX documents (local only)

  • csv: Data analysis, Excel (local only)

Args: pmids: Articles to export. Accepts: - "last" โ†’ results from previous search - "12345678,87654321" โ†’ comma-separated PMIDs - ["12345678", "87654321"] โ†’ list of PMIDs - "PMID:12345678" โ†’ with prefix format: Export format (default: "ris") - official API: ris, medline, csl - local only: bibtex, csv, json include_abstract: Include abstracts in output (default: True) source: Citation source (default: "official") - "official": NCBI Citation API (recommended, best quality) - "local": Local formatting (more formats, offline capable)

Returns: JSON with status and export_text containing formatted citations.

Examples: # Export last search results (recommended) prepare_export(pmids="last", format="ris")

# Export specific PMIDs to BibTeX
prepare_export(pmids="12345678,87654321", format="bibtex", source="local")

# Get CSL-JSON for programmatic use
prepare_export(pmids="last", format="csl", source="official")
save_literature_notesA

Save searched articles as guided local wiki/Foam/Markdown notes.

When to Use

  • After unified_search, persist the selected literature into a local note library.

  • Give agents a structured alternative to generic write_file calls.

  • Create wiki notes with Foam-compatible wikilinks, MedPaper-like reference notes, and frontmatter.

  • Use stable wiki/Foam link targets and return wiki_validation for unresolved-link checks.

Local Directory Resolution

  1. output_dir argument, if provided

  2. PUBMED_NOTES_DIR environment variable

  3. PUBMED_WORKSPACE_DIR/references

  4. PUBMED_DATA_DIR/references

Args: pmids: Articles to save. Accepts "last", comma-separated PMIDs, list, or int. output_dir: Optional target folder for notes. note_format: "wiki" (default, Foam-compatible), "foam", "markdown", or "medpaper". include_abstract: Include abstracts in article notes. overwrite: Overwrite existing per-article notes when filenames collide. create_index: Create a collection index note linking saved articles. collection_name: Optional title/file stem for the index note. template_file: Optional Markdown template with placeholders like {title}, {pmid}, {citation_key}. include_csl_json: Write references.csl.json beside notes for citation-manager handoff.

Returns: JSON with output_dir, written files, skipped files, index path, and wiki_validation.

Examples: save_literature_notes(pmids="last") save_literature_notes(pmids="last", note_format="medpaper", output_dir="./references") save_literature_notes(pmids="12345678,87654321", template_file="./ref-template.md")

get_fulltextA

๐Ÿ”ฅ Enhanced multi-source fulltext retrieval.

Automatically tries multiple sources to find the best fulltext:

  1. Europe PMC (if PMC ID available)

  2. Unpaywall (finds OA versions via DOI)

  3. Institutional direct/EZproxy fetch (when DOI-backed and enabled)

  4. CORE (200M+ open access papers)

With extended_sources=True, also searches: 5. CrossRef (publisher links) 6. DOAJ (Gold OA journals) 7. Zenodo (research repository) 8. PubMed LinkOut (external providers) 9. Semantic Scholar, OpenAlex, arXiv, bioRxiv, medRxiv

Accepts flexible input - provide ANY ONE of:

  • identifier: Auto-detects PMID, PMC ID, or DOI

  • pmcid: Direct PMC ID

  • pmid: PubMed ID (will lookup PMC ID)

  • doi: DOI (will search Unpaywall/CORE)

Args: identifier: Auto-detect format - PMID, PMC ID, or DOI Examples: "PMC7096777", "12345678", "10.1001/jama.2024.1234" pmcid: PubMed Central ID (e.g., "PMC7096777", "7096777") pmid: PubMed ID (e.g., "12345678") doi: DOI (e.g., "10.1001/jama.2024.1234") sections: Filter sections (e.g., "introduction,methods,results") include_pdf_links: Include PDF download links (default: True) include_figures: Include figure metadata with image URLs (default: False) extended_sources: Search the extended downloader chain after the standard policy (default: False) output_format: Response format - "markdown" (default), "json", or "toon" allow_browser_session: Control browser-session fallback. - True: force broker fallback when configured - False: disable broker fallback - None: use auto mode from broker configuration

Returns: Fulltext content with PDF links from all available sources.

Example: get_fulltext(identifier="PMC7096777") get_fulltext(doi="10.1038/s41586-021-03819-2") get_fulltext(pmid="12345678", extended_sources=True)

get_text_mined_termsA

Get text-mined annotations from Europe PMC.

Returns entities extracted from the article text including genes, diseases, chemicals, organisms, and more. Useful for identifying key concepts.

Args: pmid: PubMed ID of the article (accepts: "12345678", 12345678). pmcid: PMC ID (alternative to PMID, accepts: "PMC7096777", "7096777"). semantic_type: Filter by entity type. Options: - "GENE_PROTEIN": Genes and proteins - "DISEASE": Diseases and conditions - "CHEMICAL": Drugs and chemicals - "ORGANISM": Species and organisms - "GO_TERM": Gene Ontology terms - None: Return all types (default)

Returns: List of text-mined entities with counts and sections.

get_article_figuresA

Get structured figure metadata (label, caption, image URL) and PDF links from a PMC Open Access article.

Returns all figures with their captions and direct image URLs, plus PDF download links for the complete article.

Accepts flexible input - provide ANY ONE of:

  • identifier: Auto-detects PMID or PMC ID

  • pmcid: Direct PMC ID

  • pmid: PubMed ID (requires PMC ID lookup)

Args: identifier: Auto-detect format - PMID or PMC ID. Examples: "PMC12086443", "40384072" pmcid: PubMed Central ID (e.g., "PMC12086443" or "12086443"). pmid: PubMed ID (e.g., "40384072"). The article must be in PMC. include_subfigures: Parse sub-figures (e.g., Figure 3A, 3B) as separate entries. include_tables: Also extract tables rendered as images.

Returns: Structured figure data with image URLs, captions, and PDF links.

Example: get_article_figures(identifier="PMC12086443") get_article_figures(pmid="40384072")

search_geneA

Search NCBI Gene database for gene information.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• USE CASES: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  • Look up gene function and description

  • Find gene aliases and official symbols

  • Get chromosome location

  • Find genes by name or function

Args: query: Gene name, symbol, or function keyword organism: Filter by organism (e.g., "human", "Homo sapiens", "mouse") limit: Maximum results (1-50)

Returns: JSON with gene records including symbols, names, locations

get_gene_detailsA

Get detailed information about a gene by NCBI Gene ID.

Args: gene_id: NCBI Gene ID (from search results or known)

Returns: JSON with gene details including symbol, name, summary, location

get_gene_literatureA

Get PubMed articles linked to a gene.

This uses NCBI's curated gene-to-publication links, which are more precise than keyword searches.

Args: gene_id: NCBI Gene ID limit: Maximum PubMed IDs to return (1-100)

Returns: JSON with linked PubMed IDs

search_compoundA

Search PubChem for chemical compounds.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• USE CASES: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  • Look up drug/compound information

  • Find molecular formula and structure

  • Get compound synonyms and identifiers

  • Research chemical properties

Args: query: Compound name or description limit: Maximum results (1-50)

Returns: JSON with compound records including names, formulas, properties

get_compound_detailsA

Get detailed information about a compound by PubChem CID.

Args: cid: PubChem Compound ID

Returns: JSON with compound details including formula, SMILES, properties

get_compound_literatureA

Get PubMed articles linked to a compound.

Uses NCBI's curated compound-to-publication links.

Args: cid: PubChem Compound ID limit: Maximum PubMed IDs to return (1-100)

Returns: JSON with linked PubMed IDs

search_clinvarA

Search ClinVar for clinical variants.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• USE CASES: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  • Look up clinical significance of genetic variants

  • Find variants associated with diseases

  • Research gene-disease associations

  • Get variant pathogenicity classifications

Args: query: Gene name, variant, or disease condition limit: Maximum results (1-50)

Returns: JSON with variant records including significance and conditions

build_citation_treeA

Build a citation tree (network) from a single article.

๐ŸŒณ Creates a visual citation network showing research lineage:

  • Forward (citing): Who cites this paper? (newer research)

  • Backward (references): What does this paper cite? (foundational work)

โš ๏ธ IMPORTANT: Only accepts ONE PMID at a time to control API load. For multiple papers, call this tool separately for each.

๐Ÿ“Š Output Formats (output_format parameter):

  • "cytoscape": Cytoscape.js format (default, academic standard)

  • "g6": AntV G6 format (modern, high-performance)

  • "d3": D3.js force graph format (flexible, Observable)

  • "vis": vis-network format (simple, quick prototypes)

  • "graphml": GraphML XML (desktop tools: Gephi, yEd, VOSviewer)

  • "mermaid": Mermaid diagram (VS Code preview, Markdown) โญNEW

Args: pmid: Single PubMed ID (e.g., "12345678"). Only ONE PMID accepted - do NOT pass multiple. depth: How many levels to traverse (1-3, default 2). - depth=1: Direct citations/references only - depth=2: Also get citations of citations (recommended) - depth=3: Maximum depth (can be slow, ~100+ API calls) direction: Which direction to build the tree: - "forward": Only citing articles (who cites this) - "backward": Only references (what this cites) - "both": Both directions (default, recommended) limit_per_level: Max articles to fetch per node per level (default 5) include_details: Include full article details (default True) output_format: Graph format for visualization (default "cytoscape") - "cytoscape": Cytoscape.js (academic standard, bioinformatics) - "g6": AntV G6 (modern, TypeScript, great for large graphs) - "d3": D3.js force layout (most flexible, Observable notebooks) - "vis": vis-network (simple and easy) - "graphml": GraphML XML (Gephi, VOSviewer, yEd, Pajek) - "mermaid": Mermaid diagram (preview in VS Code Markdown)

Returns: JSON string with graph data in the requested format. Includes metadata and statistics regardless of format.

Example usage: # Build 2-level tree for a paper (default Cytoscape.js format) build_citation_tree(pmid="33475315", depth=2, direction="both")

# Use AntV G6 format for modern web visualization
build_citation_tree(pmid="33475315", depth=2, output_format="g6")

# Export GraphML for Gephi analysis
build_citation_tree(pmid="33475315", depth=2, output_format="graphml")
build_research_timelineA

Build a research timeline for a topic OR specific PMIDs.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐ŸŽฏ TWO MODES OF OPERATION โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Mode 1: Search by topic (default) build_research_timeline(topic="remimazolam")

Mode 2: Build from specific PMIDs build_research_timeline(pmids="12345678,23456789", topic="My Timeline")

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• MILESTONE DETECTION โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Automatically detects significant milestones including:

  • First reports and mechanism discoveries

  • Clinical trial phases (Phase 1/2/3/4)

  • FDA/EMA approvals

  • Meta-analyses and systematic reviews

  • Guidelines and consensus statements

  • Safety alerts and label updates

  • High-impact landmark studies

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• OUTPUT FORMATS (output_format parameter) โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  • "text": Human-readable text format (default)

  • "tree": Research lineage tree โ€” branches by sub-topic (NEW)

  • "mermaid": Mermaid timeline (VS Code, GitHub preview)

  • "mindmap": Mermaid mindmap of research branches (NEW)

  • "json": Full JSON data

  • "timeline_js": TimelineJS library format

  • "d3": D3.js visualization format

Args: topic: Research topic (drug name, gene, disease, etc.) Required if pmids not provided. Examples: "remimazolam", "BRCA1", "pembrolizumab melanoma" pmids: Comma-separated PMIDs or "last" for previous search results If provided, builds timeline from these specific articles. Example: "12345678,23456789,34567890" max_events: Maximum number of events to include (default: 30) min_year: Filter articles from this year (optional, topic mode only) max_year: Filter articles until this year (optional, topic mode only) include_all: Include non-milestone articles as generic events output_format: "text", "tree", "mermaid", "mindmap", "json", "json_tree", "timeline_js", or "d3"

Returns: Research timeline with detected milestones in requested format.

Examples: # By topic build_research_timeline(topic="remimazolam", max_events=20) build_research_timeline(topic="CAR-T therapy", min_year=2015, output_format="mermaid")

# By PMIDs
build_research_timeline(pmids="12345678,23456789", topic="Propofol Studies")
build_research_timeline(pmids="last", topic="Previous Search", output_format="json")
analyze_timeline_milestonesA

Analyze milestone distribution for a research topic.

Provides statistics on:

  • Milestone type distribution

  • Temporal patterns (which years had most activity)

  • Evidence quality breakdown

  • Key high-impact studies

Args: topic: Research topic to analyze max_results: Maximum articles to analyze

Returns: Detailed analysis of milestone patterns.

Example: analyze_timeline_milestones("remdesivir COVID-19")

compare_timelinesA

Compare research timelines of multiple topics.

Useful for:

  • Comparing drug development timelines

  • Contrasting research evolution across conditions

  • Understanding parallel research tracks

Args: topics: Comma-separated topics to compare Example: "remimazolam,propofol,dexmedetomidine" max_events_per_topic: Maximum events per topic

Returns: Comparative analysis of the timelines.

Example: compare_timelines("remimazolam,propofol", max_events_per_topic=10)

analyze_figure_for_searchA

Analyze a scientific figure or image for literature search.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ”ฌ VISION-TO-LITERATURE SEARCH (Experimental) โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

This tool enables searching for scientific literature based on images.

WORKFLOW (Agent MUST follow all steps automatically): โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  1. Provide an image (URL or base64-encoded)

  2. This tool returns the image using MCP ImageContent protocol

  3. YOU (the Agent) analyze the image using your vision capabilities

  4. Extract relevant ENGLISH search terms from the image

  5. IMMEDIATELY call search_biomedical_images() or unified_search() with the extracted terms - DO NOT wait for user confirmation

  6. Return both the analysis and search results to the user

โš ๏ธ IMPORTANT RULES: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  • ALL search queries must be in ENGLISH (Open-i requirement)

  • After analyzing the image, proceed to search automatically

  • Do NOT just describe the image and stop - complete the full workflow

  • If the image shows a medical condition, extract the medical term in English

SEARCH TYPES: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  • "comprehensive": General analysis, extract all relevant terms (default)

  • "methodology": Focus on methods, equipment, techniques shown

  • "results": Focus on data, graphs, statistical findings

  • "structure": Focus on molecular/chemical structures

  • "medical": Focus on clinical/medical imaging findings

USE CASES: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  • ๐Ÿ“Š Scientific figures โ†’ Find papers with similar data/charts

  • ๐Ÿ”ฌ Microscopy images โ†’ Find related research

  • ๐Ÿงฌ Molecular structures โ†’ Find papers about the compound

  • ๐Ÿ“ˆ Graphs/plots โ†’ Find papers with similar analyses

  • ๐Ÿฅ Medical images โ†’ Find case reports or clinical studies

  • โš—๏ธ Lab equipment โ†’ Find methodology papers

IMPORTANT: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ After analyzing the image, IMMEDIATELY search for related literature. Do NOT ask the user "do you want me to search?" โ€” just do it. Use English medical terminology in all search queries.

Args: image: Base64-encoded image data OR data URI (data:image/png;base64,...) url: URL of the image to analyze context: Optional context about what to look for in the image search_type: Type of analysis focus (comprehensive/methodology/results/structure/medical)

Returns: List containing: - ImageContent: The image for you to analyze - TextContent: Instructions for next steps

Example: analyze_figure_for_search(url="https://example.com/figure1.png") analyze_figure_for_search(url="https://...", search_type="medical") analyze_figure_for_search(image="data:image/png;base64,iVBORw0...")

configure_institutional_accessA

Configure your institution's link resolver for full-text access.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ›๏ธ INSTITUTIONAL ACCESS CONFIGURATION โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

This tool configures OpenURL link resolver integration, allowing you to access paywalled articles through your institution's library subscription.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• HOW IT WORKS: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  1. Your library subscribes to journals through publishers

  2. Library provides a "Link Resolver" service (SFX, 360 Link, Primo, etc.)

  3. OpenURL passes article metadata to the resolver

  4. Resolver checks your subscriptions and provides full-text access

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• USAGE: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Option 1: Use a preset (easiest) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ configure_institutional_access(preset="ntu")

Available presets:

  • ๅฐ็ฃ: "ntu" (ๅฐๅคง), "ncku" (ๆˆๅคง), "nthu" (ๆธ…ๅคง), "nycu" (้™ฝๆ˜Žไบคๅคง)

  • ็พŽๅœ‹: "harvard", "stanford", "mit", "yale"

  • ่‹ฑๅœ‹: "oxford", "cambridge"

  • ้€š็”จ: "sfx", "360link", "primo" (้œ€่ฆ resolver_url)

Option 2: Custom URL โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ configure_institutional_access( resolver_url="https://your.library.edu/openurl" )

Option 3: Disable โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ configure_institutional_access(enable=False)

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• FINDING YOUR RESOLVER URL: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  1. Go to your library's website

  2. Look for "Find Full Text", "Link Resolver", or "OpenURL"

  3. Or search: "[Your University] link resolver"

  4. The URL usually looks like:

Args: resolver_url: Your institution's link resolver URL preset: Use a known institution's preset configuration enable: Whether to enable OpenURL links (default: True) test: Compatibility flag reserved for clients that still pass it. Use test_institutional_access() for an explicit resolver test.

Returns: Configuration status message

get_institutional_linkA

Generate institutional access link (OpenURL) for an article.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ”— GET LIBRARY ACCESS LINK โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Generate an OpenURL that will take you through your library's link resolver to access the full text of an article.

PREREQUISITES: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Must first call configure_institutional_access() to set up your resolver.

USAGE: โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

With PMID (easiest): get_institutional_link(pmid="38353755")

With DOI: get_institutional_link(doi="10.1001/jama.2024.1234")

With full metadata (most reliable): get_institutional_link( title="Some Article Title", journal="JAMA", year="2024", volume="331", issue="1", pages="45-52" )

Args: pmid: PubMed ID doi: Digital Object Identifier title: Article title journal: Journal name year: Publication year volume: Volume number issue: Issue number pages: Page range (e.g., "45-52")

Returns: OpenURL link or error message

list_resolver_presetsA

List available institutional link resolver presets.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ“š AVAILABLE RESOLVER PRESETS โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

These presets contain pre-configured URLs for common institutions. Use them with configure_institutional_access(preset="name").

Returns: List of available presets with URLs

test_institutional_accessA

Test your institutional link resolver configuration.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿงช TEST INSTITUTIONAL ACCESS โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Tests if your configured link resolver is:

  1. Properly configured

  2. Reachable (network connection)

  3. Returns a valid response

NOTE: This only tests if the resolver endpoint is reachable. Actual full-text access depends on your institution's subscriptions.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• FREE TEST OPTIONS: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

If you don't have institutional access, you can test with:

  1. Use "test_free" preset (EBSCO public resolver): configure_institutional_access(preset="test_free") test_institutional_access()

  2. Most university resolvers will respond even without VPN, they just won't provide full-text (shows "Access options" page)

Args: pmid: PMID to use for testing (default: 38353755)

Returns: Test results including: - Configuration status - Network reachability - Generated OpenURL - Link to test manually

diagnose_institutional_accessA

Diagnose why institutional fulltext access succeeds or fails for an article.

Runs up to three probes and reports each path's outcome:

  1. Direct fetch (Phase 1, IP-aware) โ€” follows https://doi.org/<doi> and classifies whether the publisher served fulltext, a paywall, or a login page. Works automatically when your network IP is on the publisher's institutional allow-list (campus / VPN).

  2. EZproxy fetch (Phase 2, BYO-cookie) โ€” rewrites the publisher hostname to your library's EZproxy host and replays your exported browser session cookie. Configured via env vars:

    • EZPROXY_HOST (e.g. ezproxy.lib.ntu.edu.tw)

    • EZPROXY_COOKIE_FILE (path to browser-exported cookies.json)

    • EZPROXY_ENABLED=1

  3. OpenURL handoff โ€” generated for you to open manually in a browser when the automated paths fail.

Args: pmid: PubMed ID (used to enrich the OpenURL). doi: DOI (required for the direct + EZproxy probes). try_direct: Run the Phase 1 direct probe (default True). try_ezproxy: Run the Phase 2 EZproxy probe (default True).

Returns: Markdown report listing every probe's status, classification, and advice on the next action to take.

convert_icd_meshA

Convert between ICD codes and MeSH terms (bidirectional).

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ”„ BIDIRECTIONAL CONVERSION โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

ICD โ†’ MeSH (provide code): convert_icd_mesh(code="E11") โ†’ Diabetes Mellitus, Type 2 convert_icd_mesh(code="I21") โ†’ Myocardial Infarction convert_icd_mesh(code="250") โ†’ Diabetes Mellitus (ICD-9) convert_icd_mesh(code="U07.1") โ†’ COVID-19

MeSH โ†’ ICD (provide mesh_term): convert_icd_mesh(mesh_term="Diabetes Mellitus") convert_icd_mesh(mesh_term="Heart Failure")

Automatically detects ICD version (ICD-9 vs ICD-10) from code format.

Args: code: ICD-9 or ICD-10 code (e.g., "E11", "250", "I21.9") mesh_term: MeSH term (e.g., "Diabetes Mellitus", "Heart Failure")

Returns: JSON with conversion result and ready-to-use PubMed query

Note: Provide either 'code' OR 'mesh_term', not both.

search_biomedical_imagesA

๐Ÿ–ผ๏ธ Search biomedical images across Open-i and Europe PMC.

Searches medical/scientific images from multiple sources and returns image URLs with metadata (caption, article info, MeSH terms).

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• โš ๏ธ CRITICAL - LANGUAGE REQUIREMENT: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• Open-i ONLY supports English queries. If the user queries in non-English (Chinese, Japanese, Korean, etc.), you MUST:

  1. Translate the query to English medical terminology first

  2. Then call this tool with the English query Example: "ๅ–‰้ ญๆฐด่…ซ" โ†’ "laryngeal edema" "่ƒธ้ƒจXๅ…‰่‚บ็‚Ž" โ†’ "chest X-ray pneumonia"

The tool has built-in translation hints for common CJK medical terms, but YOU should always verify the translation is correct.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• SOURCES: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  • Open-i (NLM): X-ray, microscopy, clinical images (~133K)

  • Europe PMC: Figure captions from 33M+ articles (future)

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• EXAMPLES: โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

General image search: search_biomedical_images("chest pneumonia CT scan")

X-ray only: search_biomedical_images("fracture", image_type="x")

Microscopy images: search_biomedical_images("histology liver", image_type="mc")

Clinical teaching images (MedPix): search_biomedical_images("pneumothorax", collection="mpx")

Case reports with CC-BY license, sorted by date: search_biomedical_images( "lung cancer", article_type="cr", license_type="by", sort_by="d" )

Cardiology specialty images: search_biomedical_images("echocardiogram", specialty="c")

Video content only: search_biomedical_images("surgery technique", video_only=True)

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Args: query: Search query (e.g., "chest X-ray pneumonia") sources: Image sources to search: - "auto": Select best sources (default) - "openi": Open-i only (best for medical images) - "europe_pmc": Europe PMC only (future) - "all": Search all sources image_type: Filter by image type (Open-i only): Positive filters: - "c": CT scan images - "g": Graphics / line art / diagrams - "m": MRI images - "mc": Microscopy / histology images - "p": PET scan images - "ph": Photographs / clinical photos - "u": Ultrasound images - "x": X-ray images Exclusion filters: - "xg": Exclude Graphics (removes graphic images from results) - "xm": Exclude Multipanel (removes multipanel images) - None: All types (default) collection: Filter by collection (Open-i only): - "pmc": PubMed Central articles - "mpx": MedPix clinical teaching images (high quality) - "cxr": Chest X-ray collection - "hmd": History of Medicine - "usc": USC collection - None: All collections (default) open_access_only: Only return open access images (default True) limit: Maximum number of images to return (default 10, max 50) sort_by: Sort results by (Open-i only): - "r": Relevance (default) - "d": Date (newest first) - "o": Oldest first - "t": Title - "e": Education relevance - "g": Graphics priority article_type: Filter by article type (Open-i only): - "cr": Case Report - "or": Original Research - "re": Review - "sr": Systematic Review - "ra": Research Article - "ed": Editorial - "lt": Letter - "bk": Book - and more... (see API docs) specialty: Filter by medical specialty (Open-i only): - "r": Radiology - "c": Cardiology - "ne": Neurology - "pu": Pulmonology - "d": Dermatology - "g": Gastroenterology - "or": Orthopedics - "o": Ophthalmology - "s": Surgery - "p": Pediatrics - "id": Infectious Disease - "i": Immunology - and more... (see API docs) license_type: Filter by Creative Commons license (Open-i only): - "by": CC-BY (Attribution) - "bync": CC-BY-NC (Attribution-NonCommercial) - "byncnd": CC-BY-NC-ND (Attribution-NonCommercial-NoDerivs) - "byncsa": CC-BY-NC-SA (Attribution-NonCommercial-ShareAlike) subset: Filter by subject subset (Open-i only): - "b": Behavioral Sciences - "c": Cancer - "e": Ethics - "s": Surgery - "x": Toxicology search_fields: Search in specific fields (Open-i only): - "t": Title only - "m": MeSH terms only - "ab": Abstract only - "msh": MeSH heading only - "c": Caption only - "a": Author only video_only: If True, only return video content (default False)

Returns: Formatted image results with URLs, captions, and article metadata

manage_pipelineA

Manage saved pipelines through a single facade.

Supported actions:

  • save: save or update a named pipeline

  • list: list saved pipelines, optionally filtered by tag/scope

  • load: load pipeline YAML from saved name or file source

  • delete: delete a saved pipeline and its history

  • history: inspect execution history for one saved pipeline

  • schedule: create, update, or remove an APScheduler-backed schedule

Args: action: One of save, list, load, delete, history, schedule. Default: list. name: Pipeline name for save/delete/history/schedule. config: Pipeline YAML/JSON string for save. source: Pipeline source for load, e.g. "saved:weekly_search" or "file:path/to/pipeline.yaml". tag: Tag filter for list action. tags: Comma-separated tags for save action. description: Description for save action. scope: Scope for save/list actions: workspace, global, auto. limit: History entry limit for history action. cron: 5-field cron expression for schedule action. Empty string removes the schedule. diff_mode: Store diff-mode preference with the schedule. notify: Store notify preference with the schedule.

Returns: Same human-readable responses as the legacy pipeline management tools.

save_pipelineA

Save a pipeline configuration for later reuse.

The config format is identical to unified_search's pipeline parameter (YAML or JSON). Saved pipelines can be loaded later by name: unified_search(pipeline="saved:weekly_remimazolam")

Args: name: Unique identifier (alphanumeric + hyphens/underscores, max 64 chars). Overwrites if name already exists (upsert semantics). config: Pipeline YAML/JSON string. Same format as unified_search pipeline param. tags: Comma-separated tags for filtering (e.g., "anesthesia,sedation"). description: Human-readable description of the pipeline's purpose. scope: Storage scope - "workspace" (project-level, git-trackable), "global" (user-level, cross-project), or "auto" (workspace if available, otherwise global). Default: "auto".

Returns: Confirmation with pipeline metadata.

list_pipelinesA

List all saved pipeline configurations.

Args: tag: Filter by tag (e.g., "sedation"). Empty = show all. scope: Filter by scope: "workspace", "global", or "" (show all).

Returns: Table of saved pipelines with name, scope, description, tags.

load_pipelineA

Load a pipeline configuration for review or editing.

Loads from one of three sources:

  • Saved name: "weekly_remimazolam" or "saved:weekly_remimazolam"

  • Local file: "file:path/to/pipeline.yaml"

The returned YAML can be reviewed, modified, and then:

  • Executed directly: unified_search(pipeline="")

  • Saved with changes: save_pipeline(name="...", config="")

Args: source: Pipeline source identifier (see above).

Returns: Full pipeline YAML content + metadata.

delete_pipelineA

Delete a saved pipeline configuration and its execution history.

Args: name: Name of the saved pipeline to delete.

Returns: Confirmation of deletion.

get_pipeline_historyA

Get execution history for a saved pipeline.

Shows past execution results with diff analysis: which articles are new compared to the previous run.

Args: name: Name of the saved pipeline. limit: Maximum number of history entries to return (default: 5).

Returns: Execution history with date, article count, new/removed articles, status.

schedule_pipelineA

Schedule a saved pipeline for periodic execution.

Args: name: Saved pipeline name. cron: Cron expression (5-field). Examples: "0 9 * * 1" (Mon 9am). Empty string removes an existing schedule. diff_mode: When True, store diff-mode preference with the schedule. notify: When True, store notify preference with the schedule.

Returns: Schedule confirmation or removal result.

read_sessionC

Read session data through a single facade.

Actions:

  • pmids: return PMIDs for one recorded search

  • article: return one cached article payload

  • summary: return current session summary and optional history

  • list_artifacts: list persistent MCP output artifact manifests

  • artifact: read one persistent artifact by artifact_id or artifact_uri

For remote artifact reads, use artifact_file plus offset/max_chars to page through large files without rerunning upstream searches or fulltext calls. Use artifact_tool/artifact_kind to filter list_artifacts. Local paths are redacted unless include_local_paths=True.

get_session_pmidsA

ๅ–ๅพ— session ไธญๆšซๅญ˜็š„ PMID ๅˆ—่กจใ€‚

่งฃๆฑบ Agent ่จ˜ๆ†ถๆปฟ่ผ‰ๅ•้กŒ - ไธ้œ€่ฆ่จ˜ไฝๆ‰€ๆœ‰ PMID๏ผŒ ๅฏไปฅ้šจๆ™‚ๅพž session ๅ–ๅ›žใ€‚

Args: search_index: ๆœๅฐ‹็ดขๅผ• - -1: ๆœ€่ฟ‘ไธ€ๆฌกๆœๅฐ‹ (้ ่จญ) - -2: ๅ‰ไธ€ๆฌกๆœๅฐ‹ - 0, 1, 2...: ็ฌฌ N ๆฌกๆœๅฐ‹ query_filter: ๅฏ้ธ๏ผŒ็ฏฉ้ธๅŒ…ๅซๆญคๅญ—ไธฒ็š„ๆœๅฐ‹

Returns: JSON ๆ ผๅผ็š„ PMID ๅˆ—่กจๅ’Œๆœๅฐ‹่ณ‡่จŠ

Example: get_session_pmids() # ๆœ€่ฟ‘ไธ€ๆฌกๆœๅฐ‹็š„ PMIDs get_session_pmids(-2) # ๅ‰ไธ€ๆฌกๆœๅฐ‹็š„ PMIDs get_session_pmids(query_filter="BJA") # ๅŒ…ๅซ "BJA" ็š„ๆœๅฐ‹

get_cached_articleA

ๅพž session ๅฟซๅ–ๅ–ๅพ—ๆ–‡็ซ ่ฉณๆƒ…ใ€‚

ๆฏ”้‡ๆ–ฐๅ‘ผๅซ fetch_article_details ๆ›ดๅฟซ๏ผŒ ไธ”ไธๆถˆ่€— NCBI API quotaใ€‚

Args: pmid: PubMed ID

Returns: ๆ–‡็ซ ่ฉณ็ดฐ่ณ‡่จŠ (ๅฆ‚ๆžœๅœจๅฟซๅ–ไธญ)

get_session_summaryA

ๅ–ๅพ—็•ถๅ‰ session ็š„ๆ‘˜่ฆ่ณ‡่จŠใ€‚

้กฏ็คบๅฟซๅ–็‹€ๆ…‹ใ€ๆœๅฐ‹ๆญทๅฒๆ‘˜่ฆ๏ผŒๅนซๅŠฉ Agent ไบ†่งฃ ็›ฎๅ‰ๆœ‰ๅ“ชไบ›่ณ‡ๆ–™ๅฏ็”จใ€‚

Args: include_history: ๆ˜ฏๅฆๅŒ…ๅซๅฎŒๆ•ดๆœๅฐ‹ๆญทๅฒ (้ ่จญ False) history_limit: ๆญทๅฒ็ญ†ๆ•ธไธŠ้™๏ผŒๅƒ…็•ถ include_history=True ๆ™‚ๆœ‰ๆ•ˆ (้ ่จญ 10)

Returns: Session ๆ‘˜่ฆ๏ผŒๅŒ…ๅซๅฟซๅ–ๆ–‡็ซ ๆ•ธใ€ๆœๅฐ‹ๆฌกๆ•ธใ€ๆœ€่ฟ‘ๆœๅฐ‹็ญ‰

Examples: get_session_summary() # ๅŸบๆœฌๆ‘˜่ฆ get_session_summary(include_history=True) # ๅซๅฎŒๆ•ดๆœๅฐ‹ๆญทๅฒ get_session_summary(include_history=True, history_limit=20) # ๆ›ดๅคšๆญทๅฒ

get_session_logA

ๅ–ๅพ—็•ถๅ‰ session ็š„ activity log ่ˆ‡ๆœๅฐ‹ๆญทๅฒๆ‘˜่ฆใ€‚

้ฉๅˆ่ฎ“ user ๅ›ž้กงๆœ€่ฟ‘ๅš้Žๅ“ชไบ›ๆœๅฐ‹ใ€cache/reading-list/exclusion ่ฎŠๅŒ–๏ผŒไปฅๅŠไฝœ็‚บ debug ๆ™‚็š„ session-level ไบ‹ไปถๆชข่ฆ–ใ€‚

Args: event_limit: ๅ›žๅ‚ณ็š„ event ็ญ†ๆ•ธไธŠ้™ (้ ่จญ 50) kind: ๅฏ้ธ๏ผŒๅƒ…ๅ›žๅ‚ณ็‰นๅฎš event kind include_history: ๆ˜ฏๅฆไธ€ไฝตๅŒ…ๅซๆœๅฐ‹ๆญทๅฒๆ‘˜่ฆ (้ ่จญ True) history_limit: ๆœๅฐ‹ๆญทๅฒๆ‘˜่ฆ็ญ†ๆ•ธไธŠ้™ (้ ่จญ 10)

Returns: Session activity log ่ˆ‡ๆœๅฐ‹ๆญทๅฒๆ‘˜่ฆ

Prompts

Interactive templates invoked by user choice

NameDescription
quick_search Quick literature search - just find some papers on a topic. Use when: User says "find papers about...", "search for...", "any articles on..."
systematic_search Systematic/comprehensive search using MeSH and synonyms. Use when: User asks for "systematic search", "comprehensive review", "find all papers", or needs thorough coverage.
pico_search PICO-based clinical question search. Use when: User asks comparative questions like "Is A better than B?", "Does X reduce Y?", "In patients with Z, what is the effect of..."
explore_paper Deep exploration starting from a key paper. Use when: User found an important paper and wants to explore the research landscape.
gene_drug_research Research workflow for genes or drugs/compounds. Use when: User asks about a specific gene (BRCA1, TP53) or drug (propofol, aspirin).
export_results Export search results to reference manager formats. Use when: User wants to save, export, or cite the papers found.
find_open_access Find open access versions of papers on a topic. Use when: User needs free full-text access to papers.
literature_review Comprehensive literature review workflow. Use when: User needs a thorough literature review for a research topic.
text_mining_workflow Extract structured information from papers using text mining. Use when: User wants to extract genes, diseases, chemicals mentioned in papers.

Resources

Contextual data attached and managed by the client

NameDescription
session_last_searchLatest session search metadata and reusable PMID summary.
session_last_search_pmidsPMID list from the latest recorded search for immediate reuse.
session_last_search_resultsCached article payloads for the latest search PMIDs.
session_activityRecent session activity events plus search history for debugging and review.
session_contextCurrent research session context and cache summary.
pubmed_filter_age_groupPubMed age-group filter reference and usage examples.
pubmed_filter_sexPubMed sex filter reference and usage examples.
pubmed_filter_speciesPubMed species filter reference and usage examples.
pubmed_filter_languagePubMed language filter reference and usage examples.
pubmed_filter_clinical_queryPubMed Clinical Queries reference and usage examples.
pubmed_filter_article_typePubMed article-type filter reference and usage examples.
pubmed_filter_allCombined filter reference for PubMed search options.
pubmed_tools_referenceCategory view of all registered MCP tools.
pubmed_icd_mappingBidirectional ICD-9/10 and MeSH reference data.

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/u9401066/pubmed-search-mcp'

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