UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

433 lines 28.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resetDiskPasswordSchema = exports.cloneDiskSchema = exports.applyFirewallsSchema = exports.getLinodeFirewallsSchema = exports.deleteLinodeIPSchema = exports.updateLinodeIPSchema = exports.getLinodeIPSchema = exports.linodeAllocateIPSchema = exports.getLinodeIPsSchema = exports.restoreBackupSchema = exports.enableBackupsSchema = exports.cancelBackupsSchema = exports.createSnapshotSchema = exports.getBackupSchema = exports.getBackupsSchema = exports.backupSchema = exports.getKernelSchema = exports.listKernelsSchema = exports.resizeLinodeDiskSchema = exports.deleteLinodeDiskSchema = exports.updateLinodeDiskSchema = exports.createLinodeDiskSchema = exports.getLinodeDiskSchema = exports.getLinodeDisksSchema = exports.deleteLinodeConfigSchema = exports.updateLinodeConfigSchema = exports.createLinodeConfigSchema = exports.getLinodeConfigSchema = exports.getLinodeConfigsSchema = exports.rescueInstanceSchema = exports.rebuildInstanceSchema = exports.cloneInstanceSchema = exports.resizeInstanceSchema = exports.deleteInstanceSchema = exports.shutdownInstanceSchema = exports.bootInstanceSchema = exports.rebootInstanceSchema = exports.updateInstanceSchema = exports.createInstanceSchema = exports.getInstanceSchema = exports.listInstancesSchema = exports.kernelsResponseSchema = exports.linodeDisksResponseSchema = exports.linodeConfigsResponseSchema = exports.linodeInstancesResponseSchema = exports.kernelSchema = exports.linodeDiskSchema = exports.linodeConfigSchema = exports.linodeInstanceSchema = exports.configInterfaceSchema = void 0; exports.getLinodeVolumesSchema = exports.getLinodeNodeBalancersSchema = exports.getInstanceTypeSchema = exports.listInstanceTypesSchema = exports.reorderConfigInterfacesSchema = exports.deleteConfigInterfaceSchema = exports.updateConfigInterfaceSchema = exports.createConfigInterfaceSchema = exports.getConfigInterfaceSchema = exports.getConfigInterfacesSchema = exports.getLinodeStatsByDateSchema = exports.getLinodeStatsSchema = exports.getMonthlyTransferSchema = exports.getNetworkTransferSchema = exports.resetRootPasswordSchema = exports.mutateLinodeSchema = exports.migrateLinodeSchema = void 0; const zod_1 = require("zod"); const schemas_1 = require("../common/schemas"); // Config Interface schema (moved to the top for dependency resolution) exports.configInterfaceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the interface'), label: zod_1.z.string().describe('The label for the interface'), purpose: zod_1.z.enum(['public', 'vlan', 'vpc']).describe('The purpose of the interface (public, vlan, vpc)'), ipam_address: zod_1.z.string().nullable().describe('The IPAM address for the interface'), primary: zod_1.z.boolean().optional().describe('Whether this is the primary interface'), active: zod_1.z.boolean().optional().describe('Whether the interface is active'), subnet_id: zod_1.z.number().optional().describe('The subnet ID for VPC interfaces'), vpc_id: zod_1.z.number().optional().describe('The VPC ID for VPC interfaces'), ipv4: zod_1.z.object({ vpc: zod_1.z.string().optional().describe('The IPv4 address for VPC interfaces'), nat_1_1: zod_1.z.string().optional().describe('The IPv4 1:1 NAT address') }).optional() }); // Base types const linodeSpecsSchema = zod_1.z.object({ disk: zod_1.z.number().describe('The amount of storage space in MB'), memory: zod_1.z.number().describe('The amount of RAM in MB'), vcpus: zod_1.z.number().describe('The number of virtual CPUs'), transfer: zod_1.z.number().describe('The amount of network transfer available in GB') }); const linodeAlertsSchema = zod_1.z.object({ cpu: zod_1.z.number().describe('CPU usage threshold percentage (0-400)'), io: zod_1.z.number().describe('Disk IO threshold in ops/sec'), network_in: zod_1.z.number().describe('Incoming network traffic threshold in Mbps'), network_out: zod_1.z.number().describe('Outgoing network traffic threshold in Mbps'), transfer_quota: zod_1.z.number().describe('Network transfer quota threshold in GB') }); const linodeBackupsSchema = zod_1.z.object({ enabled: zod_1.z.boolean().describe('Whether backups are enabled'), schedule: zod_1.z.object({ day: zod_1.z.string().describe('The day that backups are taken'), window: zod_1.z.string().describe('The window during which backups are taken') }), last_successful: zod_1.z.string().nullable().describe('The last successful backup time') }); // Response schemas exports.linodeInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The unique identifier for this Linode'), label: zod_1.z.string().describe('The Linode\'s display label'), region: zod_1.z.string().describe('The region where the Linode is located'), type: zod_1.z.string().describe('The Linode plan type'), status: zod_1.z.string().describe('The current status of the Linode'), ipv4: zod_1.z.array(zod_1.z.string()).describe('IPv4 addresses for this Linode'), ipv6: zod_1.z.string().describe('IPv6 addresses for this Linode'), created: zod_1.z.string().describe('When this Linode was created'), updated: zod_1.z.string().describe('When this Linode was last updated'), hypervisor: zod_1.z.string().describe('The virtualization software used for this Linode'), specs: linodeSpecsSchema, alerts: linodeAlertsSchema, backups: linodeBackupsSchema, image: zod_1.z.string().nullable().describe('The image used by this Linode'), group: zod_1.z.string().describe('The display group of this Linode'), tags: zod_1.z.array(zod_1.z.string()).describe('Tags applied to this Linode'), host_uuid: zod_1.z.string().describe('The UUID of the host for this Linode'), watchdog_enabled: zod_1.z.boolean().describe('Whether the watchdog service is enabled') }); exports.linodeConfigSchema = zod_1.z.object({ id: zod_1.z.number().describe('The config ID'), label: zod_1.z.string().describe('The config\'s label'), comments: zod_1.z.string().describe('User-supplied comments about this configuration'), kernel: zod_1.z.string().describe('The kernel used in this configuration'), memory_limit: zod_1.z.number().describe('The memory limit in MB for this configuration'), root_device: zod_1.z.string().describe('The root device for this configuration'), devices: zod_1.z.record(zod_1.z.string()).describe('The devices attached to this configuration'), initrd: zod_1.z.string().nullable().describe('The initial ramdisk file used for this configuration'), created: zod_1.z.string().describe('When this configuration was created'), updated: zod_1.z.string().describe('When this configuration was last updated'), helpers: zod_1.z.object({ updatedb_disabled: zod_1.z.boolean().describe('Whether updatedb is disabled in this configuration'), distro: zod_1.z.boolean().describe('Whether the distro helper is enabled'), network: zod_1.z.boolean().describe('Whether the network helper is enabled'), modules_dep: zod_1.z.boolean().describe('Whether the modules dependency helper is enabled') }), interfaces: zod_1.z.array(exports.configInterfaceSchema).describe('Network interfaces for this configuration') }); exports.linodeDiskSchema = zod_1.z.object({ id: zod_1.z.number().describe('The disk ID'), label: zod_1.z.string().describe('The disk\'s label'), status: zod_1.z.string().describe('The disk\'s status'), size: zod_1.z.number().describe('The disk size in MB'), filesystem: zod_1.z.string().describe('The disk filesystem type'), created: zod_1.z.string().describe('When this disk was created'), updated: zod_1.z.string().describe('When this disk was last updated') }); exports.kernelSchema = zod_1.z.object({ id: zod_1.z.string().describe('The kernel ID'), label: zod_1.z.string().describe('The kernel\'s label'), version: zod_1.z.string().describe('The kernel\'s version'), kvm: zod_1.z.boolean().describe('Whether this kernel supports KVM virtualization'), architecture: zod_1.z.string().describe('The architecture this kernel supports'), pvops: zod_1.z.boolean().describe('Whether this kernel supports paravirtualized operations'), deprecated: zod_1.z.boolean().describe('Whether this kernel is deprecated'), built: zod_1.z.string().describe('When this kernel was built') }); // List responses exports.linodeInstancesResponseSchema = (0, schemas_1.paginatedResponseSchema)(exports.linodeInstanceSchema); exports.linodeConfigsResponseSchema = (0, schemas_1.paginatedResponseSchema)(exports.linodeConfigSchema); exports.linodeDisksResponseSchema = (0, schemas_1.paginatedResponseSchema)(exports.linodeDiskSchema); exports.kernelsResponseSchema = (0, schemas_1.paginatedResponseSchema)(exports.kernelSchema); // Request schemas exports.listInstancesSchema = schemas_1.pagingParamsSchema; exports.getInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance') }); exports.createInstanceSchema = zod_1.z.object({ region: zod_1.z.string().describe('The region where the Linode will be created'), type: zod_1.z.string().describe('The Linode type ID (e.g., g6-nanode-1, g6-standard-2)'), label: zod_1.z.string().optional().describe('The label for the Linode. Must be unique among your Linodes.'), group: zod_1.z.string().optional().describe('The group for the Linode'), root_pass: zod_1.z.string().optional().describe('The root password for the Linode. Must be 7-128 characters and meet the strength requirements. Should include uppercase, lowercase, numbers, and special characters.'), image: zod_1.z.string().optional().describe('The image ID to deploy (e.g., linode/debian11, linode/ubuntu22.04)'), authorized_keys: zod_1.z.array(zod_1.z.string()).optional().describe('SSH public keys to deploy to the root user (recommended for better security)'), authorized_users: zod_1.z.array(zod_1.z.string()).optional().describe('Linode usernames who can deploy their SSH keys to this Linode'), backups_enabled: zod_1.z.boolean().optional().describe('Whether backups are enabled'), booted: zod_1.z.boolean().optional().describe('Whether the Linode should be booted after creation'), private_ip: zod_1.z.boolean().optional().describe('Whether to assign a private IP'), tags: schemas_1.tagSchema, firewall_id: zod_1.z.number().optional().describe('ID of the firewall to assign this Linode to') }); exports.updateInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), label: zod_1.z.string().optional().describe('The label for the Linode'), group: zod_1.z.string().optional().describe('The group for the Linode'), tags: schemas_1.tagSchema, watchdog_enabled: zod_1.z.boolean().optional().describe('Whether the watchdog service is enabled'), alerts: zod_1.z.object({ cpu: zod_1.z.number().optional().describe('CPU usage threshold percentage (0-400)'), io: zod_1.z.number().optional().describe('Disk IO threshold in ops/sec'), network_in: zod_1.z.number().optional().describe('Incoming network traffic threshold in Mbps'), network_out: zod_1.z.number().optional().describe('Outgoing network traffic threshold in Mbps'), transfer_quota: zod_1.z.number().optional().describe('Network transfer quota threshold in GB') }).optional() }); exports.rebootInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), config_id: zod_1.z.number().optional().describe('The ID of the configuration profile to boot into') }); exports.bootInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), config_id: zod_1.z.number().optional().describe('The ID of the configuration profile to boot into') }); exports.shutdownInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance') }); exports.deleteInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance') }); exports.resizeInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), type: zod_1.z.string().describe('The new Linode type ID'), allow_auto_disk_resize: zod_1.z.boolean().optional().describe('Whether to automatically resize disks (default: true)') }); exports.cloneInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance to clone'), region: zod_1.z.string().optional().describe('The region where the new Linode will be created'), type: zod_1.z.string().optional().describe('The new Linode type ID'), label: zod_1.z.string().optional().describe('The label for the new Linode'), group: zod_1.z.string().optional().describe('The group for the new Linode'), backups_enabled: zod_1.z.boolean().optional().describe('Whether backups are enabled for the new Linode'), private_ip: zod_1.z.boolean().optional().describe('Whether to assign a private IP to the new Linode'), tags: schemas_1.tagSchema }); exports.rebuildInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), image: zod_1.z.string().describe('The image ID to rebuild with (e.g., linode/debian11, linode/ubuntu22.04)'), root_pass: zod_1.z.string().describe('The root password for the rebuilt Linode. Must be 7-128 characters and meet the strength requirements. Should include uppercase, lowercase, numbers, and special characters.'), authorized_keys: zod_1.z.array(zod_1.z.string()).optional().describe('SSH public keys to deploy to the root user (recommended for better security)'), authorized_users: zod_1.z.array(zod_1.z.string()).optional().describe('Linode usernames who can deploy their SSH keys to this Linode'), stackscript_id: zod_1.z.number().optional().describe('StackScript ID to use for deployment. Run List StackScripts to get available IDs.'), stackscript_data: zod_1.z.record(zod_1.z.string()).optional().describe('StackScript data to use for deployment. Must be valid JSON with less than 65,535 characters.'), booted: zod_1.z.boolean().optional().describe('Whether the Linode should be booted after rebuild') }); exports.rescueInstanceSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), devices: zod_1.z.record(zod_1.z.number()).describe('Block device assignments for /dev/sdX devices') }); // Config operations exports.getLinodeConfigsSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), ...schemas_1.pagingParamsSchema.shape }); exports.getLinodeConfigSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), configId: zod_1.z.number().describe('The ID of the configuration profile') }); exports.createLinodeConfigSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), label: zod_1.z.string().describe('The label for the configuration profile'), kernel: zod_1.z.string().optional().describe('The kernel to use'), comments: zod_1.z.string().optional().describe('User comments for this configuration'), memory_limit: zod_1.z.number().optional().describe('The memory limit in MB'), root_device: zod_1.z.string().optional().describe('The root device'), devices: zod_1.z.record(zod_1.z.string()).optional().describe('Devices to map to this configuration'), initrd: zod_1.z.string().nullable().optional().describe('The initial ramdisk file'), helpers: zod_1.z.object({ updatedb_disabled: zod_1.z.boolean().optional().describe('Whether updatedb is disabled'), distro: zod_1.z.boolean().optional().describe('Whether the distro helper is enabled'), network: zod_1.z.boolean().optional().describe('Whether the network helper is enabled'), modules_dep: zod_1.z.boolean().optional().describe('Whether the modules dependency helper is enabled') }).optional(), interfaces: zod_1.z.array(exports.configInterfaceSchema).optional().describe('Network interfaces for this configuration') }); exports.updateLinodeConfigSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), configId: zod_1.z.number().describe('The ID of the configuration profile'), ...exports.createLinodeConfigSchema.omit({ linodeId: true }).partial().shape }); exports.deleteLinodeConfigSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), configId: zod_1.z.number().describe('The ID of the configuration profile') }); // Disk operations exports.getLinodeDisksSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), ...schemas_1.pagingParamsSchema.shape }); exports.getLinodeDiskSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), diskId: zod_1.z.number().describe('The ID of the disk') }); exports.createLinodeDiskSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), label: zod_1.z.string().describe('The label for the disk'), size: zod_1.z.number().describe('The size of the disk in MB'), filesystem: zod_1.z.string().optional().describe('The filesystem type for the disk (e.g., ext4, raw, swap)'), read_only: zod_1.z.boolean().optional().describe('Whether the disk is read-only'), image: zod_1.z.string().optional().describe('The image ID to use (e.g., linode/debian11, linode/ubuntu22.04)'), root_pass: zod_1.z.string().optional().describe('The root password to use. Required when deploying an image. Must be 7-128 characters and meet the strength requirements. Should include uppercase, lowercase, numbers, and special characters.'), authorized_keys: zod_1.z.array(zod_1.z.string()).optional().describe('SSH public keys to deploy to the root user (recommended for better security)'), authorized_users: zod_1.z.array(zod_1.z.string()).optional().describe('Linode usernames who can deploy their SSH keys to this disk'), stackscript_id: zod_1.z.number().optional().describe('StackScript ID to use for deployment. Run List StackScripts to get available IDs.'), stackscript_data: zod_1.z.record(zod_1.z.string()).optional().describe('StackScript data to use for deployment. Must be valid JSON with less than 65,535 characters.') }); exports.updateLinodeDiskSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), diskId: zod_1.z.number().describe('The ID of the disk'), label: zod_1.z.string().optional().describe('The new label for the disk'), size: zod_1.z.number().optional().describe('The new size of the disk in MB') }); exports.deleteLinodeDiskSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), diskId: zod_1.z.number().describe('The ID of the disk') }); exports.resizeLinodeDiskSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), diskId: zod_1.z.number().describe('The ID of the disk'), size: zod_1.z.number().describe('The new size of the disk in MB') }); // Kernel operations exports.listKernelsSchema = schemas_1.pagingParamsSchema; exports.getKernelSchema = zod_1.z.object({ id: zod_1.z.string().describe('The ID of the kernel') }); // Backup operations exports.backupSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the backup'), label: zod_1.z.string().describe('The label of the backup'), status: zod_1.z.string().describe('The status of the backup'), type: zod_1.z.enum(['auto', 'snapshot']).describe('The type of backup'), region: zod_1.z.string().describe('The region where the backup is stored'), created: zod_1.z.string().describe('When the backup was created'), updated: zod_1.z.string().describe('When the backup was last updated'), finished: zod_1.z.string().describe('When the backup finished'), configs: zod_1.z.array(zod_1.z.string()).describe('The configs included in the backup'), disks: zod_1.z.record(zod_1.z.string()).describe('The disks included in the backup'), available: zod_1.z.boolean().describe('Whether the backup is available for restore') }); exports.getBackupsSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance') }); exports.getBackupSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), backupId: zod_1.z.number().describe('The ID of the backup') }); exports.createSnapshotSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), label: zod_1.z.string().describe('The label for the snapshot') }); exports.cancelBackupsSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance') }); exports.enableBackupsSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance') }); exports.restoreBackupSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), backupId: zod_1.z.number().describe('The ID of the backup'), linode_id: zod_1.z.number().optional().describe('Target Linode ID to restore to (defaults to the source Linode)'), overwrite: zod_1.z.boolean().optional().describe('Whether to overwrite the target Linode') }); // IP operations exports.getLinodeIPsSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance') }); exports.linodeAllocateIPSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), type: zod_1.z.enum(['ipv4', 'ipv6']).describe('The type of IP address to allocate'), public: zod_1.z.boolean().describe('Whether the IP address should be public') }); exports.getLinodeIPSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), address: zod_1.z.string().describe('The IP address') }); exports.updateLinodeIPSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), address: zod_1.z.string().describe('The IP address'), rdns: zod_1.z.string().nullable().describe('The reverse DNS entry') }); exports.deleteLinodeIPSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), address: zod_1.z.string().describe('The IP address') }); // Firewall operations exports.getLinodeFirewallsSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), ...schemas_1.pagingParamsSchema.shape }); exports.applyFirewallsSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance') }); // Disk special operations exports.cloneDiskSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), diskId: zod_1.z.number().describe('The ID of the disk'), label: zod_1.z.string().optional().describe('The label for the cloned disk') }); exports.resetDiskPasswordSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), diskId: zod_1.z.number().describe('The ID of the disk'), password: zod_1.z.string().describe('The new root password') }); // Migration and upgrades exports.migrateLinodeSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), region: zod_1.z.string().optional().describe('The target region for the migration') }); exports.mutateLinodeSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance') }); // Reset root password exports.resetRootPasswordSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), root_pass: zod_1.z.string().describe('The new root password') }); // Transfer stats exports.getNetworkTransferSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance') }); exports.getMonthlyTransferSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), year: zod_1.z.string().describe('The year (YYYY format)'), month: zod_1.z.string().describe('The month (MM format)') }); // Stats operations exports.getLinodeStatsSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance') }); exports.getLinodeStatsByDateSchema = zod_1.z.object({ id: zod_1.z.number().describe('The ID of the Linode instance'), year: zod_1.z.string().describe('The year (YYYY format)'), month: zod_1.z.string().describe('The month (MM format)') }); // Config Interface operations exports.getConfigInterfacesSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), configId: zod_1.z.number().describe('The ID of the configuration profile'), ...schemas_1.pagingParamsSchema.shape }); exports.getConfigInterfaceSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), configId: zod_1.z.number().describe('The ID of the configuration profile'), interfaceId: zod_1.z.number().describe('The ID of the interface') }); exports.createConfigInterfaceSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), configId: zod_1.z.number().describe('The ID of the configuration profile'), purpose: zod_1.z.enum(['public', 'vlan', 'vpc']).describe('The purpose of the interface (public, vlan, vpc)'), label: zod_1.z.string().optional().describe('The label for the interface'), ipam_address: zod_1.z.string().optional().describe('The IPAM address for the interface'), primary: zod_1.z.boolean().optional().describe('Whether this is the primary interface'), subnet_id: zod_1.z.number().optional().describe('The subnet ID for VPC interfaces'), vpc_id: zod_1.z.number().optional().describe('The VPC ID for VPC interfaces'), ipv4: zod_1.z.object({ vpc: zod_1.z.string().optional().describe('The IPv4 address for VPC interfaces'), nat_1_1: zod_1.z.string().optional().describe('The IPv4 1:1 NAT address') }).optional() }); exports.updateConfigInterfaceSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), configId: zod_1.z.number().describe('The ID of the configuration profile'), interfaceId: zod_1.z.number().describe('The ID of the interface'), label: zod_1.z.string().optional().describe('The label for the interface'), ipam_address: zod_1.z.string().optional().describe('The IPAM address for the interface'), primary: zod_1.z.boolean().optional().describe('Whether this is the primary interface'), ipv4: zod_1.z.object({ vpc: zod_1.z.string().optional().describe('The IPv4 address for VPC interfaces'), nat_1_1: zod_1.z.string().optional().describe('The IPv4 1:1 NAT address') }).optional() }); exports.deleteConfigInterfaceSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), configId: zod_1.z.number().describe('The ID of the configuration profile'), interfaceId: zod_1.z.number().describe('The ID of the interface') }); exports.reorderConfigInterfacesSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), configId: zod_1.z.number().describe('The ID of the configuration profile'), ids: zod_1.z.array(zod_1.z.number()).describe('The ordered list of interface IDs') }); // Instance Types exports.listInstanceTypesSchema = schemas_1.pagingParamsSchema; exports.getInstanceTypeSchema = zod_1.z.object({ id: zod_1.z.string().describe('The ID of the Linode type') }); // NodeBalancer operations for instance exports.getLinodeNodeBalancersSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), ...schemas_1.pagingParamsSchema.shape }); // Volume operations for instance exports.getLinodeVolumesSchema = zod_1.z.object({ linodeId: zod_1.z.number().describe('The ID of the Linode instance'), ...schemas_1.pagingParamsSchema.shape }); //# sourceMappingURL=schemas.js.map