Skip to main content
Glama

Create Asset

hudu_create_asset

Creates a new asset (server, workstation, etc.) in a Hudu company. Provide company_id and asset_layout_id to define custom fields; returns the created asset with its assigned id.

Instructions

Create an asset inside a company. An asset is any documented thing that belongs to a company — a server, a workstation, a firewall, a licence, a contact. The asset layout it was created from decides which custom fields it carries.

Every asset belongs to exactly one company and there is no global create route, so company_id is required. Choose asset_layout_id before calling: the layout fixes which custom fields the asset can hold and Hudu will not infer one. hudu_list_asset_layouts lists the layouts and hudu_get_asset_layout shows the field labels a layout defines, which are the keys custom_fields expects.

Returns the created asset, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails, including when a custom field label does not exist on the chosen layout.

Operation class: Create.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name of the asset, e.g. a hostname.
company_idYesNumeric id of the company that owns this asset. Not optional and not guessable — an asset id belonging to company A returns 404 under company B, indistinguishable from a deleted asset.
primary_mailNoPrimary email address associated with the asset.
custom_fieldsNoValues for the custom fields the asset layout defines, as an array holding one object that maps field label to value: [{"brand": "Apple", "model": "MacBook Pro"}]. Each key is a layout field label in snake_case — lower-cased with spaces replaced by underscores, so a field labelled "Serial Number" is the key "serial_number" — and Hudu requires each key to match a field that already exists on the layout given by asset_layout_id. Call hudu_get_asset_layout first to read the exact labels. Values are documented as strings, so send numbers and dates as strings ("42", "2026-01-01"). Note the asymmetry with reads: a fetched asset returns this data under `fields` as {id, label, value, position} objects, which is not a shape this parameter accepts — rebuild the label/value pairs yourself rather than sending back what you read.
primary_modelNoHardware or product model.
primary_serialNoSerial number shown at the top of the asset.
asset_layout_idYesNumeric id of the asset layout to build this asset from. The layout decides which custom fields exist; list the choices with hudu_list_asset_layouts.
primary_manufacturerNoManufacturer or vendor name.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read, non-idempotent operation, and the description adds meaningful behavior: it returns the created asset with its id, and Hudu returns 422 naming the offending field on validation failure, including nonexistent custom field labels. It also details the custom_fields shape mismatch with reads, which is valuable beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is around 170 words in three focused paragraphs. It front-loads the purpose and prerequisite, then gives return/error behavior. It's slightly long but every sentence serves a distinct purpose; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, required parameters, prerequisites, return value, error behavior, and a key gotcha (custom_fields shape vs read shape). For a complex create tool without an output schema, this is fully sufficient for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers all 8 parameters with 100% description coverage, and the schema itself provides deep explanations—especially for custom_fields, including snake_case rules and read/write asymmetry. The tool description adds only a pointer to hudu_get_asset_layout for field labels, which is useful but doesn't significantly go beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Create an asset inside a company,' a specific verb+resource statement. It defines what an asset is and contrasts with sibling tools like hudu_update_asset and hudu_archive_asset by focusing on creation. This clearly distinguishes it from other asset actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use it: to create an asset, with company_id required because there is no global create route. It instructs the agent to choose asset_layout_id first and explicitly points to hudu_list_asset_layouts and hudu_get_asset_layout as prerequisite lookups. It doesn't explicitly state when not to use it (e.g., for updates), so it lacks excluded alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZenixSolutions/hudu-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server