import { createLogger } from '@sim/logger' import type { ListDomainsParams, ListDomainsResult } from '@/tools/resend/types' import type { ToolConfig } from '@/tools/types' const logger = createLogger('ResendListDomainsTool') export const resendListDomainsTool: ToolConfig = { id: 'resend_list_domains', name: 'List Domains', description: 'List all verified domains in your Resend account', version: '1.0.0', params: { resendApiKey: { type: 'string', required: true, visibility: 'user-only', description: 'Resend API key', }, }, request: { url: 'https://api.resend.com/domains', method: 'GET', headers: (params: ListDomainsParams) => ({ Authorization: `Bearer ${params.resendApiKey}`, 'Content-Type': 'application/json', }), }, transformResponse: async (response: Response): Promise => { const data = await response.json() if (data.message) { logger.error('Resend List Domains API error:', JSON.stringify(data, null, 2)) return { success: false, error: data.message || 'Failed to list domains', output: { domains: [], hasMore: false, }, } } return { success: true, output: { domains: (data.data ?? []).map( (domain: { id: string name: string status: string region: string created_at: string }) => ({ id: domain.id, name: domain.name, status: domain.status, region: domain.region, createdAt: domain.created_at, }) ), hasMore: data.has_more ?? false, }, } }, outputs: { domains: { type: 'array', description: 'Array of domains', items: { type: 'object', properties: { id: { type: 'string', description: 'Domain ID' }, name: { type: 'string', description: 'Domain name' }, status: { type: 'string', description: 'Domain verification status' }, region: { type: 'string', description: 'Region the domain is configured in' }, createdAt: { type: 'string', description: 'Domain creation timestamp' }, }, }, }, hasMore: { type: 'boolean', description: 'Whether there are more domains to retrieve' }, }, }