UNPKG

jobnimbus-mcp-client

Version:

JobNimbus MCP Client - Connect Claude Desktop to remote JobNimbus MCP server

86 lines 3.71 kB
/** * Get Calendar Activities * Fetches activities and formats them as calendar events */ import { BaseTool } from '../baseTool.js'; export class GetCalendarActivities extends BaseTool { get definition() { return { name: 'get_calendar_activities', description: 'Get calendar activities and scheduling (formatted from activities data)', inputSchema: { type: 'object', properties: { from: { type: 'number', description: 'Starting index for pagination (default: 0)', }, size: { type: 'number', description: 'Number of records to retrieve (default: 50, max: 100)', }, date_from: { type: 'string', description: 'Start date filter (YYYY-MM-DD format)', }, date_to: { type: 'string', description: 'End date filter (YYYY-MM-DD format)', }, }, }, }; } async execute(input, context) { // Fetch activities from JobNimbus API const params = { from: input.from || 0, size: input.size || 50, date_from: input.date_from, date_to: input.date_to, }; const response = await this.client.get(context.apiKey, 'activities', params); const activities = response.data?.activity || []; // Transform activities into calendar events const now = new Date().toISOString(); const calendarEvents = activities .filter((activity) => activity.date_start || activity.date_created) .map((activity) => { // Convert Unix timestamp to ISO string const startDate = activity.date_start ? new Date(activity.date_start * 1000).toISOString() : new Date(activity.date_created * 1000).toISOString(); const endDate = activity.date_end ? new Date(activity.date_end * 1000).toISOString() : startDate; return { id: activity.jnid || activity.recid?.toString() || '', title: activity.name || activity.subject || 'Untitled Activity', description: activity.description || activity.notes || '', start_date: startDate, end_date: endDate, all_day: activity.all_day || false, type: activity.record_type_name || 'activity', related_to: activity.related?.[0]?.name || activity.customer || '', created_by: activity.created_by_name || 'Unknown', }; }); // Sort by start date calendarEvents.sort((a, b) => new Date(a.start_date).getTime() - new Date(b.start_date).getTime()); // Calculate summary stats const upcomingEvents = calendarEvents.filter((event) => event.start_date >= now).length; const pastEvents = calendarEvents.filter((event) => event.start_date < now).length; const allDayEvents = calendarEvents.filter((event) => event.all_day).length; return { success: true, total_activities: calendarEvents.length, calendar_events: calendarEvents, summary: { upcoming_events: upcomingEvents, past_events: pastEvents, all_day_events: allDayEvents, }, }; } } //# sourceMappingURL=getCalendarActivities.js.map