get_all_details
Retrieve detailed lifecycle information for all versions of a software product, including end-of-life dates, support status, and upgrade recommendations, using the EOL MCP Server.
Instructions
Get comprehensive lifecycle details for all versions of a product
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Software product name (e.g., python, nodejs) |
Input Schema (JSON Schema)
{
"properties": {
"product": {
"description": "Software product name (e.g., python, nodejs)",
"examples": [
"python",
"nodejs"
],
"type": "string"
}
},
"required": [
"product"
],
"type": "object"
}
Implementation Reference
- src/index.ts:915-968 (handler)The main handler function that implements the tool logic: fetches all EOL cycles for the given product, computes validation (EOL status, support) for each version, and returns a comprehensive JSON with product details, current date, and annotated cycles.private async handleGetAllDetails(args: GetAllDetailsArgs) { const { product } = args; if (!this.availableProducts.includes(product)) { return { content: [{ type: "text", text: `Invalid product: ${product}. Use list_products tool to see available products.` }], isError: true }; } try { const cycles = await this.getProductDetails(product); const currentDate = new Date(); // Add validation results for each cycle const detailedCycles = cycles.map(cycle => { const validation = this.validateVersion(cycle, currentDate); return { ...cycle, validation: { is_valid: validation.isValid, days_to_eol: validation.daysToEol, is_supported: validation.isSupported, message: validation.validationMessage } }; }); return { content: [{ type: "text", text: JSON.stringify({ product, current_date: currentDate.toISOString(), cycles: detailedCycles }, null, 2) }] }; } catch (error) { if (axios.isAxiosError(error)) { return { content: [{ type: "text", text: `API error: ${error.response?.data?.message ?? error.message}` }], isError: true }; } throw error; } }
- src/index.ts:363-377 (registration)Tool registration in ListToolsRequestSchema response: defines the tool name, description, and JSON input schema matching GetAllDetailsArgs.{ name: "get_all_details", description: "Get comprehensive lifecycle details for all versions of a product", inputSchema: { type: "object", properties: { product: { type: "string", description: "Software product name (e.g., python, nodejs)", examples: ["python", "nodejs"] } }, required: ["product"] } }
- src/types.ts:156-168 (schema)TypeScript interface for tool input arguments and corresponding type guard used for runtime validation in the dispatch handler.export interface GetAllDetailsArgs { product: string; } // Add type guard for GetAllDetailsArgs export function isValidGetAllDetailsArgs(args: any): args is GetAllDetailsArgs { return ( typeof args === "object" && args !== null && "product" in args && typeof args.product === "string" ); }
- src/index.ts:427-435 (registration)Dispatch logic in CallToolRequestSchema handler: validates arguments using the type guard and invokes the tool handler.case "get_all_details": { if (!isValidGetAllDetailsArgs(args)) { throw new McpError( ErrorCode.InvalidParams, "Invalid get all details arguments" ); } return this.handleGetAllDetails(args); }