UNPKG

@asanstefanski/everhour-mcp-server

Version:

Complete Everhour API integration for Model Context Protocol (MCP) with 100% endpoint coverage

313 lines 6.76 kB
export interface EverHourClient { id: number; name: string; businessDetails?: { name?: string; address?: string; phone?: string; website?: string; }; projects?: number[]; createdAt: string; updatedAt: string; } export interface EverHourProject { id: string; name: string; client?: { id: number; name: string; }; status: 'active' | 'archived' | 'completed'; type: 'board' | 'list'; billing?: { type: 'flat_rate' | 'hourly_rate' | 'none'; budget?: number; rate?: number; }; time?: { total: number; today: number; week: number; }; createdAt: string; updatedAt: string; } export interface EverHourTask { id: string; name: string; number?: string; status: 'open' | 'closed' | 'in_progress'; type: 'task' | 'bug' | 'feature'; project: { id: string; name: string; }; section?: { id: string; name: string; }; assignee?: { id: number; name: string; }; labels?: string[]; description?: string; time?: { total: number; today: number; week: number; }; createdAt: string; updatedAt: string; } export interface EverHourTimeRecord { id: string; comment?: string; time: number; date: string; task?: { id: string; name: string; }; project?: { id: string; name: string; }; user: { id: number; name: string; }; createdAt: string; updatedAt: string; } export interface EverHourTimer { id: string; status: 'active' | 'stopped'; startedAt?: string; task?: { id: string; name: string; }; project?: { id: string; name: string; }; user: { id: number; name: string; }; comment?: string; duration?: number; } export interface EverHourUser { id: number; name: string; email: string; role: 'admin' | 'manager' | 'member'; status: 'active' | 'pending' | 'suspended'; avatarUrl?: string; timezone?: string; createdAt: string; updatedAt: string; } export interface EverHourSection { id: string; name: string; project: { id: string; name: string; }; position: number; tasksCount: number; createdAt: string; updatedAt: string; } export interface EverHourApiResponse<T> { data: T; meta?: { page?: number; limit?: number; total?: number; }; } export interface EverHourApiError { message: string; code: string; details?: Record<string, any>; } export interface CreateTimeRecordParams { time: number; date: string; task?: string; project?: string; comment?: string; } export interface UpdateTimeRecordParams { time?: number; date?: string; task?: string; project?: string; comment?: string; } export interface CreateProjectParams { name: string; client?: number; type?: 'board' | 'list'; billing?: { type?: 'flat_rate' | 'hourly_rate' | 'none'; budget?: number; rate?: number; }; } export interface UpdateProjectParams { name?: string; status?: 'active' | 'archived' | 'completed'; billing?: { type?: 'flat_rate' | 'hourly_rate' | 'none'; budget?: number; rate?: number; }; } export interface CreateTaskParams { name: string; section?: string; assignee?: number; type?: 'task' | 'bug' | 'feature'; description?: string; labels?: string[]; } export interface UpdateTaskParams { name?: string; status?: 'open' | 'closed' | 'in_progress'; type?: 'task' | 'bug' | 'feature'; assignee?: number; description?: string; labels?: string[]; } export interface CreateClientParams { name: string; businessDetails?: { name?: string; address?: string; phone?: string; website?: string; }; } export interface UpdateClientParams { name?: string; businessDetails?: { name?: string; address?: string; phone?: string; website?: string; }; } export interface TimerStartParams { task?: string; project?: string; comment?: string; } export interface CreateSectionParams { name: string; project: string; position?: number; } export interface UpdateSectionParams { name?: string; position?: number; } export interface ListParams { page?: number; limit?: number; query?: string; status?: string; project?: string; client?: number; assignee?: number; from?: string; to?: string; } export interface EverHourTimecard { id: number; user: number; date: string; clockIn: string; clockOut: string; } export interface CreateTimecardParams { user: number; date?: string; } export interface UpdateTimecardParams { clockIn?: string; clockOut?: string; } export interface EverHourInvoice { id: number; number: string; status: 'draft' | 'sent' | 'paid'; total: number; } export interface CreateInvoiceParams { number: string; status?: 'draft' | 'sent' | 'paid'; } export interface UpdateInvoiceParams { status?: 'draft' | 'sent' | 'paid'; } export interface EverHourExpense { id: number; amount: number; date: string; description: string; } export interface CreateExpenseParams { amount: number; date: string; description?: string; } export interface UpdateExpenseParams { amount?: number; description?: string; } export interface EverHourExpenseCategory { id: number; name: string; } export interface EverHourAssignment { id: number; user: number; project: string; date: string; hours: number; } export interface CreateAssignmentParams { user: number; project: string; date: string; hours: number; } export interface UpdateAssignmentParams { hours?: number; } import type { EverHourApiClient } from '../api/everhour-client.js'; export interface MCPToolDefinition { name: string; description: string; inputSchema: any; handler: (client: EverHourApiClient, args: any) => Promise<any>; readonly: boolean; operationType: 'read' | 'write' | 'delete'; affectedResources: string[]; } export interface MCPTools { [key: string]: MCPToolDefinition; } export interface ReadonlyConfig { enabled: boolean; allowedOperations: ('read' | 'write' | 'delete')[]; blockedTools: string[]; customRules?: (toolName: string, operationType: string) => boolean; } //# sourceMappingURL=everhour.d.ts.map