list_issues
Browse Entra.news archive issues with filtering by year and month to discover available content before retrieving specific issues or performing searches.
Instructions
Browse the Entra.news archive with optional year/month filtering. Returns a list of issues with title, date, and URL. Use this to discover what issues exist before using get_issue or search_entra_news.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Filter by year (e.g. 2024) | |
| month | No | Filter by month number 1–12 (e.g. 3 for March). Requires year. | |
| limit | No | Maximum issues to return (default: 50) | |
| offset | No | Pagination offset (default: 0) |
Implementation Reference
- src/tools/list-issues.ts:52-83 (handler)The handler function `handleListIssues` executes the logic to fetch and format the issue list.
export function handleListIssues(args: ListIssuesArgs): string { const { year, month, limit, offset } = args; const issues = listIssues({ year, month, limit, offset }); const meta = getDbMeta(); if (issues.length === 0) { const filter = [year, month ? MONTH_NAMES[month - 1] : null].filter(Boolean).join(' '); return `No issues found${filter ? ` for ${filter}` : ''}.`; } const filterDesc = [ month ? MONTH_NAMES[month - 1] : null, year ? String(year) : null, ] .filter(Boolean) .join(' '); const totalNote = meta.issue_count ? ` (${meta.issue_count} total in archive)` : ''; const paginationNote = offset > 0 || issues.length === limit ? `\nShowing ${offset + 1}–${offset + issues.length}${totalNote}` : `\n${issues.length} issue(s)${totalNote}`; const header = `## Entra.news Archive${filterDesc ? ` — ${filterDesc}` : ''}${paginationNote}\n\n`; const lastUpdated = meta.last_updated ? `*Last updated: ${new Date(meta.last_updated).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' })}*\n\n` : ''; const rows = issues.map(formatIssueRow).join('\n'); return `${header}${lastUpdated}\`\`\`\n${rows}\n\`\`\``; } - src/tools/list-issues.ts:4-32 (schema)The Zod schema `listIssuesSchema` defines input validation for the `list_issues` tool.
export const listIssuesSchema = z.object({ year: z .number() .int() .min(2023) .max(2030) .optional() .describe('Filter by year (e.g. 2024)'), month: z .number() .int() .min(1) .max(12) .optional() .describe('Filter by month number (1–12). Requires year to be set.'), limit: z .number() .int() .min(1) .max(200) .default(50) .describe('Maximum issues to return'), offset: z .number() .int() .min(0) .default(0) .describe('Pagination offset'), }); - src/server.ts:66-94 (registration)Registration of the `list_issues` tool in `src/server.ts`.
name: 'list_issues', description: 'Browse the Entra.news archive with optional year/month filtering. ' + 'Returns a list of issues with title, date, and URL. ' + 'Use this to discover what issues exist before using get_issue or search_entra_news.', inputSchema: { type: 'object', properties: { year: { type: 'number', description: 'Filter by year (e.g. 2024)', }, month: { type: 'number', description: 'Filter by month number 1–12 (e.g. 3 for March). Requires year.', }, limit: { type: 'number', description: 'Maximum issues to return (default: 50)', default: 50, }, offset: { type: 'number', description: 'Pagination offset (default: 0)', default: 0, }, }, }, },