Neat Pulse MCP (beta): Data Model and Tool reference
Last updated June 29, 2026
Important Note: Neat Pulse MCP is currently in beta. Features and behaviour may change. For any feedback, please reach out to your Neat sales contact or reach out via developer@pulse.neat.no or Neat Support.
Overview
Neat Pulse MCP (@neat-no/pulse-mcp@beta) is a Model Context Protocol (MCP) server that connects AI assistants such as Claude or Cursor to Neat Pulse. This article is the companion reference to the Neat Pulse MCP: Setup Guide. It explains how Neat Pulse organises your fleet and lists every tool your AI assistant can use once connected. Keep it handy whenever you want to know what’s possible or how to phrase a request.
Not connected yet? Start with Neat Pulse MCP: Setup Guide, then come back here.
Contents
Concepts
This section explains the Neat Pulse data model. Understanding how your fleet is organised helps you (and your assistant) use the tools effectively, especially when filtering by location or working with devices across rooms.
Tip for AI assistants: This conceptual information is also exposed directly as an MCP resource at pulse://domain-guide. If your assistant seems confused about the hierarchy or ID formats mid-conversation, you can prompt it: “Read the domain guide.”
Resource hierarchy
Organisation
└── Region (geographic grouping, e.g. "Europe")
└── Location (physical site, e.g. "Oslo HQ")
└── Room (meeting space, e.g. "Loft")
└── Device (physical Neat hardware)
- Organisation — the top-level account, identified by your
PULSE_ORG_ID. All resources belong to one organisation. - Region — a named geographic grouping of locations. Not every location needs a region.
- Location — a physical site, such as an office, building, or campus. A location belongs to at most one region.
- Room — a meeting space within a location. Devices are enrolled in rooms. A room belongs to at most one location.
- Device — a physical Neat device (Bar, Pad, Board, etc.). A device belongs to exactly one room at a time.
IDs
Every resource has a unique ID. You won’t normally need to handle these yourself (your assistant looks them up from the names you mention), but it helps to recognise them.
| Resource | ID type | Example |
|---|---|---|
| Device | UUID (string) | "0708f94f-e610-4c75-8f11-33f27212df3e" |
| Room | Integer | 42 |
| Location | Integer | 7 |
| Region | Integer | 3 |
Key relationships
- A device belongs to exactly one room. You can’t move a device between rooms directly. Instead, you delete it and re-enroll it in the new room.
- A room can contain multiple devices.
- Devices in a room may be paired to a “master” device (shown as
pairing_serialon the device). Rebooting the master reboots its paired devices too e.g. Neat Pad and Neat Center paired to a Neat Bar Pro. - Deleting a room unenrols every device in it from Neat Pulse, and those devices must be re-enrolled before you can manage them again. This is the most significant destructive operation in the system.
Device enrolment codes
Each room has a device enrolment code (DEC). A new device is enrolled into a room by entering this code on the device during setup.
The code has no expiry until it is first used. Once used for the first time, a countdown begins. The server sets the exact expiry, which appears in the get_room response as device_enrollment_code_expires_at. The code continues to work for additional device enrolments until that expiry time passes.
You can reset a room’s enrolment code at any time with the reset_enrolment_code tool. This immediately invalidates the existing code and issues a new one with no expiry.
Tools
Each tool below acts on one of the resources described previously: a device, room, location, or region. You won’t call these tools directly; you describe what you want in plain language, and your assistant picks the right tool and supplies the IDs.
Reading vs. changing: Most tools simply read information from Neat Pulse. A few make changes that can’t be undone: rebooting a device, resetting an enrolment code, and deleting a device or room. These are flagged with a warning where they appear.
Device Tools
These tools let you inspect and manage Neat devices in your organisation. Your assistant starts with list_devices to find a device, then works with it from there, so you can simply refer to a device by its name or location.
list_devices
Lists every Neat devices in the organisation.
- When to use it: Start here when you want an overview of all devices, need to find a specific device’s ID, or want to check the status of devices across your organisation. Takes no inputs.
- Returns: For each device: its UUID, serial number, model code (see Device models above for human-readable names), assigned room, and current connection and call status.
- Example prompts:
- “List all devices in my organisation.”
- “Which devices are currently offline?”
- “Show me all Neat Bars.”
get_device
Get the full details for a single Neat device, including the latest sensor readings.
- When to use it: Use after
list_deviceswhen you need detailed information about a specific device — firmware version, IP address, network configuration, or room air quality sensor data.
| Parameter | Type | Required | Description |
|---|---|---|---|
device_id | string (UUID) | Yes | The device’s UUID. Use list_devices to find it. |
- Returns: Hardware info, firmware version, connection status, network configuration (type, IP addresses, MAC address, gateway), and room assignment.
Where the device has the sensors, you’ll also get temperature, humidity, CO₂, and people count. - Example prompts:
- “Get the details for device 0708f94f-e610-4c75-8f11-33f27212df3e.”
- “What firmware version is the Neat Bar in the Oslo boardroom running?”
- “What’s the air quality like in the Neat Bar in the London boardroom?”
reboot_device
Reboots a device remotely.
- Warning: This reboots the device immediately. Any active call on that device will be dropped. Paired devices (e.g. a Neat Pad paired to a Neat Bar) will also reboot.
- When to use it: Use when a device is unresponsive, showing stale status, or needs a restart after a firmware update.
| Parameter | Type | Required | Description |
|---|---|---|---|
device_id | string (UUID) | Yes | The UUID of the device to reboot. Use list_devices to find it. |
- Returns: A confirmation message that the reboot command was accepted. The device itself does not send a response.
- Example prompts:
- “Reboot the device with ID 0708f94f-e610-4c75-8f11-33f27212df3e.”
- “Restart the Neat Bar in room 42.”
delete_device
Removes a device from Neat Pulse.
- Warning: This is permanent. The device is removed from Neat Pulse and will no longer be manageable until it is re-enrolled. Re-enrolment requires physical access to the device and a valid room enrolment code.
- When to use it: Use when decommissioning a device, replacing hardware, or cleaning up devices that are no longer in use.
| Parameter | Type | Required | Description |
|---|---|---|---|
device_id | string (UUID) | Yes | The UUID of the device to delete. Use list_devices to find it. |
- Returns: Confirmation with the deleted device’s UUID.
- Example prompts:
- “Delete device 0708f94f-e610-4c75-8f11-33f27212df3e from Neat Pulse.”
- “Remove the decommissioned Neat Board from the organisation.”
Room Tools
These tools let you list, inspect, create, and manage rooms in your organisation. Rooms are containers for devices — when you enrol a device into a room, it inherits the room’s location and settings.
list_rooms
List all rooms in the organisation. Takes no inputs.
- When to use it: Use it when you want an overview of all rooms in your organisation.
- Returns: A list of room IDs and names. For full room details including devices and sensor data, use
get_room. - Example prompts
- “List all rooms in the organisation.”
- “What rooms do we have in Neat Pulse?”
get_room
Get details for a single room, including its devices and the latest sensor reading.
- When to use it: Use after
list_roomswhen you need to see which devices are in a room, the room’s current air quality, or its active enrolment code.
| Parameter | Type | Required | Description |
|---|---|---|---|
room_id | integer | Yes | The room’s ID. Use list_rooms to find it. |
- Returns: Room name, location, list of enrolled devices (ID, serial, model, connection status), and active device enrolment code (if one exists), including its expiry time if the code has been used. Sensor readings (temperature, humidity, CO₂, people count) are included when available — rooms without active sensor devices will not have these fields.
- Example prompts;
- “Get the details for room 42.”
- “How many people are currently in the Oslo boardroom?”
- “What’s the enrolment code for room 7?”
create_room
Create a new room in the organisation.
- When to use it: Use when setting up a new meeting space. Optionally assign it to a location (use
list_locationsto find location IDs). After creating the room, useget_roomto retrieve the device enrolment code and enrol devices into it.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The room name. |
location_id | integer | No | ID of the location to assign the room to. Use list_locations to find location IDs. Omit to create an unassigned room. |
- Returns: The new room’s ID, name, location (if assigned), and its device enrolment code.
- Example prompts;
- “Create a room called ‘Loft’ in location 3.”
- “Add a new unassigned room called ‘Test Room’.”
update_room
Update a room’s name and/or location.
- When to use it: Use to rename a room or reassign it to a different location.
- Note: If you omit
location_id, the room’s current location assignment is removed. Always include the existinglocation_idvalue if you only want to rename the room.
| Parameter | Type | Required | Description |
|---|---|---|---|
room_id | integer | Yes | The ID of the room to update. Use list_rooms to find it. |
name | string | Yes | The new name for the room. |
location_id | integer | No | ID of the location to assign the room to. Omit to remove the room’s current location assignment. |
- Returns: The updated room details.
- Example prompts:
- “Rename room 42 to ‘Boardroom North’ and keep its current location.”
- “Move room 7 to location 2.”
- “Remove the location assignment from room 15.”
reset_enrolment_code
Reset the device enrolment code for a room.
- Warning: This immediately invalidates the existing code. Any in-progress device enrolment using the old code will fail.
- When to use it: Use if a room’s enrolment code has been compromised, shared accidentally, or has expired after first use.
| Parameter | Type | Required | Description |
|---|---|---|---|
room_id | integer | Yes | The ID of the room. Use list_rooms to find it. |
- Returns: The new device enrolment code for the room.
- Example prompts
- “Reset the enrolment code for room 42.”
- “Generate a new enrolment code for the Oslo boardroom.”
delete_room
Permanently delete a room from the organisation.
- Warning: This is permanent and cascades to devices. All Neat devices enrolled in the room will be permanently deleted from Neat Pulse. They will need to be physically re-enrolled to be managed again. Use
get_roomfirst to see which devices are in the room before deleting it.
- When to use it: Use when decommissioning a meeting space entirely.
| Parameter | Type | Required | Description |
|---|---|---|---|
room_id | integer | Yes | The ID of the room to delete. Use list_rooms to find it. |
- Returns: Confirmation with the deleted room’s ID.
- Example prompts:
- “Delete room 42.”
- “Remove the decommissioned boardroom from Neat Pulse.”
Location and Region Tools
These tools let you browse your location hierarchy. Locations and regions are read-only through the MCP server. To create or manage them, use the Neat Pulse portal.
list_regions
List all regions in the organisation. Takes no inputs.
- When to use it: Use it when you want an overview of all regions in your organisation.
- Returns: A list of region IDs and names.
- Example prompts:
- “List all regions in the organisation.”
- “What regions do we have in Neat Pulse?”
list_locations
List all locations in the organisation. Takes no inputs.
- When to use it: Use it when you want an overview of all locations in your organisation.
- Returns: A list of location IDs and names. Use a location ID when calling
create_roomorupdate_roomto assign a room to a location. - Example prompts
- “List all locations in the organisation.”
- “What’s the location ID for the Oslo office?”