@chinchillaenterprises/mcp-upwork
Version:
Modular Upwork MCP server for job search and proposal management via Upwork API
48 lines (42 loc) • 1.44 kB
text/typescript
import { Tool } from "@modelcontextprotocol/sdk/types.js";
import { PurchaseConnectsArgsSchema } from "../../schemas/upwork.js";
import { UpworkClient } from "../../services/upwork-client.js";
export const purchaseConnectsToolDefinition: Tool = {
name: "upwork_purchase_connects",
description: "Purchase additional connects",
inputSchema: {
type: "object",
properties: {
quantity: { type: "number", minimum: 10, maximum: 200, description: "Number of connects to purchase (increments of 10)" }
},
required: ["quantity"]
}
};
export async function purchaseConnectsHandler(args: unknown, upworkClient: UpworkClient) {
const validatedArgs = PurchaseConnectsArgsSchema.parse(args);
try {
const purchaseData = {
quantity: validatedArgs.quantity
};
const response = await upworkClient.getClient().post('/profiles/v1/contractors/me/connects/purchase', purchaseData);
return {
content: [
{
type: "text",
text: JSON.stringify({
success: true,
purchase: response.data,
message: `Successfully purchased ${validatedArgs.quantity} connects`
}, null, 2)
}
]
};
} catch (error) {
throw upworkClient.handleError(error);
}
}
export const purchaseConnectsTool = {
definition: purchaseConnectsToolDefinition,
handler: purchaseConnectsHandler,
schema: PurchaseConnectsArgsSchema
};