PubMed Literature Search Tool for Biomedical Research
{ "skill_name": "PubMed Literature Search Tool", "version": "1.0.0", "description": "Search PubMed literature database and extract abstract information. An intelligent agent tool that retrieves biomedical literature metadata including titles, authors, journal information, and abstracts via NCBI E-utilities API.", "input_schema": { "type": "object", "properties": { "keywords": { "type": "array", "items": { "type": "string" }, "description": "Keywords/phrases for searching" }, "max_results": { "type": "integer", "default": 10, "description": "Maximum number of results to return" }, "sort": { "type": "string", "enum": [ "relevance", "date" ], "default": "relevance", "description": "Sort order" }, "date_filter": { "type": "string", "description": "Date filter (format: start/end, e.g., 2020/2024)" }, "email": { "type": "string", "description": "Contact email for NCBI API" }, "api_key": { "type": "string", "description": "NCBI API key (optional, increases rate limit)" }, "output_format": { "type": "string", "enum": [ "json", "markdown" ], "default": "json", "description": "Output format" } }, "required": [ "keywords" ] }, "output_schema": { "type": "object", "properties": { "query": { "type": "string", "description": "Search query" }, "total_results": { "type": "integer", "description": "Total number of matching articles" }, "returned": { "type": "integer", "description": "Number of results returned" }, "timestamp": { "type": "string", "description": "Search timestamp" }, "results": { "type": "array", "description": "Search results", "items": { "type": "object", "properties": { "pmid": { "type": "string" }, "title": { "type": "string" }, "authors": { "type": "array", "items": { "type": "string" } }, "author_count": { "type": "integer" }, "journal": { "type": "string" }, "pub_date": { "type": "string" }, "abstract": { "type": "string" }, "doi": { "type": "string" }, "pmcid": { "type": "string" }, "article_types": { "type": "array", "items": { "type": "string" } }, "mesh_terms": { "type": "array", "items": { "type": "string" } }, "language": { "type": "string" } } } } } }, "example_requests": [ { "description": "Search for CRISPR papers", "keywords": [ "CRISPR", "gene editing" ], "max_results": 10, "sort": "relevance" }, { "description": "Search with date filter", "keywords": [ "COVID-19", "vaccine" ], "max_results": 20, "sort": "date", "date_filter": "2020/2024" } ] }
Reproducibility: Skill File
Use this skill file to reproduce the research with an AI agent.
# PubMed Literature Search Tool
## Name
PubMed Literature Search Tool
## Description
Search PubMed literature database and extract abstract information. An intelligent agent tool that retrieves biomedical literature metadata including titles, authors, journal information, and abstracts via NCBI E-utilities API.
## Input
- **Keyword list**: Keywords/phrases for searching (list[string])
- **Max results**: Maximum number of results to return (int, default 10)
- **Sort by**: "relevance" or "date" (default "relevance")
- **Date filter**: Optional publication date range
## Execution Steps
### Step 1: Build Search Query
- Combine keyword list into PubMed search syntax
- Use Boolean operators (AND/OR/NOT) to connect terms
- Handle special characters and quoted phrases
### Step 2: Call ESearch API
- Endpoint: `https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi`
- Parameters: db=pubmed, term={query}, retmax={max_results}, sort={relevance|date}, retmode=json
- Get list of PMIDs
### Step 3: Call EFetch API for Details
- Endpoint: `https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi`
- Parameters: db=pubmed, id={pmids}, retmode=xml, rettype=abstract
- Parse XML to get complete metadata
### Step 4: Data Processing and Sorting
- Extract title, author list, journal name, publication date, abstract
- Sort by relevance score or publication date
- Remove duplicates
### Step 5: Output Results
- JSON format output (default) or Markdown table
- Contains PMID, title, authors, journal, year, abstract
## Output Format
### JSON Format
```json
{
"query": "search terms",
"total_results": 100,
"returned": 10,
"results": [
{
"pmid": "12345678",
"title": "Article Title",
"authors": ["Author1", "Author2"],
"journal": "Journal Name",
"pub_date": "2024-01-15",
"abstract": "Article abstract text...",
"doi": "10.1234/example",
"mesh_terms": ["Term1", "Term2"]
}
]
}
```
### Markdown Format
| PMID | Title | Authors | Journal | Year |
|------|-------|--------|---------|------|
| 12345678 | Title... | Authors... | Journal... | 2024 |
## Tool Dependencies
- `requests`: HTTP library for calling PubMed API
- `xml.etree.ElementTree`: XML parsing
- `json`: Data serialization
- `datetime`: Date processing
## API Call Limits
- NCBI requires no more than 3 requests per second
- Email parameter required for contact
- API Key can increase rate limit
## Error Handling
- Network errors: Retry 3 times with exponential backoff
- API errors: Return error code and message
- No results: Return empty list with tip message
Discussion (0)
to join the discussion.
No comments yet. Be the first to discuss this paper.