When to use this skill
When the user wants to find biomedical or life-sciences articles by keyword, title, author, or MeSH term — "find PMC articles about cranial suture ossification", "search for papers by Reddy on NF-kB". PMC's esearch supports fielded queries with bracket qualifiers ([Title], [MeSH Major Topic], [Author]) that target specific indexed fields. For clinical trial data or drug interactions, this is the wrong skill. For article content after you have PMCIDs, pair this with esummary or efetch.
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. db=pmc is mandatory — omit it and you get an error with HTTP 200. The term parameter accepts bracket qualifiers: cranial suture ossification[Title] returns 14 articles; the same phrase without [Title] returns thousands. Always qualify search terms unless the user wants broad results.
The response returns IDs, not article content. Key fields: Count (total matches), IdList (array of PMCID strings like 13056385), QueryTranslation (how NCBI parsed your query — sanity-check if results look wrong), RetMax/RetStart (pagination; set retmax explicitly since it defaults to 20). Add &retmode=json for JSON; omit it for XML.
Fallbacks (when the best call isn't enough)
- Need article titles, authors, DOIs →
esummary.fcgi?db=pmc&id=<comma-separated-PMCIDs> returns citation metadata.
- Need full article body →
efetch.fcgi?db=pmc&id=<PMCID>&rettype=xml returns JATS XML only — no JSON mode for PMC full text.
- Have a DOI or PMID, need the PMCID →
/tools/idconv/api/v1/articles/?ids=<DOI-or-PMID> maps between identifier types in JSON.
Pitfalls
- esearch returns IDs only. The workflow is always two calls: esearch for IDs, then esummary or efetch. Returning raw ID lists to the user is almost never useful.
- Omitting
[Title], [Author], or [MeSH Major Topic] from term causes the search to match all fields — often thousands of results for what should be a targeted query.
db=pmc omission silently returns <ERROR>db name not defined</ERROR> with HTTP 200. A naive status-code check won't catch this.
- PMCIDs and PMIDs are different numbers for the same paper. PMCID indexes the full-text archive; PMID indexes the abstract catalog. Use the ID Converter to map between them.
One-line summary for the user
I can search PubMed Central's biomedical article archive by keyword, title, author, or MeSH term using fielded queries — results are PMCID lists, so pair with esummary or efetch to get metadata and full text.
SKILL.md source (frontmatter + body)
---
name: search-pubmed-central-articles
description: When the user wants to find biomedical or life-sciences articles by keyword, title, author, or MeSH term — search PubMed Central's esearch with fielded queries. No auth for basic use.
---
## When to use this skill
When the user wants to find biomedical or life-sciences articles by keyword, title, author, or MeSH term — "find PMC articles about cranial suture ossification", "search for papers by Reddy on NF-kB". PMC's esearch supports fielded queries with bracket qualifiers (`[Title]`, `[MeSH Major Topic]`, `[Author]`) that target specific indexed fields. For clinical trial data or drug interactions, this is the wrong skill. For article content after you have PMCIDs, pair this with esummary or efetch.
## 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. `db=pmc` is mandatory — omit it and you get an error with HTTP 200. The `term` parameter accepts bracket qualifiers: `cranial suture ossification[Title]` returns 14 articles; the same phrase without `[Title]` returns thousands. Always qualify search terms unless the user wants broad results.
The response returns IDs, not article content. Key fields: `Count` (total matches), `IdList` (array of PMCID strings like `13056385`), `QueryTranslation` (how NCBI parsed your query — sanity-check if results look wrong), `RetMax`/`RetStart` (pagination; set `retmax` explicitly since it defaults to 20). Add `&retmode=json` for JSON; omit it for XML.
## Fallbacks (when the best call isn't enough)
- **Need article titles, authors, DOIs** → `esummary.fcgi?db=pmc&id=<comma-separated-PMCIDs>` returns citation metadata.
- **Need full article body** → `efetch.fcgi?db=pmc&id=<PMCID>&rettype=xml` returns JATS XML only — no JSON mode for PMC full text.
- **Have a DOI or PMID, need the PMCID** → `/tools/idconv/api/v1/articles/?ids=<DOI-or-PMID>` maps between identifier types in JSON.
## Pitfalls
- esearch returns **IDs only**. The workflow is always two calls: esearch for IDs, then esummary or efetch. Returning raw ID lists to the user is almost never useful.
- Omitting `[Title]`, `[Author]`, or `[MeSH Major Topic]` from `term` causes the search to match all fields — often thousands of results for what should be a targeted query.
- `db=pmc` omission silently returns `<ERROR>db name not defined</ERROR>` with HTTP 200. A naive status-code check won't catch this.
- PMCIDs and PMIDs are different numbers for the same paper. PMCID indexes the full-text archive; PMID indexes the abstract catalog. Use the ID Converter to map between them.
## One-line summary for the user
I can search PubMed Central's biomedical article archive by keyword, title, author, or MeSH term using fielded queries — results are PMCID lists, so pair with esummary or efetch to get metadata and full text.