@tomaspavlin/rohlik-mcp
Version:
MCP server for controlling Rohlik.cz grocery shopping website
61 lines • 2.54 kB
JavaScript
export function createUpcomingOrdersTool(createRohlikAPI) {
return {
name: "get_upcoming_orders",
definition: {
title: "Get Upcoming Orders",
description: "Get your scheduled upcoming orders",
inputSchema: {}
},
handler: async () => {
try {
const api = createRohlikAPI();
const upcomingOrders = await api.getUpcomingOrders();
if (!upcomingOrders || (Array.isArray(upcomingOrders) && upcomingOrders.length === 0)) {
return {
content: [
{
type: "text",
text: "No upcoming orders found."
}
]
};
}
const formatUpcomingOrder = (order, index) => {
const deliveryDate = order.deliveryDate || order.scheduledAt || 'Unknown date';
const deliveryTime = order.deliveryTime || order.timeSlot || 'Unknown time';
const totalPrice = order.totalPrice || order.price || 'Unknown price';
const orderNumber = order.orderNumber || order.id || `Order ${index + 1}`;
const status = order.status || 'Scheduled';
const itemCount = order.itemCount || order.items?.length || 'Unknown';
return `${index + 1}. ${orderNumber}
Delivery: ${deliveryDate} ${deliveryTime}
Total: ${totalPrice} CZK
Items: ${itemCount}
Status: ${status}`;
};
const orders = Array.isArray(upcomingOrders) ? upcomingOrders : [upcomingOrders];
const output = `📦 UPCOMING ORDERS (${orders.length} orders):\n\n${orders.map(formatUpcomingOrder).join('\n\n')}`;
return {
content: [
{
type: "text",
text: output
}
]
};
}
catch (error) {
return {
content: [
{
type: "text",
text: error instanceof Error ? error.message : String(error)
}
],
isError: true
};
}
}
};
}
//# sourceMappingURL=upcoming-orders.js.map