create_device
Add a new device to your organization by specifying device type, asset number, and model name. Optionally include additional preset and custom fields.
Instructions
Create a new device for an organization. Requires device type (subtype), asset number, and model name. Can include optional preset fields and custom fields.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| memo | No | Additional notes or memo about the device | |
| fields | Yes | Device field values including preset and custom fields |
Implementation Reference
- src/tools/createDevice.ts:52-64 (handler)The async function that executes the create_device tool logic. It calls makePostApiCall on the AdminaApiClient to POST /devices with the device fields and optional memo.
export async function createDevice(params: CreateDeviceParams) { const client = getClient(); const body: Record<string, unknown> = { fields: params.fields, }; if (params.memo !== undefined) { body.memo = params.memo; } return client.makePostApiCall("/devices", new URLSearchParams(), body); } - src/tools/createDevice.ts:45-48 (schema)The Zod schema (CreateDeviceSchema) that defines the input shape: an optional memo string and a 'fields' object containing preset and custom device fields.
export const CreateDeviceSchema = z.object({ memo: z.string().optional().describe("Additional notes or memo about the device"), fields: DeviceFieldsSchema.describe("Device field values including preset and custom fields"), }); - src/tools/createDevice.ts:5-43 (schema)The DeviceFieldsSchema defines all preset device fields (asset_number, subtype, model_name, serial_number, etc.) and allows custom fields via catchall.
const DeviceFieldsSchema = z .object({ // Required preset fields "preset.asset_number": z.string().describe("Asset number (REQUIRED)"), "preset.subtype": z .enum(["desktop_pc", "laptop_pc", "tablet_pc", "phone", "monitor", "server", "peripheral_device", "other"]) .describe("Device subtype (REQUIRED)"), "preset.model_name": z.string().describe("Model name (REQUIRED)"), // Optional preset fields "preset.serial_number": z.string().optional().describe("Serial number"), "preset.model_number": z.string().optional().describe("Model number"), "preset.memory": z.string().optional().describe("Memory specification"), "preset.hdd_ssd": z.string().optional().describe("Storage specification"), "preset.cpu": z.string().optional().describe("CPU specification"), "preset.os": z.string().optional().describe("Operating system"), "preset.size": z.string().optional().describe("Size/dimensions"), "preset.manufacturer": z.string().optional().describe("Manufacturer name"), "preset.supplier": z.string().optional().describe("Supplier name"), "preset.procurement_method": z .enum(["purchase", "lease", "rental", "other"]) .optional() .describe("Procurement method"), "preset.purchase_date": z.string().optional().describe("Purchase date (YYYY-MM-DD format)"), "preset.purchase_cost": z.number().optional().describe("Purchase cost"), "preset.warranty_period": z.string().optional().describe("Warranty period"), "preset.decommission_date": z.string().optional().describe("Decommission date (YYYY-MM-DD format)"), "preset.scheduled_return_date": z.string().optional().describe("Scheduled return date (YYYY-MM-DD format)"), "preset.fixed_asset": z.enum(["yes", "no"]).optional().describe("Fixed asset status"), "preset.phone_number": z.string().optional().describe("Phone number (for phone devices)"), "preset.sim_number": z.string().optional().describe("SIM number (for phone devices)"), "preset.mobile_plan": z.string().optional().describe("Mobile plan (for phone devices)"), "preset.hostname": z.string().optional().describe("Hostname"), "preset.version": z.string().optional().describe("Version"), "preset.keyboard_layout": z.enum(["us", "uk", "jis", "other"]).optional().describe("Keyboard layout"), "preset.usage_start_date": z.string().optional().describe("Usage start date (YYYY-MM-DD format)"), "preset.usage_end_date": z.string().optional().describe("Usage end date (YYYY-MM-DD format)"), }) .catchall(z.union([z.string(), z.number()]).optional()); // Allow custom fields like "custom.xxx" - src/index.ts:118-122 (registration)Registers the tool 'create_device' in the ListToolsRequestSchema handler with its description and inputSchema derived from CreateDeviceSchema.
{ name: "create_device", description: "Create a new device for an organization. Requires device type (subtype), asset number, and model name. Can include optional preset fields and custom fields.", inputSchema: zodToJsonSchema(CreateDeviceSchema), - src/index.ts:300-300 (registration)Maps the tool name 'create_device' to its handler in the toolHandlers record, parsing input with CreateDeviceSchema before calling createDevice.
create_device: async (input) => createDevice(CreateDeviceSchema.parse(input)),