hudu-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HUDU_API_KEY | Yes | The key from Admin → Basic Information → API Keys. Sent as the x-api-key header. | |
| HUDU_BASE_URL | Yes | Your Hudu instance origin, e.g. https://hudu.example.com. A trailing slash or a trailing /api/v1 is normalised away; the client adds /api/v1 itself. | |
| HUDU_READ_ONLY | No | Register only Read tools. 40 tools instead of 70. Set to '1', 'true', 'yes' or 'on' to enable. | off |
| HUDU_MAX_RETRIES | No | Retries for transient failures (timeouts, network errors, 429, 5xx), with full-jitter backoff. 0 to 10. | 3 |
| HUDU_ALLOW_EXPORTS | No | Register the two bulk export tools. Set to '1', 'true', 'yes' or 'on' to enable. | off |
| HUDU_MAX_CONCURRENCY | No | Simultaneous in-flight requests. Maximum 32. | 4 |
| HUDU_ALLOW_DESTRUCTIVE | No | Register the 16 delete and purge tools, including the activity-log purge. Set to '1', 'true', 'yes' or 'on' to enable. | off |
| HUDU_REQUEST_TIMEOUT_MS | No | Per-request timeout in milliseconds. Maximum 600000. | 30000 |
| HUDU_ALLOW_PASSWORD_REVEAL | No | Register hudu_reveal_password, which returns one stored secret per call. Set to '1', 'true', 'yes' or 'on' to enable. | off |
| HUDU_RATE_LIMIT_PER_MINUTE | No | Client-side request ceiling. Must be a positive integer no greater than 300. | 120 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| hudu_list_companiesA | List companies in Hudu. A company is the top-level container in Hudu; every asset, article, password and website belongs to exactly one. To find a company by name, prefer Returns an object with Operation class: Read. |
| hudu_get_companyA | Fetch one company by its numeric id. A company is the top-level container in Hudu; every asset, article, password and website belongs to exactly one. Use hudu_list_companies first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_companyA | Create a new company in Hudu. A company is the top-level container in Hudu; every asset, article, password and website belongs to exactly one. Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_update_companyA | Update an existing company. A company is the top-level container in Hudu; every asset, article, password and website belongs to exactly one. Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_company if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this company. |
| hudu_archive_companyA | Archive or unarchive a company. Archiving hides the record from normal views without deleting it, and is reversible by calling this tool again with This is the reversible alternative to deletion and should be preferred whenever the user wants something "removed" without saying they want it gone permanently. Operation class: Update. Impact: Hides or restores this company. Reversible. |
| hudu_find_company_by_integrationA | Resolve a company in a connected integration (a PSA, RMM or similar) to its Hudu company record. Use this when you arrive from another system holding that system's customer id rather than a Hudu id — for example a ticket that names its own account identifier. If you only have a customer name, use hudu_list_companies with Operation class: Read. |
| hudu_lookup_integration_cardsA | List the integration cards Hudu holds for a given external record. Cards are the link between a Hudu asset or company and its counterpart in a connected PSA or RMM, and they carry the synced fields shown on the record. Use this to answer "what does Hudu know about this device from our RMM?" without opening the RMM itself. Operation class: Read. |
| hudu_list_assetsA | List assets in Hudu. 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. This is the only route that reads assets across every company, and it is read-only: creating, updating, archiving and deleting an asset all happen under /companies/{company_id}/assets. Keep the Custom field values come back under Returns an object with Operation class: Read. |
| hudu_list_company_assetsA | List the assets belonging to one 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. This route accepts paging and the archived flag and nothing else. To filter by name, serial, layout or free text within a company, call hudu_list_assets with Returns an object with Operation class: Read. |
| hudu_get_assetA | Fetch one asset with every value stored on it. 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. Assets are read globally but written per company. This tool needs the owning company id as well as the asset id, because Hudu exposes no /assets/{id} route. If you found the asset with hudu_list_assets, take Layout-defined data comes back under Operation class: Read. |
| hudu_create_assetA | 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 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. |
| hudu_update_assetA | Update an existing asset. 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. Assets are read globally but written per company. This tool needs the owning company id as well as the asset id, because Hudu exposes no /assets/{id} route. If you found the asset with hudu_list_assets, take Only the arguments you supply are sent, but each one replaces the stored value outright — this is a PUT, not a merge. Read the asset with hudu_get_asset first whenever you intend to add to a field rather than overwrite it. The same applies to Operation class: Update. Impact: Overwrites the supplied fields on this asset with the values given. |
| hudu_archive_assetA | Archive or unarchive an asset. Archiving hides it from normal views and from the default listings without deleting anything, and is reversible by calling this tool again with Assets are read globally but written per company. This tool needs the owning company id as well as the asset id, because Hudu exposes no /assets/{id} route. If you found the asset with hudu_list_assets, take This is the reversible alternative to hudu_delete_asset and should be preferred whenever the user wants a decommissioned machine "removed" without saying they want its documentation gone permanently. Operation class: Update. Impact: Hides or restores this asset. Reversible. |
| hudu_list_asset_layoutsA | List asset layouts in Hudu. An asset layout is the template behind an asset type: its icon and colour, whether its assets can hold passwords, photos, comments and files, and the set of custom fields every asset of that type carries. Layouts are instance-wide rather than per-company. Field definitions can be set when a layout is created; the documented shape for changing them afterwards contradicts the shape creation accepts, so this server does not expose field edits on update. There is no delete endpoint for layouts — set Read this before writing any asset: the Returns an object with Operation class: Read. |
| hudu_get_asset_layoutA | Fetch one asset layout by its numeric id. An asset layout is the template behind an asset type: its icon and colour, whether its assets can hold passwords, photos, comments and files, and the set of custom fields every asset of that type carries. Layouts are instance-wide rather than per-company. Field definitions can be set when a layout is created; the documented shape for changing them afterwards contradicts the shape creation accepts, so this server does not expose field edits on update. There is no delete endpoint for layouts — set Use hudu_list_asset_layouts first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_asset_layoutA | Create a new asset layout in Hudu. An asset layout is the template behind an asset type: its icon and colour, whether its assets can hold passwords, photos, comments and files, and the set of custom fields every asset of that type carries. Layouts are instance-wide rather than per-company. Field definitions can be set when a layout is created; the documented shape for changing them afterwards contradicts the shape creation accepts, so this server does not expose field edits on update. There is no delete endpoint for layouts — set Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_update_asset_layoutA | Update an existing asset layout. An asset layout is the template behind an asset type: its icon and colour, whether its assets can hold passwords, photos, comments and files, and the set of custom fields every asset of that type carries. Layouts are instance-wide rather than per-company. Field definitions can be set when a layout is created; the documented shape for changing them afterwards contradicts the shape creation accepts, so this server does not expose field edits on update. There is no delete endpoint for layouts — set Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_asset_layout if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this asset layout. |
| hudu_list_articlesA | List articles in Hudu. An article is a knowledge-base document: HTML content, optionally filed in a folder and optionally scoped to one company. Articles with no company are global to the instance. Filter by
Every record carries its full HTML Returns an object with Operation class: Read. |
| hudu_get_articleA | Fetch one article by its numeric id. An article is a knowledge-base document: HTML content, optionally filed in a folder and optionally scoped to one company. Articles with no company are global to the instance. Use hudu_list_articles first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_articleA | Create a new article in Hudu. An article is a knowledge-base document: HTML content, optionally filed in a folder and optionally scoped to one company. Articles with no company are global to the instance. Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_update_articleA | Update an existing article. An article is a knowledge-base document: HTML content, optionally filed in a folder and optionally scoped to one company. Articles with no company are global to the instance. Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_article if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this article. |
| hudu_archive_articleA | Archive or unarchive a article. Archiving hides the record from normal views without deleting it, and is reversible by calling this tool again with This is the reversible alternative to deletion and should be preferred whenever the user wants something "removed" without saying they want it gone permanently. Operation class: Update. Impact: Hides or restores this article. Reversible. |
| hudu_list_foldersA | List folders in Hudu. A folder groups knowledge-base articles. Folders nest through These are article folders. Passwords are organised by a separate The response is flat, not a tree — reconstruct the hierarchy yourself by following each folder's On Returns an object with Operation class: Read. |
| hudu_get_folderA | Fetch one folder by its numeric id. A folder groups knowledge-base articles. Folders nest through Use hudu_list_folders first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_folderA | Create a new folder in Hudu. A folder groups knowledge-base articles. Folders nest through Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_update_folderA | Update an existing folder. A folder groups knowledge-base articles. Folders nest through Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_folder if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this folder. |
| hudu_list_proceduresA | List procedures in Hudu. A procedure — called a Process in the Hudu interface — is an ordered checklist of tasks with a completion count, used for repeatable work such as onboarding, offboarding and server builds. This API version exposes procedures read-only. There is no create, update or delete endpoint for them, so no such tool exists here and none is being withheld — process templates are authored in the Hudu web interface. The one write available is hudu_kickoff_procedure, which starts a new process from an existing template. Results include both templates and processes already started from one: Returns an object with Operation class: Read. |
| hudu_get_procedureA | Fetch one procedure by its numeric id. A procedure — called a Process in the Hudu interface — is an ordered checklist of tasks with a completion count, used for repeatable work such as onboarding, offboarding and server builds. Use hudu_list_procedures first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_kickoff_procedureA | Start a new process from an existing procedure. Hudu copies the procedure's task list into a new process record with its own id, slug and URL, and returns that new record. Afterwards the company has a live checklist that its users can work through and tick off; the procedure it came from is unchanged and can be kicked off again. Attach the new process to an asset with Find the procedure id with hudu_list_procedures. Both optional inputs are sent as query parameters because that is what Hudu documents for this endpoint; it accepts no request body. Success answers 200 rather than the 201 you might expect from a create, and 404 covers both a missing procedure and an unrouted path. Operation class: Create. Impact: Creates a live process in Hudu, visible to the users of the company that owns the procedure and appearing in their process list as outstanding work. |
| hudu_list_passwordsA | List passwords in Hudu. A password record in Hudu — the credential vault entry for a company, optionally attached to a specific asset or website. Hudu calls these "AssetPassword" in the API and simply "Passwords" in its interface. The secret value and any stored OTP seed are withheld from these results. Everything else — name, username, URL, company, folder, timestamps — is returned, which answers most questions ("does this client have a firewall admin credential documented, and when was it last rotated?") without exposing anything. To read an actual secret you need hudu_reveal_password, one record at a time, and the server operator must have enabled it. Returns an object with Operation class: Read. |
| hudu_get_passwordA | Fetch one password by its numeric id. A password record in Hudu — the credential vault entry for a company, optionally attached to a specific asset or website. Hudu calls these "AssetPassword" in the API and simply "Passwords" in its interface. Use hudu_list_passwords first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_passwordA | Create a new password in Hudu. A password record in Hudu — the credential vault entry for a company, optionally attached to a specific asset or website. Hudu calls these "AssetPassword" in the API and simply "Passwords" in its interface. Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_update_passwordA | Update an existing password. A password record in Hudu — the credential vault entry for a company, optionally attached to a specific asset or website. Hudu calls these "AssetPassword" in the API and simply "Passwords" in its interface. Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_password if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this password. |
| hudu_archive_passwordA | Archive or unarchive a password. Archiving hides the record from normal views without deleting it, and is reversible by calling this tool again with This is the reversible alternative to deletion and should be preferred whenever the user wants something "removed" without saying they want it gone permanently. Operation class: Update. Impact: Hides or restores this password. Reversible. |
| hudu_list_password_foldersA | List password folders in Hudu. A folder that groups password records within a company. Folders in Hudu can also carry their own access restrictions, so which folder a credential sits in affects who can see it. This API version exposes password folders as read-only — there is no create, update or delete endpoint for them. Folders are managed in the Hudu web interface. Returns an object with Operation class: Read. |
| hudu_get_password_folderA | Fetch one password folder by its numeric id. A folder that groups password records within a company. Folders in Hudu can also carry their own access restrictions, so which folder a credential sits in affects who can see it. Use hudu_list_password_folders first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_list_networksA | List networks in Hudu. A network is one IP range documented in Hudu — a subnet in CIDR form, owned by a company, holding the individual ip_address records allocated inside it. This endpoint documents neither Filter by Returns an object with Operation class: Read. |
| hudu_get_networkA | Fetch one network by its numeric id. A network is one IP range documented in Hudu — a subnet in CIDR form, owned by a company, holding the individual ip_address records allocated inside it. Use hudu_list_networks first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_networkA | Create a new network in Hudu. A network is one IP range documented in Hudu — a subnet in CIDR form, owned by a company, holding the individual ip_address records allocated inside it. Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_update_networkA | Update an existing network. A network is one IP range documented in Hudu — a subnet in CIDR form, owned by a company, holding the individual ip_address records allocated inside it. Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_network if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this network. |
| hudu_list_ip_addressesA | List ip addresses in Hudu. An ip_address record documents one address: its allocation status, its FQDN, the network it sits in and the asset it is configured on. This endpoint documents neither
Returns an object with Operation class: Read. |
| hudu_get_ip_addressA | Fetch one ip address by its numeric id. An ip_address record documents one address: its allocation status, its FQDN, the network it sits in and the asset it is configured on. Use hudu_list_ip_addresses first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_ip_addressA | Create a new ip address in Hudu. An ip_address record documents one address: its allocation status, its FQDN, the network it sits in and the asset it is configured on. Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_update_ip_addressA | Update an existing ip address. An ip_address record documents one address: its allocation status, its FQDN, the network it sits in and the asset it is configured on. Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_ip_address if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this ip address. |
| hudu_list_rack_storagesA | List rack storages in Hudu. A rack storage is a physical rack — a cabinet in a server room — owned by a company and standing at a location, with a height, a width, a starting unit number and a maximum wattage. It is the container only: the equipment mounted in it is modelled separately as rack storage items, via the hudu_*_rack_storage_item tools. Filter by No name or free-text search filter is documented. To find a rack by name, list the company's racks and match the This endpoint documents neither Returns an object with Operation class: Read. |
| hudu_get_rack_storageA | Fetch one rack storage by its numeric id. A rack storage is a physical rack — a cabinet in a server room — owned by a company and standing at a location, with a height, a width, a starting unit number and a maximum wattage. It is the container only: the equipment mounted in it is modelled separately as rack storage items, via the hudu_*_rack_storage_item tools. Use hudu_list_rack_storages first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_rack_storageA | Create a new rack storage in Hudu. A rack storage is a physical rack — a cabinet in a server room — owned by a company and standing at a location, with a height, a width, a starting unit number and a maximum wattage. It is the container only: the equipment mounted in it is modelled separately as rack storage items, via the hudu_*_rack_storage_item tools. Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_update_rack_storageA | Update an existing rack storage. A rack storage is a physical rack — a cabinet in a server room — owned by a company and standing at a location, with a height, a width, a starting unit number and a maximum wattage. It is the container only: the equipment mounted in it is modelled separately as rack storage items, via the hudu_*_rack_storage_item tools. Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_rack_storage if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this rack storage. |
| hudu_list_rack_storage_itemsA | List rack storage items in Hudu. A rack storage item is one thing mounted in a rack: it points at the Hudu asset it represents, occupies the units from Read this before answering a question about a specific rack: the API documents no way to list the items in one. The item schema has no rack field, and none of the filters scope to a rack — To go the other way — from a device to where it is racked — filter by This endpoint documents neither Returns an object with Operation class: Read. |
| hudu_get_rack_storage_itemA | Fetch one rack storage item by its numeric id. A rack storage item is one thing mounted in a rack: it points at the Hudu asset it represents, occupies the units from Use hudu_list_rack_storage_items first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_rack_storage_itemA | Create a new rack storage item in Hudu. A rack storage item is one thing mounted in a rack: it points at the Hudu asset it represents, occupies the units from Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_update_rack_storage_itemA | Update an existing rack storage item. A rack storage item is one thing mounted in a rack: it points at the Hudu asset it represents, occupies the units from Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_rack_storage_item if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this rack storage item. |
| hudu_list_websitesA | List websites in Hudu. A website in Hudu is a live monitor, not a documentation page: Hudu polls the host on a schedule and records its uptime, TLS certificate expiry, WHOIS registration and DNS records against the owning company. There is no company filter on this endpoint. To answer "what are we monitoring for Contoso?", list websites and match on Returns an object with Operation class: Read. |
| hudu_get_websiteA | Fetch one website by its numeric id. A website in Hudu is a live monitor, not a documentation page: Hudu polls the host on a schedule and records its uptime, TLS certificate expiry, WHOIS registration and DNS records against the owning company. Use hudu_list_websites first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_create_websiteA | Create a website monitor. A website in Hudu is a live monitor, not a documentation page: Hudu polls the host on a schedule and records its uptime, TLS certificate expiry, WHOIS registration and DNS records against the owning company. This is not a passive documentation record. From the moment it is created, the Hudu instance begins making repeated outbound requests to the host you name — HTTP polling plus TLS, WHOIS and DNS lookups — on Hudu's own schedule, and will raise alerts against the owning company when they fail. Point it only at hosts the customer actually owns or is contracted to watch, and use Hudu publishes no success response for this endpoint, so the created record may come back empty even though the write succeeded. When that happens this tool returns Operation class: Create. Impact: Starts recurring outbound monitoring of an external host from the Hudu instance, and arms the alerts that go with it. |
| hudu_update_websiteA | Update an existing website. A website in Hudu is a live monitor, not a documentation page: Hudu polls the host on a schedule and records its uptime, TLS certificate expiry, WHOIS registration and DNS records against the owning company. Only the fields you supply are sent. Be aware that Hudu applies these as a PUT: for fields you do send, the new value replaces the old one outright — read the record first with hudu_get_website if you intend to append rather than overwrite. Operation class: Update. Impact: Overwrites the supplied fields on this website. |
| hudu_list_relationsA | List relations in Hudu. A relation is a link between any two Hudu records — an asset to the password that opens it, an article to the company it documents — stored as a from/to pair of type-and-id. Hudu exposes no update route for relations, so changing one means deleting it and creating a replacement. This endpoint takes no filters whatsoever — not by record, not by type, not by company. Finding the relations on one asset therefore means paging through the whole set and matching Returns an object with Operation class: Read. |
| hudu_create_relationA | Create a new relation in Hudu. A relation is a link between any two Hudu records — an asset to the password that opens it, an article to the company it documents — stored as a from/to pair of type-and-id. Hudu exposes no update route for relations, so changing one means deleting it and creating a replacement. Returns the created record, including the id Hudu assigned. Hudu answers 422 with the offending field named when validation fails. Operation class: Create. |
| hudu_list_magic_dash_itemsA | List magic dash items in Hudu. A magic dash item is one of the coloured tiles across the top of a company page in Hudu — a title, a headline message, an optional shade and optional HTML detail. They are normally written by scripts and integrations to surface a live status ("Microsoft 365: 42 licences, 3 unassigned") next to the documentation. The write endpoints identify the company by name, not by id — There is no endpoint for fetching a single magic dash item, so this list is the only way to read one — filter by Returns an object with Operation class: Read. |
| hudu_upsert_magic_dash_itemA | Create a magic dash tile, or replace the existing one with the same title on the same company. A magic dash item is one of the coloured tiles across the top of a company page in Hudu — a title, a headline message, an optional shade and optional HTML detail. They are normally written by scripts and integrations to surface a live status ("Microsoft 365: 42 licences, 3 unassigned") next to the documentation. Read that first sentence carefully: this single endpoint does both. Hudu matches on The replacement is wholesale rather than a merge: fields you omit are not carried over from the previous tile, so send the complete tile you want to end up with every time. The write endpoints identify the company by name, not by id — Operation class: Update. Impact: Overwrites any existing tile with the same title on the same company, wholesale and without confirmation. Creates a new tile only when no such pair exists. |
| hudu_list_matchersA | List matchers in Hudu. A matcher is one row in the mapping table between a connected integration (a PSA or RMM such as Autotask or ConnectWise) and Hudu's companies: it ties one customer record in that external system to one Hudu company, so synced data lands in the right place.
The reason to call this is almost always Returns an object with Operation class: Read. |
| hudu_update_matcherA | Point an integration record at a Hudu company, or correct which company it points at. A matcher is one row in the mapping table between a connected integration (a PSA or RMM such as Autotask or ConnectWise) and Hudu's companies: it ties one customer record in that external system to one Hudu company, so synced data lands in the right place. This is how an unmatched record gets resolved, and it is the second half of a two-step job:
Matchers cannot be created through the API; they appear when an integration syncs. So this tool only ever edits rows that already exist, and a matcher id that returns 404 means the sync has not produced that record. Only the fields you supply are sent, and each replaces the stored value outright. Operation class: Update. Impact: Changes which Hudu company this integration record maps to, and therefore where future synced data from that record is filed. |
| hudu_get_api_infoA | Report the version and build date of the Hudu instance this server is pointed at. Returns Call this first whenever something behaves unexpectedly. The Hudu API changes between releases: several endpoints exist only on newer builds, and an older instance answers 404 for them — which is the same 404 it returns for a record that does not exist, so the two are indistinguishable without knowing the version. It is also the fastest way to confirm the base URL and API key are working at all, since it needs no ids and no permissions beyond a valid key. Operation class: Read. |
| hudu_list_usersA | List users in Hudu. A user is a person with access to Hudu: either a member of your own team, or a portal member belonging to one client company. Always send at least one filter. These records contain personal and security-relevant data — Users cannot be created, changed or removed through the Hudu API — that is the web admin UI only. Returns an object with Operation class: Read. |
| hudu_get_userA | Fetch one user by its numeric id. A user is a person with access to Hudu: either a member of your own team, or a portal member belonging to one client company. Use hudu_list_users first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_list_activity_logsA | List activity logs in Hudu. The activity log is Hudu's audit trail: one entry per action, recording who did it, what they did it to, and when. This is the tool for "who changed this, and when". Each entry carries Combine the filters to answer a real question rather than paging the whole log:
Entries are ordered by Hudu, not by this server, and no total count is returned — so to find the most recent change to a record, request a page and read it rather than assuming the first entry is newest. Reading the log never alters it. Purging it is a separate tool, hudu_purge_activity_logs, and is destructive. Returns an object with Operation class: Read. |
| hudu_list_expirationsA | List expirations in Hudu. An expiration is a dated thing that will stop working: a domain registration, an SSL certificate, a hardware warranty, a date field on an asset, or an article review date. This is the single call that answers "what is about to expire for this client". Hudu gathers expiry dates from across every module into one list, so you do not have to walk websites, then assets, then articles separately. Filter by Each entry points at the thing that expires through There is no date-range filter: Hudu returns the entries and this server passes them through unchanged, so compare Expirations are read-only through the API. To change one, edit the record that produced it: the website's expiry, the asset field's date, and so on. Returns an object with Operation class: Read. |
| hudu_list_uploadsA | List uploads in Hudu. An upload is a file attached to a Hudu record — an asset, website, procedure, password, company or article. Each carries a Hudu documents no filter and no pagination on this endpoint: it returns the uploads for the whole instance in one response, and there is no This server cannot upload files. The Hudu upload endpoint takes multipart/form-data, which hudu-mcp 0.1.0 does not implement, so there is no create tool here and no way to add an attachment through this interface — tell the user to attach the file in the Hudu web UI. Do not claim a file was uploaded. Returns an object with Operation class: Read. |
| hudu_get_uploadA | Fetch one upload by its numeric id. An upload is a file attached to a Hudu record — an asset, website, procedure, password, company or article. Each carries a Use hudu_list_uploads first if you only know a name — ids are not guessable, and Hudu answers 404 identically for a missing record and an unrouted path. Operation class: Read. |
| hudu_list_public_photosA | List public photos in Hudu. A public photo is an image published at a public URL and attached to an article or an asset note, so it can be rendered inside that content. Each entry gives the image There is no filter on this endpoint — page through and match Creating and re-pointing public photos needs multipart/form-data, which hudu-mcp 0.1.0 does not implement, so this list is the only public-photo operation available here. Use the Hudu web UI to add or change one. Returns an object with Operation class: Read. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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