tools.push(   new DynamicStructuredTool({     name: 'search_contacts',     description:       'Search for contacts by name, email, or phone number. Returns a list of matching contacts.',     schema: z.object({       searchTerm: z.string().describe('The search term to find contacts'),       limit: z         .number()         .optional()         .default(10)         .describe('Maximum number of results'),     }),     func: async ({ searchTerm, limit }) => {       const result = await services.contactAccess.queryContacts({         filter: searchTerm,         take: limit,       });       return JSON.stringify({         success: true,         total: result.total,         contacts: result.items.map((c) => ({           id: c.id,           name: c.item.name,           email: c.item.email,         })),       });     },   }) );