tdx-asset-create
Create new assets in TeamDynamix by specifying required details like name, status, and optional attributes for IT inventory management.
Instructions
Create a new TDX asset
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| appId | No | TDX app ID (defaults to env TDX_APP_ID) | |
| formId | No | Form ID | |
| statusId | Yes | Status ID | |
| name | Yes | Asset name | |
| serialNumber | No | Serial number | |
| modelId | No | Model ID | |
| manufacturerId | No | Manufacturer ID | |
| supplierId | No | Supplier ID | |
| locationId | No | Location ID | |
| locationRoomId | No | Location room ID | |
| owningDepartmentId | No | Owning department ID | |
| owningCustomerId | No | Owning customer UID | |
| requestingCustomerId | No | Requesting customer UID | |
| requestingDepartmentId | No | Requesting department ID | |
| purchaseCost | No | Purchase cost | |
| acquisitionDate | No | Acquisition date (ISO) | |
| expectedReplacementDate | No | Expected replacement date (ISO) | |
| externalId | No | External ID | |
| attributes | No | Custom attributes |
Implementation Reference
- src/tools/assets.ts:35-65 (handler)The handler logic for 'tdx-asset-create' that prepares the body and calls the client's post method.
async (params) => { const app = params.appId ?? defaultAppId; const body: Record<string, unknown> = { StatusID: params.statusId, Name: params.name, }; if (params.formId !== undefined) body.FormID = params.formId; if (params.serialNumber !== undefined) body.SerialNumber = params.serialNumber; if (params.modelId !== undefined) body.ModelID = params.modelId; if (params.manufacturerId !== undefined) body.ManufacturerID = params.manufacturerId; if (params.supplierId !== undefined) body.SupplierID = params.supplierId; if (params.locationId !== undefined) body.LocationID = params.locationId; if (params.locationRoomId !== undefined) body.LocationRoomID = params.locationRoomId; if (params.owningDepartmentId !== undefined) body.OwningDepartmentID = params.owningDepartmentId; if (params.owningCustomerId !== undefined) body.OwningCustomerID = params.owningCustomerId; if (params.requestingCustomerId !== undefined) body.RequestingCustomerID = params.requestingCustomerId; if (params.requestingDepartmentId !== undefined) body.RequestingDepartmentID = params.requestingDepartmentId; if (params.purchaseCost !== undefined) body.PurchaseCost = params.purchaseCost; if (params.acquisitionDate !== undefined) body.AcquisitionDate = params.acquisitionDate; if (params.expectedReplacementDate !== undefined) body.ExpectedReplacementDate = params.expectedReplacementDate; if (params.externalId !== undefined) body.ExternalID = params.externalId; if (params.attributes) { body.Attributes = params.attributes.map((a) => ({ ID: a.id, Value: String(a.value) })); } try { const result = await client.post(`/${app}/assets`, body); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (e: unknown) { return { content: [{ type: "text", text: String(e) }], isError: true }; } } - src/tools/assets.ts:11-34 (schema)The Zod schema definition for 'tdx-asset-create' inputs.
{ appId: z.number().optional().describe("TDX app ID (defaults to env TDX_APP_ID)"), formId: z.number().optional().describe("Form ID"), statusId: z.number().describe("Status ID"), name: z.string().describe("Asset name"), serialNumber: z.string().optional().describe("Serial number"), modelId: z.number().optional().describe("Model ID"), manufacturerId: z.number().optional().describe("Manufacturer ID"), supplierId: z.number().optional().describe("Supplier ID"), locationId: z.number().optional().describe("Location ID"), locationRoomId: z.number().optional().describe("Location room ID"), owningDepartmentId: z.number().optional().describe("Owning department ID"), owningCustomerId: z.string().optional().describe("Owning customer UID"), requestingCustomerId: z.string().optional().describe("Requesting customer UID"), requestingDepartmentId: z.number().optional().describe("Requesting department ID"), purchaseCost: z.number().optional().describe("Purchase cost"), acquisitionDate: z.string().optional().describe("Acquisition date (ISO)"), expectedReplacementDate: z.string().optional().describe("Expected replacement date (ISO)"), externalId: z.string().optional().describe("External ID"), attributes: z.array(z.object({ id: z.number().describe("Custom attribute ID"), value: z.union([z.string(), z.number(), z.boolean()]).describe("Attribute value"), })).optional().describe("Custom attributes"), }, - src/tools/assets.ts:8-66 (registration)Registration of the 'tdx-asset-create' tool with the MCP server.
server.tool( "tdx-asset-create", "Create a new TDX asset", { appId: z.number().optional().describe("TDX app ID (defaults to env TDX_APP_ID)"), formId: z.number().optional().describe("Form ID"), statusId: z.number().describe("Status ID"), name: z.string().describe("Asset name"), serialNumber: z.string().optional().describe("Serial number"), modelId: z.number().optional().describe("Model ID"), manufacturerId: z.number().optional().describe("Manufacturer ID"), supplierId: z.number().optional().describe("Supplier ID"), locationId: z.number().optional().describe("Location ID"), locationRoomId: z.number().optional().describe("Location room ID"), owningDepartmentId: z.number().optional().describe("Owning department ID"), owningCustomerId: z.string().optional().describe("Owning customer UID"), requestingCustomerId: z.string().optional().describe("Requesting customer UID"), requestingDepartmentId: z.number().optional().describe("Requesting department ID"), purchaseCost: z.number().optional().describe("Purchase cost"), acquisitionDate: z.string().optional().describe("Acquisition date (ISO)"), expectedReplacementDate: z.string().optional().describe("Expected replacement date (ISO)"), externalId: z.string().optional().describe("External ID"), attributes: z.array(z.object({ id: z.number().describe("Custom attribute ID"), value: z.union([z.string(), z.number(), z.boolean()]).describe("Attribute value"), })).optional().describe("Custom attributes"), }, async (params) => { const app = params.appId ?? defaultAppId; const body: Record<string, unknown> = { StatusID: params.statusId, Name: params.name, }; if (params.formId !== undefined) body.FormID = params.formId; if (params.serialNumber !== undefined) body.SerialNumber = params.serialNumber; if (params.modelId !== undefined) body.ModelID = params.modelId; if (params.manufacturerId !== undefined) body.ManufacturerID = params.manufacturerId; if (params.supplierId !== undefined) body.SupplierID = params.supplierId; if (params.locationId !== undefined) body.LocationID = params.locationId; if (params.locationRoomId !== undefined) body.LocationRoomID = params.locationRoomId; if (params.owningDepartmentId !== undefined) body.OwningDepartmentID = params.owningDepartmentId; if (params.owningCustomerId !== undefined) body.OwningCustomerID = params.owningCustomerId; if (params.requestingCustomerId !== undefined) body.RequestingCustomerID = params.requestingCustomerId; if (params.requestingDepartmentId !== undefined) body.RequestingDepartmentID = params.requestingDepartmentId; if (params.purchaseCost !== undefined) body.PurchaseCost = params.purchaseCost; if (params.acquisitionDate !== undefined) body.AcquisitionDate = params.acquisitionDate; if (params.expectedReplacementDate !== undefined) body.ExpectedReplacementDate = params.expectedReplacementDate; if (params.externalId !== undefined) body.ExternalID = params.externalId; if (params.attributes) { body.Attributes = params.attributes.map((a) => ({ ID: a.id, Value: String(a.value) })); } try { const result = await client.post(`/${app}/assets`, body); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (e: unknown) { return { content: [{ type: "text", text: String(e) }], isError: true }; } } );