UNPKG

@ironclads/namecheap-mcp

Version:

MCP server for Namecheap API integration - domain management, DNS, and domain suggestions

148 lines 4.98 kB
import { z } from 'zod'; // Namecheap API Configuration export const NamecheapConfigSchema = z.object({ apiUser: z.string(), apiKey: z.string(), username: z.string(), clientIp: z.string().optional(), sandbox: z.boolean().default(false), }); // Domain check response export const DomainCheckResultSchema = z.object({ domain: z.string(), available: z.boolean(), premium: z.boolean().optional(), price: z.string().optional(), }); // Domain info response export const DomainInfoSchema = z.object({ domain: z.string(), owner: z.string(), registrar: z.string(), created: z.string(), expires: z.string(), nameservers: z.array(z.string()), }); // Domain suggestion types export const DomainSuggestionSchema = z.object({ domain: z.string(), available: z.boolean(), premium: z.boolean().optional(), price: z.string().optional(), suggestion_type: z.enum(['exact', 'prefix', 'suffix', 'alternate', 'related']), score: z.number().min(0).max(100).optional(), }); export const DomainSuggestionOptionsSchema = z.object({ keyword: z.string(), tlds: z.array(z.string()).default(['com', 'net', 'org', 'io', 'co']), maxSuggestions: z.number().min(1).max(50).default(10), includeHyphens: z.boolean().default(false), includeNumbers: z.boolean().default(false), minLength: z.number().min(1).max(20).default(3), maxLength: z.number().min(5).max(63).default(15), }); // Domain list response export const DomainListItemSchema = z.object({ domain: z.string(), id: z.string(), user: z.string(), created: z.string(), expires: z.string(), isExpired: z.boolean(), isLocked: z.boolean(), autoRenew: z.boolean(), whoisGuard: z.string(), }); export const DomainListResponseSchema = z.object({ domains: z.array(DomainListItemSchema), paging: z.object({ totalItems: z.number(), currentPage: z.number(), pageSize: z.number(), }), }); export const DomainListOptionsSchema = z.object({ listType: z.string().optional().default('ALL'), page: z.number().min(1).optional().default(1), pageSize: z.number().min(10).max(100).optional().default(20), sortBy: z.enum(['NAME', 'NAME_DESC', 'EXPIREDATE', 'EXPIREDATE_DESC', 'CREATEDATE', 'CREATEDATE_DESC']).optional(), searchTerm: z.string().optional(), }); // API Response wrapper export const NamecheapResponseSchema = z.object({ Status: z.string(), Errors: z.array(z.string()).optional(), CommandResponse: z.any(), }); // Domain contacts types export const DomainContactSchema = z.object({ OrganizationName: z.string().optional(), FirstName: z.string(), LastName: z.string(), Address1: z.string(), Address2: z.string().optional(), City: z.string(), StateProvince: z.string(), PostalCode: z.string(), Country: z.string(), Phone: z.string(), EmailAddress: z.string(), }); export const DomainContactsSchema = z.object({ registrant: DomainContactSchema, tech: DomainContactSchema, admin: DomainContactSchema, auxBilling: DomainContactSchema, }); // TLD List types export const TldInfoSchema = z.object({ name: z.string(), nonRealTime: z.boolean().optional(), minRegisterYears: z.number().optional(), maxRegisterYears: z.number().optional(), minRenewYears: z.number().optional(), maxRenewYears: z.number().optional(), minTransferYears: z.number().optional(), maxTransferYears: z.number().optional(), isApiRegisterable: z.boolean().optional(), isApiRenewable: z.boolean().optional(), isApiTransferrable: z.boolean().optional(), isEppRequired: z.boolean().optional(), isDisableModContact: z.boolean().optional(), isDisableWGAllot: z.boolean().optional(), isIncludeInExtendedSearchOnly: z.boolean().optional(), categories: z.array(z.string()).optional(), }); // Domain lock status types export const DomainLockStatusSchema = z.object({ domain: z.string(), registrarLock: z.boolean(), }); // Users API types export const UserBalancesSchema = z.object({ availableBalance: z.number(), accountBalance: z.number(), earnedAmount: z.number(), withdrawableAmount: z.number(), fundsRequiredForAutoRenew: z.number(), }); export const ProductPricingSchema = z.object({ productType: z.string(), productCategory: z.string(), product: z.string(), duration: z.number(), durationType: z.string(), price: z.number(), regularPrice: z.number(), yourPrice: z.number(), promotionPrice: z.number().optional(), currency: z.string(), }); export const PricingOptionsSchema = z.object({ productType: z.enum(['DOMAIN', 'SSL', 'HOSTING', 'WHOISGUARD']), productCategory: z.string().optional(), promotionCode: z.string().optional(), actionType: z.enum(['REGISTER', 'RENEW', 'REACTIVATE', 'TRANSFER']).optional(), productName: z.string().optional(), }); //# sourceMappingURL=types.js.map