UNPKG

@chinchillaenterprises/mcp-upwork

Version:

Modular Upwork MCP server for job search and proposal management via Upwork API

53 lines (47 loc) 1.62 kB
import { Tool } from "@modelcontextprotocol/sdk/types.js"; import { GetWorkDiaryArgsSchema } from "../../schemas/upwork.js"; import { UpworkClient } from "../../services/upwork-client.js"; import { z } from "zod"; export const toolDefinition: Tool = { name: "upwork_get_work_diary", description: "Get work diary entries with time tracking data, screenshots, and activity levels", inputSchema: { type: "object", properties: { contractId: { type: "string", description: "Contract ID to get work diary for" }, date: { type: "string", pattern: "^\\d{4}-\\d{2}-\\d{2}$", description: "Date to get work diary for (YYYY-MM-DD format)" }, timezone: { type: "string", description: "Timezone for the work diary (e.g., 'America/New_York')" } }, required: ["contractId", "date"] } }; export const handler = async (args: z.infer<typeof GetWorkDiaryArgsSchema>) => { try { const client = UpworkClient.getInstance(); const params: any = { date: args.date }; const response = await client.get(`/timereports/v1/workdiary/company/${args.contract_id}`, params); return { success: true, workDiary: response.snapshots || response, contractId: args.contract_id, date: args.date, totalHours: response.total_hours || 0, totalActivity: response.total_activity || 0 }; } catch (error: any) { throw new Error(`Failed to get work diary: ${error.message}`); } }; export { GetWorkDiaryArgsSchema as schema } from "../../schemas/upwork.js";