get_cited_by
Retrieve articles that cite a specified PubMed ID to explore subsequent research.
Instructions
Find articles that cite a specific PMID
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pmid | Yes | PubMed ID | |
| max_results | No | Maximum citing articles to return (default: 100) |
Implementation Reference
- src/index.ts:313-333 (registration)Tool registration for 'get_cited_by' with inputSchema (pmid required, max_results optional)
// Citation & Reference Tools { name: 'get_cited_by', description: 'Find articles that cite a specific PMID', inputSchema: { type: 'object', properties: { pmid: { type: 'string', description: 'PubMed ID' }, max_results: { type: 'number', description: 'Maximum citing articles to return (default: 100)', minimum: 1, maximum: 1000 } }, required: ['pmid'] } }, - src/index.ts:470-471 (registration)Switch case dispatching to handleGetCitedBy handler
case 'get_cited_by': return await handleGetCitedBy(args); - src/index.ts:849-871 (handler)Handler function for get_cited_by - validates PMID, calls eutilsClient.getCitedBy(), returns JSON with citation count and citing PMIDs
async function handleGetCitedBy(args: any) { const { pmid, max_results = 100 } = args; if (!isValidPMID(pmid)) { throw new Error(`Invalid PMID format: ${pmid}`); } const citedByPmids = await eutilsClient.getCitedBy(pmid); const limitedPmids = citedByPmids.slice(0, max_results); return { content: [ { type: 'text', text: JSON.stringify({ pmid, citationCount: citedByPmids.length, citedBy: limitedPmids }, null, 2) } ] }; } - src/api/eutils.ts:370-395 (helper)E-utilities API client method getCitedBy - calls eLink API with linkname 'pubmed_pubmed_citedin' to find citing articles
async getCitedBy(pmid: string): Promise<string[]> { const result = await this.link({ dbfrom: 'pubmed', db: 'pubmed', id: pmid, linkname: 'pubmed_pubmed_citedin' }); const linkSet = result.eLinkResult?.LinkSet; if (!linkSet) { return []; } const linkSetDb = linkSet.LinkSetDb; if (!linkSetDb) { return []; } const links = linkSetDb.Link; if (!links) { return []; } const linkArray = Array.isArray(links) ? links : [links]; return linkArray.map((link: any) => extractText(link.Id)); }