import { Tool } from "@modelcontextprotocol/sdk/types.js"; import { SendMessageArgsSchema, SendMessageArgs } from "../../schemas/upwork.js"; import { UpworkClient } from "../../services/upwork-client.js"; export const sendMessageToolDefinition: Tool = { name: "upwork_send_message", description: "Send a message to another user by creating a room story (message) in a room", inputSchema: { type: "object", properties: { room_id: { type: "string", description: "Room ID where to send the message" }, message: { type: "string", description: "Message content to send" } }, required: ["room_id", "message"] } }; export async function sendMessageHandler(args: unknown, upworkClient: UpworkClient) { const validatedArgs = SendMessageArgsSchema.parse(args); try { // Use GraphQL mutation to create a room story (message) const createRoomStoryMutation = ` mutation createRoomStoryV2($input: RoomStoryCreateInputV2!) { createRoomStoryV2(input: $input) { id createdDateTime message user { id name } room { id roomName } } } `; const variables = { input: { roomId: validatedArgs.room_id, message: validatedArgs.message } }; const response = await upworkClient.graphqlQuery(createRoomStoryMutation, variables); return { content: [ { type: "text", text: JSON.stringify({ success: true, story: response.data.createRoomStoryV2, status: "Message sent successfully" }, null, 2) } ] }; } catch (error) { throw upworkClient.handleError(error); } } export const sendMessageTool = { definition: sendMessageToolDefinition, handler: sendMessageHandler, schema: SendMessageArgsSchema };