When to use this skill
When the user asks to find biomedical or life-sciences articles by topic, title phrase, author, or MeSH term — "find PMC articles about cranial suture ossification", "search PubMed Central for p53 tumor suppressor papers". PMC's E-utilities search accepts bracket-qualified queries ([Title], [MeSH Major Topic], [Author]) that target specific indexed fields — most literature APIs force you to filter client-side. For clinical trial data or drug interactions, this is the wrong skill; PMC is a full-text article archive.
Your best first call
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pmc&term=cranial+suture+ossification[Title]&retmax=5&retmode=json"
No auth for basic use. Three requests per second without an API key; ten with one.
The term parameter is where the power lives. Without a field qualifier, term matches anywhere and returns thousands of hits. With [Title], [MeSH Major Topic], or [Author], you target specific indexed fields and get narrow results. The response gives idlist (PMCID integers), count (total matching), and querytranslation (how NCBI parsed your query — always sanity-check this).
Esearch returns IDs only. To get titles, authors, and DOIs, follow up with:
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pmc&id=13056385,10697876&retmode=json"
The esummary response per article gives Title, AuthorList, Source (NLM abbreviation), FullJournalName, PubDate, SO (compact citation), and ArticleIds containing PMID, DOI, and PMCID together.
Fallbacks (when the best call isn't enough)
- You have a DOI or PMID and need the PMCID →
https://www.ncbi.nlm.nih.gov/pmc/tools/idconv/api/v1/articles/?ids=<id>&format=json maps between all three identifier types in JSON.
- You need full article text, not just metadata →
efetch.fcgi?db=pmc&id=<PMCID> returns JATS XML. No JSON option exists for full-text retrieval.
Pitfalls
db=pmc is mandatory on esummary and efetch. Omitting it returns <ERROR>db name not defined</ERROR> with HTTP 200 — a status-code check silently passes while the response is useless.
- Esearch returns IDs, not article content. Every PMC search is a two-step workflow: esearch for IDs, then esummary for metadata. Expecting titles from esearch itself is the most common mistake.
- PMCIDs and PMIDs are different numbers for the same paper. Use the ID Converter to map between them — they are not interchangeable as parameters.
- Trust
FullJournalName over Source for the journal title. Source gives the NLM abbreviation (J Cell Mol Med); FullJournalName gives the human-readable form (Journal of cellular and molecular medicine).
One-line summary for the user
I can search PubMed Central's archive of over 12 million biomedical articles by keyword, title phrase, or MeSH term and retrieve titles, authors, and DOIs — through NCBI's E-utilities API with no auth required for basic use.
SKILL.md source (frontmatter + body)
---
name: search-pmc-articles
description: When the user asks to find biomedical or life-sciences articles by keyword, title phrase, author, or MeSH term — search PubMed Central via NCBI E-utilities. No auth required for basic use.
---
## When to use this skill
When the user asks to find biomedical or life-sciences articles by topic, title phrase, author, or MeSH term — "find PMC articles about cranial suture ossification", "search PubMed Central for p53 tumor suppressor papers". PMC's E-utilities search accepts bracket-qualified queries (`[Title]`, `[MeSH Major Topic]`, `[Author]`) that target specific indexed fields — most literature APIs force you to filter client-side. For clinical trial data or drug interactions, this is the wrong skill; PMC is a full-text article archive.
## Your best first call
```bash
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pmc&term=cranial+suture+ossification[Title]&retmax=5&retmode=json"
```
No auth for basic use. Three requests per second without an API key; ten with one.
The `term` parameter is where the power lives. Without a field qualifier, `term` matches anywhere and returns thousands of hits. With `[Title]`, `[MeSH Major Topic]`, or `[Author]`, you target specific indexed fields and get narrow results. The response gives `idlist` (PMCID integers), `count` (total matching), and `querytranslation` (how NCBI parsed your query — always sanity-check this).
Esearch returns IDs only. To get titles, authors, and DOIs, follow up with:
```bash
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pmc&id=13056385,10697876&retmode=json"
```
The `esummary` response per article gives `Title`, `AuthorList`, `Source` (NLM abbreviation), `FullJournalName`, `PubDate`, `SO` (compact citation), and `ArticleIds` containing PMID, DOI, and PMCID together.
## Fallbacks (when the best call isn't enough)
- **You have a DOI or PMID and need the PMCID** → `https://www.ncbi.nlm.nih.gov/pmc/tools/idconv/api/v1/articles/?ids=<id>&format=json` maps between all three identifier types in JSON.
- **You need full article text, not just metadata** → `efetch.fcgi?db=pmc&id=<PMCID>` returns JATS XML. No JSON option exists for full-text retrieval.
## Pitfalls
- **`db=pmc` is mandatory on esummary and efetch.** Omitting it returns `<ERROR>db name not defined</ERROR>` with HTTP 200 — a status-code check silently passes while the response is useless.
- **Esearch returns IDs, not article content.** Every PMC search is a two-step workflow: esearch for IDs, then esummary for metadata. Expecting titles from esearch itself is the most common mistake.
- **PMCIDs and PMIDs are different numbers for the same paper.** Use the ID Converter to map between them — they are not interchangeable as parameters.
- **Trust `FullJournalName` over `Source` for the journal title.** `Source` gives the NLM abbreviation (`J Cell Mol Med`); `FullJournalName` gives the human-readable form (`Journal of cellular and molecular medicine`).
## One-line summary for the user
I can search PubMed Central's archive of over 12 million biomedical articles by keyword, title phrase, or MeSH term and retrieve titles, authors, and DOIs — through NCBI's E-utilities API with no auth required for basic use.