import { InferSchema, ToolMetadata } from 'xmcp';
import { z } from 'zod';
const baseUrl = 'https://backend.codingthailand.com';
export const schema = {
barcode: z.string().regex(/^\d{13}$/, 'รหัส barcode ต้องเป็นตัวเลข 13 หลัก').describe('รหัส barcode ของสินค้า (13 หลัก)')
}
export const metadata: ToolMetadata = {
name: 'get_product_by_barcode',
description: 'ค้นหาสินค้าด้วยรหัสบาร์โค้ด',
annotations: {
title: "Get Product By Barcode",
readOnlyHint: true,
destructiveHint: false,
idempotentHint: true,
openWorldHint: true
}
}
export default async function getProductByBarcode({barcode}: InferSchema<typeof schema>) {
try {
const res = await fetch(`${baseUrl}/v2/products/barcode/${barcode}`);
if (res.status === 404) {
return `ไม่พบสินค้าบาร์โค้ด ${barcode} นี้ในระบบ`;
}
if (!res.ok) {
return `เกิดข้อผิดพลาดจาก API: ${res.statusText}`;
}
const product = await res.json();
return {
// structuredContent: product, // optional
content: [
{
type: 'text',
text: `พบสินค้า: ${product.name}\n ราคา: ${product.price} stock: ${product.stock}`
}
]
}
} catch (error) {
return `เกิดข้อผิดพลาด: ${error instanceof Error ? error.message : 'Unknown error'}`;
}
}