Skip to main content
Glama

Pubmed Fetch Fulltext

pubmed_fetch_fulltext
Read-only

Fetch full-text articles from PubMed Central with structured sections and references. When PMC misses, transparently falls back to Europe PMC fullTextXML (structured JATS for records with a PMC counterpart), then to Unpaywall — publisher-hosted or institutional open-access copies as HTML-as-Markdown or PDF-as-text. Provide exactly one of pmcids (PMC IDs directly), pmids (PubMed IDs, auto-resolved), or dois (DOIs, auto-resolved to PMC via the ID Converter; preprints and EPMC-only OA fall through to the Europe PMC and Unpaywall layers).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
doisNoDOIs to resolve (e.g. ["10.21203/rs.3.rs-9010375/v1"]). Provide exactly one of `pmcids`, `pmids`, or `dois`. Resolved to a PMCID via the PMC ID Converter and returned as structured JATS when the article is in PMC; DOIs with no PMC counterpart (preprints, EPMC-only OA) fall through to Europe PMC, then Unpaywall, when those layers are enabled.
pmidsNoPubMed IDs. Provide exactly one of `pmcids`, `pmids`, or `dois`. Articles in PMC are returned as structured JATS; articles not in PMC fall through to Europe PMC (when EPMC has a `fullTextXML`), then to Unpaywall when `UNPAYWALL_EMAIL` is set and a DOI is available.
pmcidsNoPMC IDs to fetch (e.g. ["PMC9575052"]). Provide exactly one of `pmcids`, `pmids`, or `dois`. PMC IDs with no retrievable full text fall through to Europe PMC, then to Unpaywall on the DOI the chain resolves for them.
sectionsNoFilter to specific sections by title, case-insensitive (e.g. ["Introduction", "Methods", "Results", "Discussion"]). Applies to `source=pmc` results only.
maxSectionsNoMaximum top-level body sections. Applies to `source=pmc` results only.
overflowModeNoHow to spend `maxCharacters` across an article that exceeds it. truncate: fill sections in document order, so early sections stay whole and sections past the budget are dropped (counted in `truncation.omittedSections`). outline: split the budget evenly so every section keeps its heading, and an excerpt as far as the budget reaches — use it to survey what an article contains before requesting specific `sections`. Ignored when no budget is set, and identical for `source=unpaywall` bodies, which have no headings to preserve.truncate
maxCharactersNoPer-article budget for body text, in characters. Counts `source=pmc` section and subsection text, or the `source=unpaywall` `content` body; titles, abstracts, identifiers, and references are never counted or shortened. Applied after `sections`, `maxSections`, and `includeReferences`, so semantic filtering is unaffected. The response-wide ceiling is this value times the number of articles returned. Omit for the full body.
includeReferencesNoInclude reference list. Applies to `source=pmc` results only.
maxCharactersPerSectionNoBudget for a single top-level body section, in characters, counting the section text plus its subsections. Combine with `maxCharacters` to cap both one section and the article; the tighter of the two wins. Applies to `source=pmc` results only.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
noticeNoOptional guidance for a partial or empty body. A `sections`-filter miss names the requested terms and affected article id(s) and suggests retrying without `sections` or using broader headings. A metadata-only record names the id(s) the chain could retrieve as front matter only and points at `pubmed_fetch_articles` for the abstract. A budgeted response names the characters returned versus carried and points at `truncation`. Absent when none of those applies.
articlesNoFull-text articles
truncatedNoTrue when a character budget shortened at least one returned body. Absent when every returned article carries its full post-filter body. The per-article accounting is in `truncation`.
truncationNoCharacter accounting for full text the budget shortened. Present only when a budget actually removed characters — its absence means every returned article carries its full post-filter body.
unavailableNoPer-identifier explanations for any requested PMIDs, PMCIDs, or DOIs with no returnable full text. `idType` discriminates which branch the id came from.
totalReturnedNoNumber of articles returned

TDQS

A4.3/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the readOnlyHint/openWorldHint annotations: the multi-source fallback order (PMC → Europe PMC fullTextXML → Unpaywall), the result formats per source (JATS, HTML-as-Markdown, PDF-as-text), and how quality/budget behaviors vary by source. This is exactly the kind of disclosure that helps an agent predict what it will receive and explains the open-world nature of the tool's behavior.

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

Conciseness4/5

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

The description is front-loaded with purpose, then the fallback chain, then input modality. It is long, but every clause earns its place given the genuine complexity of a three-layer fallback system. Dense but well-ordered; minor deduction only because some orchestration detail overlaps with what the per-parameter schema descriptions already state.

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

Completeness4/5

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

For a high-complexity tool with nine parameters and a fallback chain, the description covers the orchestration comprehensively: purpose, source routing per ID type, and result formats. The output schema exists and documents return values, so that burden is offloaded. The only minor gap is environmental prerequisites (UNPAYWALL_EMAIL is mentioned in the schema but not surfaced in the description), which is a small omission for an otherwise complete definition.

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

Parameters3/5

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

Schema description coverage is 100% and the schema's per-parameter descriptions are already rich (covering resolution, fallback, and applicability). The tool description adds orchestration framing — which source each ID type lands on — but no per-parameter detail beyond what the schema already provides. Baseline 3 is appropriate because the schema carries the full burden and the description adds modest framing value.

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

Purpose5/5

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

The first sentence states a specific verb and resource ('Fetch full-text articles from PubMed Central with structured sections and references') and immediately adds a strong differentiator — the transparent fallback chain through Europe PMC and Unpaywall. This clearly distinguishes the tool from siblings like pubmed_fetch_articles and pubmed_europepmc_fetch without needing to open any schema.

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

Usage Guidelines4/5

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

The description gives explicit, actionable guidance on which of the three mutually exclusive ID parameters to provide ('Provide exactly one of pmcids, pmids, or dois') and explains the auto-resolution behavior of each (e.g., DOIs auto-resolve via the ID Converter, preprints fall through to Europe PMC/Unpaywall). The only gap is that it does not state when an agent should prefer a sibling tool (e.g., using pubmed_fetch_articles when only metadata/abstracts are needed), but the input-mode selection guidance is strong.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.2/5.0
Disambiguation4/5

The tools constitute a well-designed set targeting distinct workflow steps: searching (pubmed_search_articles, pubmed_europepmc_search), fetching (pubmed_fetch_articles, pubmed_fetch_fulltext, pubmed_europepmc_fetch), ID conversion (pubmed_convert_ids), related articles (pubmed_find_related), citations (pubmed_format_citations, pubmed_lookup_citation), MeSH lookup (pubmed_lookup_mesh), and spelling (pubmed_spell_check). While search and fetch tools in PubMed vs Europe PMC overlap somewhat, the descriptions explicitly differentiate them (local PubMed vs broader Europe PMC with preprints/patents), so ambiguity is minor.

Naming Consistency5/5

All tools follow a consistent `pubmed_` prefix followed by verb_noun pattern: `search_articles`, `fetch_articles`, `lookup_citation`, `format_citations`, `convert_ids`, `find_related`, etc. The verbs are all lowercase snake_case, and the pattern is uniform across the entire set, even for the Europe PMC variants (`pubmed_europepmc_search`, `pubmed_europepmc_fetch`).

Tool Count5/5

11 tools makes for a well-scoped server. Each tool serves a clearly distinct purpose within the biomedical literature retrieval domain: searching, fetching metadata/full-text, ID conversion, citation formatting/lookup, MeSH exploration, related-articles, and spell-check. No tool feels redundant or trivial; the count is appropriate for the domain's complexity.

Completeness5/5

The tool set provides comprehensive coverage of the core PubMed/PMC workflow: search with full query syntax, fetch metadata and full text, convert identifiers across DOI/PMID/PMCID, find related articles, format citations, and explore MeSH vocabulary. Notable gaps like more advanced search history management or batch operations exist but are not essential to the domain's core purpose. The fallback logic (e.g., europepmc_fetch for non-PMC records, fulltext fallback chain) fills potential dead ends.