import { Injectable } from '@nestjs/common';import { Customer, CustomerService, Permission, RequestContext } from '@vendure/core';import { listOptions, McpTool, McpToolHandler, page, paginationFields } from '@vendure/mcp-sdk';import { z } from 'zod';const listCustomersInput = z.strictObject({ ...paginationFields('customers') });type ListCustomersInput = z.infer<typeof listCustomersInput>;@McpTool({ name: 'list_customers', toolset: 'admin', description: 'List customer records.', permissions: [Permission.ReadCustomer], behavior: 'readonly', inputSchema: listCustomersInput,})@Injectable()export class ListCustomersTool implements McpToolHandler<ListCustomersInput> { constructor(private readonly customerService: CustomerService) {} async execute(ctx: RequestContext, input: ListCustomersInput) { const result = await this.customerService.findAll(ctx, listOptions<Customer>(input)); return page( result.items.map(customer => ({ id: customer.id, emailAddress: customer.emailAddress })), result.totalItems, input, ); }}