Skip to main content
Glama
RhombusSystems

Rhombus MCP Server

Official

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
RHOMBUS_API_KEYYesYour Rhombus API key generated from the Rhombus Console at https://console.rhombus.com/settings/api-management

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
access-control-toolA

This tool manages Rhombus access control operations including door unlocking, access groups, credentials, lockdown plans, door schedules, and access grants.

It has the following modes of operation, determined by the "requestType" parameter:

  • unlock-door: Remotely unlock an access controlled door. Requires doorUuid.

  • get-groups: List all access control groups in the organization.

  • get-credentials-by-user: List all access control credentials for a specific user. Requires userUuid.

  • get-lockdown-plans: List all lockdown plans in the organization.

  • activate-lockdown: Activate a lockdown plan at a location. Requires locationUuid and lockdownPlanUuid.

  • deactivate-lockdown: Deactivate a lockdown plan at a location. Requires locationUuid and lockdownPlanUuid.

  • get-door-schedules: Get door schedule exceptions for a location. Requires locationUuid.

  • get-access-grants: List location access grants (physical badge/card access). Optionally accepts locationUuid to filter by location. Each grant includes userUuids (directly assigned users), groupUuids (assigned access control groups), and doorUuids (the doors this grant provides access to).

  • get-remote-unlock-users: Get all users who have permission to remotely unlock doors at a location. Requires locationUuid. Returns a list of doors with remote unlock enabled and the users who can unlock each door, based on their permission group roles. This is the correct tool for questions about remote unlock permissions.

Use the get-entity-tool with entityType ACCESS_CONTROL_DOOR to get door UUIDs. Use the user-tool to look up user UUIDs and resolve them to names/emails. Use the location-tool to get location UUIDs.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

alarm-monitoring-toolA

This tool retrieves alarm monitoring status and threat case information across Rhombus locations.

It has the following modes of operation, determined by the "requestType" parameter:

  • org-status: Get the armed/disarmed alarm monitoring status for ALL locations in the organization in a single call.

  • get-threat-cases: Retrieve alarm monitoring threat cases (security incidents). Supports filtering by time range and max results.

  • location-status: Get detailed alarm monitoring status for a specific location. Requires locationUuid.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

analytics-toolA

This tool generates composite operational analytics reports by combining multiple data sources. Use it for high-level business questions about space utilization, traffic patterns, and real-time scene analysis.

It has the following modes of operation, determined by the "requestType" parameter:

  • space-utilization: Compare per-camera people counts against running averages at a location. Answers: "How busy is each area vs normal?"

  • traffic-flow: Compare ingress/egress across ALL line-crossing cameras at a location. Answers: "Which entrance gets the most traffic?"

  • peak-vs-average: Show hourly actual counts vs historical averages. Answers: "When is it busiest? Is today above or below normal?"

  • scene-intelligence: Ask a camera an arbitrary question using AI vision (e.g. "How many treadmills are in use?"). Works in real-time or at a historical timestamp.

  • location-summary: Generate a comprehensive multi-metric analytics summary for a location including people counts, traffic flow, and trend comparisons.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

automated-prompts-toolA

This tool manages Rhombus MIND automated prompts - scheduled chatbot jobs that run a prompt at a recurring interval and store each response. Use it to list, inspect, create, update, delete, page through past responses for, share, or re-verify the schedule of an automated prompt.

Modes (set "requestType"):

  • list: List all automated prompts in the org. Optional 'lastEvaluatedKey' / 'maxPageSize' for pagination.

  • get: Get a single automated prompt's settings. Requires 'promptUuid'.

  • create: Create a new automated prompt. Requires 'prompt', 'invokeAt' (ISO 8601 with offset, must be at least 15 minutes in the future), 'frequencyValue', 'frequencyUnit', and 'permissionGroupUuid'. Optional 'responseTemplate' and 'notifyUserUuids'.

  • update: Selectively update an automated prompt. Requires 'promptUuid'; only the fields you set will be changed. To change the role, the caller must have access to both the current and new role. Pass an empty 'notifyUserUuids' array to clear notifyees.

  • delete: Delete an automated prompt and all of its stored responses. Requires 'promptUuid'.

  • get-history: Page through responses generated by an automated prompt. Requires 'promptUuid'. Optional 'lastEvaluatedKey' / 'maxPageSize'.

  • share-response: Update the visibility of one stored response. Requires 'chatUuid' and 'visibility' (PUBLIC, ORG_WIDE, SELECT_USERS, PRIVATE).

  • verify-scheduled: Re-verify that the job is scheduled to trigger; the server reschedules it if missing. Requires 'promptUuid'.

Notes:

  • Use 'user-tool' to look up user UUIDs and resolve them to names/emails. 'notifyUserUuids' must be members of the chosen 'permissionGroupUuid'.

  • 'invokeAt' is an ISO 8601 timestamp; both 'Z' and '+/-HH:mm' offsets are accepted. The tool converts it to milliseconds for the API.

  • Timestamps in the output are ISO 8601 strings with timezone offset (defaults to America/Los_Angeles when no org timezone is available).

  • 'submitTestPrompt' is intentionally not exposed by this tool.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

camera-toolC

This tool can perform some action pertaining to the video stream of a camera. There are four types of requests that can be passed into "requestType":

  • image

  • get-settings

  • get-media-uris

  • get-ai-thresholds

What follows is a description of the behavior of this tool given the requestType "image"

This tool should be used any time someone wants to specify a subset of cameras to use for a task, based on some features that the camera sees. For example, interior cameras, cameras facing the street, cameras with a view of X, Y, Z, etc.

For instance if someone says "I want X using cameras with Y" then this tool should get a snapshot of the image to answer the question of if the camera satisfies the Y predicate.

This tool captures and returns a real-time snapshot from a designated security camera. The image reflects the current scene in the camera's field of view and serves as a contextual input source for downstream tasks such as object recognition, anomaly detection, incident investigation, or situational assessment. When invoked, the tool provides the following:

  • Visual Scene Capture: A high-resolution image of what the camera is actively observing, including people, vehicles, license plates, and any detectable objects.

  • The frameUri that was used to fetch the image. It may be useful to show the user this image as well through the frameUri.

What follows is a description of the behavior of this tool given the requestType "get-settings"

This tool retrieves the current configuration for a specified camera or associated device (e.g., sensor, access controller). The returned JSON object can include detailed camera settings (e.g., resolution, bitrate) and various device-specific configurations (e.g. storage settings).

NOTE: To update camera settings, use the update-tool instead.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

camera-uptime-toolA

This tool analyzes camera uptime and reliability over a time period. It computes uptime percentages, outage counts, and longest outage durations.

It has the following modes of operation, determined by the "requestType" parameter:

  • get-camera-uptime: Get uptime statistics for a single camera. Requires cameraUuid, startTimeSec, and endTimeSec.

  • get-fleet-uptime: Get uptime statistics for ALL cameras in the organization, sorted by worst uptime first. Includes a fleet-wide summary with averages. Requires startTimeSec and endTimeSec.

startTimeSec and endTimeSec are UNIX timestamps in seconds.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

clips-toolA

Retrieves saved video clips from the Rhombus system. Saved clips can be viewed for up to 2 years and are typically found in the "Clips" tab of the "Saved Video" section of the Rhombus Console. Clips are either manually saved by the user, or automatically by some defined policy. Therefore, this tool is not for looking up the events that have occured.

This tool allows you to:

  • Get saved clips or clips expiring soon (filter by devices, locations, search string, time range).

  • Get all shared live video streams for the organization.

  • Get all timelapse clips for the organization.

Filter options (for saved and expiringSoon only):

  • Specific devices using their UUIDs (deviceUuidFilters).

  • Specific locations using their UUIDs (locationUuidFilters).

  • A simple string search on clip names (searchFilter).

  • A time range: start (timestampISOAfter) and/or end (timestampISOBefore) timestamp in ISO 8601 format.

The tool returns a JSON object with the following structure and important fields:

  • errorMsg (string | null): An error message if the request failed.

  • objecterror (boolean | null): Indicates if an object-level error occurred.

  • pageToken (string | null): A token to be supplied on the next search request to get the next page of results. If this token is null, there is no more data available.

  • savedClips (array of objects | null): An array where each object represents a saved video clip. Each clip object contains the following important fields:

    • uuid (string): The unique identifier for the video clip.

    • title (string): The name given to the video clip.

    • description (string | null): An optional description for the clip.

    • timestampMs (int64): The start time of the video clip in milliseconds since epoch.

    • createdAtMs (int64): The creation timestamp of the clip in milliseconds since epoch.

    • createdAtTimestamp (string): The creation timestamp of the clip in ISO 8601 format.

    • deviceUuid (string): The UUID of the primary device (e.g., camera) that recorded the clip.

    • deviceUuids (array of strings or null): A list of UUIDs for all devices associated with the clip.

    • durationSec (int32): The length of the video clip in seconds.

    • status (string): The current processing status of the clip, with possible values such as INITIATING, UPLOADING, RENDERING, FAILED, COMPLETE, OFFLINE, or UNKNOWN.

    • userUuid (string | null): The UUID of the user associated with the clip, if applicable.

    • sourceAlertUuid (string | null): The UUID of the alert that triggered the creation of this clip, if any.

  • sharedLiveVideoStreams (array): When requestType is sharedLiveStreams, list of shared live video stream objects.

  • timelapseClips (array): When requestType is timelapseClips, list of timelapse clip objects.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

count-toolA

This tool counts the number of items by accepting an array of UUIDs. It can count anything that has UUIDs - users, devices, records, or any other entities. Simply provide an array of UUID strings and it will return the precise count.

create-camera-policy-toolB

A tool for creating a camera policy that walks users through a multi-step process.

The step begins with the user providing a policy name, description, and organization UUID. Then, the user is presented with a form to configure the schedules for the policy. Finally, the user is presented with a form to assign the policy to cameras.

Uses elicitation forms for rich user interaction.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

door-schedule-exception-toolA

This tool manages Rhombus door schedule exceptions. A door lock/unlock exception is a one-time rule used to change an access controlled door's locked/unlocked state. If a lock/unlock exception is enabled, it will overwrite the existing lock/unlock schedule. A schedule exception allows you to create a custom schedule that is only active for the specified dates/times. Once the date/time a schedule exception is set for passes, the original schedule will resume.

Door schedule exceptions can be either expired or not expired. If its scheduled date is in the past, then it is expired. Users through the web console can toggle whether to see expired door schedule exceptions or not. Please mirror this behavior when responding to the user.

It has the following modes of operation, determined by the "requestType" parameter:

  • create-exception: Create a door schedule exception. Requires exception (DoorScheduleExceptionType object). If locationUuid is missing but doorUuids are provided, the tool will resolve the location automatically.

  • delete-exception: Delete a door schedule exception. Requires exceptionUuid.

  • find-exceptions: Find door schedule exceptions across the organization, optionally filtered by date range.

  • find-exceptions-for-location: Find door schedule exceptions for a location. Requires locationUuid. Supports optional date range filters.

  • find-exceptions-for-door: Find door schedule exceptions for a door. Requires doorUuid. Supports optional date range filters.

  • get-exception: Get a single door schedule exception by UUID. Requires exceptionUuid.

  • update-exception: Update a door schedule exception. Requires exception (DoorScheduleExceptionType object). If intervals are omitted but defaultState and date range are provided, the tool will generate a full-day interval.

Use get-entity-tool to look up location and door UUIDs when needed.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

door-toolB

This tool manages Rhombus door controller rules and door policies.

It has the following modes of operation, determined by the "requestType" parameter:

  • get-door-controller-rules: Get all rules for a specific door controller. Requires doorControllerUuid.

  • create-door-controller-rule: Create a new rule for a door controller. Requires doorControllerUuid and ruleConfig (JSON string).

  • get-door-policies: Get all door alert policies in the organization.

  • create-door-policy: Create a new door policy. Requires policyName and policyConfig (JSON string).

Use the get-entity-tool to find door controller and access controlled door UUIDs.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

entity-lookup-toolA

Retrieves specific entities (or devices) by their UUIDs. Takes a list of device UUIDs and returns the device information for those specific devices. Use this tool when the user asks for details on devices' states and details about their licenses and features. The return structure is a JSON object that contains the states of the requested entities. This data is exact. Only devices with matching UUIDs will be returned.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

events-toolA

Scope: This tool returns raw, event-level data (individual events with timestamps). Use report-tool when you need aggregated counts, time-series summaries, or analytics over intervals.

Vehicles vs lpr-tool: eventType "camera" returns footage seekpoints from that camera's recording timeline—every activity type the API returns for the window (human motion, vehicle motion, and others depending on the camera and analytics). Some rows may include plate or vehicle metadata on the seekpoint. lpr-tool is still the right choice for org LPR workflows: saved vehicles, vehicle labels, fuzzy plate search, and vehicle event APIs—not a replacement for "everything this camera logged on its timeline."

This tool has multiple modes, set by "eventType": access-control, brivo-access-control, environmental-gateway, climate-sensor, component-events, camera. Use it when the user asks for specific events (unlocks, badge ins, credentials, arrivals, environmental readings, climate data, camera timeline activity, or other component events). It can return large result sets; keep time ranges narrow. For ranges spanning more than ~24 hours, prefer report-tool for aggregates. For maximum flexibility across event types at a location, use eventType "component-events".


When eventType is "brivo-access-control":

Retrieves badge/credential events from Brivo-integrated doors. Automatically fetches the Brivo integration configuration to determine which locations have Brivo doors mapped. No door UUIDs are required.

Use this when the user asks specifically about Brivo events, Brivo badge ins, Brivo access control, or events from Brivo doors.

Arguments:

  • startTime (string): Start of the time range (ISO 8601).

  • endTime (string): End of the time range (ISO 8601).

Returns:

  • integrationEnabled: Whether the Brivo integration is currently enabled.

  • brivoDoorsConfigured: Number of Brivo doors configured in the integration.

  • brivoDoors: List of Brivo doors with their IDs, names, and associated Rhombus location UUIDs.

  • events: Credential received events from all locations that have Brivo doors configured, sorted newest first.

Note: Events are fetched at the location level, so results may include events from all access-controlled doors at locations where Brivo is configured.


When eventType is "access-control":

Retrieves access control events (arrivals, badge ins, credentials, unlocks) for the given door(s). Can return a lot of data—use a narrow time range.

Arguments:

  • accessControlledDoorUuids (array of strings): UUIDs of the access-controlled doors.

  • startTime (string): Start of the time range (ISO 8601).

  • endTime (string): End of the time range (ISO 8601).

The credSource field indicates how the event was triggered:

  • REMOTE: Rhombus Key app remote unlock.

  • REMOTE (Admin): Unlock via Rhombus console or browser/mobile app.

  • BLE_WAVE: User waved hand over the reader.

  • NFC: User tapped badge or phone on the reader.


Retrieves environmental gateway events (sensor readings, derived values) for a device in a time range. Timestamps are in the device timezone, not necessarily UTC.

Arguments:

  • deviceUuid (string): UUID of the environmental gateway device.

  • startTime (string): Start of range (ISO 8601).

  • endTime (string): End of range (ISO 8601).


When eventType is "climate-sensor":

Retrieves climate sensor events (temperature, humidity, air quality, etc.) for a sensor in a time range. Timestamps are in the sensor timezone, not necessarily UTC.

Arguments:

  • sensorUuid (string): UUID of the climate sensor.

  • startTime (string): Start of range (ISO 8601).

  • endTime (string): End of range (ISO 8601).

  • limit (number, optional): Max events to return. Default 1000.


When eventType is "component-events":

Retrieves all component event types for a location in a time range. Most flexible option; filter by event type via componentEventTypes. Timestamps are in the location timezone, not necessarily UTC.

Arguments:

  • locationUuid (string): UUID of the location.

  • componentEventTypes (array, optional): Event types to include. If empty or omitted, returns all types.

  • startTime (string): Start of range (ISO 8601).

  • endTime (string): End of range (ISO 8601).

Valid event types include:

  • DoorbellEvent: Doorbell button press events

  • CredentialReceivedEvent: Badge/credential scans (NFC, BLE_WAVE, REMOTE unlocks)

  • DoorStateChangeEvent: Door state changes (locked/unlocked)

  • ButtonEvent: Generic button press events

  • PanicButtonEvent: Panic/emergency button activations

  • DoorReaderStateChangeEvent: Changes in door reader state

  • DoorRelayStateChangeEvent: Changes in door relay state

  • AccessControlUnitTamperEvent: Tamper detection events

  • AccessControlUnitBatteryStateChangeEvent: Battery state changes

  • WaveToUnlockIntentExpiredEvent: Wave-to-unlock timeout events

  • DoorAuthFirstInStateEvent: First-in authentication state events

  • DoorScheduleFirstInStateEvent: First-in schedule state events

  • And more (see input schema for full list).


When eventType is "camera":

Retrieves footage seekpoints for one camera: all activity types returned for the search window (not limited to human motion). Each item includes an activity string plus timestamp; plate/vehicle/face fields appear when the API provides them. Use lpr-tool for org LPR saved vehicles, labels, and dedicated plate search.

Arguments:

  • cameraUuid (string): UUID of the camera.

  • startTime (string): Start of range (ISO 8601).

  • duration (number): Search window in seconds. Default 3600 (1 hour).

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

faces-toolA

This tool interacts with the Rhombus face recognition system to retrieve information about face sightings and registered faces.

If the user is asking about how many people were seen (head count / occupancy), use the report-tool with GET_OCCUPANCY_ENABLED_CAMERAS and GET_OCCUPANCY_COUNT_REPORT instead. This tool (faces-tool) is best for identifying who was seen (unique individuals by name), and its face count data is also automatically included in report-tool people-counting responses via the faceCountEnrichment field.

Important for person-presence questions: When asked whether specific people were seen or are present, you should ALSO call events-tool with eventType "access-control" to check badge-in records. Face recognition and access control are complementary — someone may badge in without face recognition triggering, or be seen by a camera without badging in.

If the requestType is "get-face-events":

  • Use this tool to answer questions about face sightings, including questions like "who was in the office" or "who was seen today". Can be used for reporting, to generate a report on who was seen by the camera system.

  • Automatic name resolution: You can pass partial or first-name-only names in faceNames (e.g., "Brandon", "Omar"). The tool automatically looks up the registered faces directory and resolves them to exact names and person UUIDs before searching. Check the "resolvedNames" field in the response to see what each queried name was matched to (null means no match found).

  • You can filter face events using parameters like 'faceNames', 'hasEmbedding', 'hasName', 'labels', 'locationUuids', 'personUuids', and a time range using 'rangeStart' and 'rangeEnd' (timestamps in milliseconds).

  • If you'd like to know about all face events at a location, pass in a location UUID and no device UUIDs. This will correctly return all face events at that location.

  • When the user asks about a specific person at a location (e.g. "Jane Doe at Main Office"), call get-registered-faces first to get the list of registered names, find the best match, then call get-face-events with that precise name. The tool expects precise names as stored in the system.

  • When querying faces at a location, pass only the location UUID in searchFilter; do not pass device UUIDs in searchFilter.deviceUuids, so the API returns all faces detected at that location.

If the requestType is "get-registered-faces":

  • This tool retrieves a list of all people (registered faces) currently known to the Rhombus system for your organization. This list includes information about each registered person, including their assigned labels.

  • This returns ALL people registered in the system, regardless of the provided timestampFilter.

  • Each person in the response includes a "labels" array showing which label groups they belong to (e.g., "Engineering", "Visitors"). Use these labels to answer questions about groups of people.

If the requestType is "get-person-labels":

  • This retrieves a mapping of all person UUIDs to their assigned labels across the organization.

  • Use this to discover what label groups exist and which registered faces belong to each group.

  • Useful when the user asks about a group (e.g., "was anyone from Engineering seen today?") — get the labels first, find the person UUIDs for that label, then query face events filtered by those personUuids or labels.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

get-entity-toolA

Retrieves entities (or devices) of certain types. Can request multiple entity types at once. The return structure is a JSON string that contains the states of the requested entities. This data is exact. Whatever entities exist will be returned here.

This is the primary tool for checking device health and connectivity status. Each device in the response includes a "connected" boolean field indicating whether it is currently online (true) or offline (false). When asked about device health, offline devices, or connectivity issues, use this tool to fetch all device types and check the "connected" field to identify which devices are offline or unreachable.

get-org-informationB

Get general information about the organization including org name, camera configuration defaults, contact information, and org settings.

guest-management-toolA

This tool manages Rhombus guest/visitor operations. It can list all guests, retrieve activity logs, and filter activities by location.

It has the following modes of operation, determined by the "requestType" parameter:

  • get-all-guests: List all guests across the organization with their check-in status, host, company, and contact info.

  • get-activity-logs: Get org-wide guest activity logs (sign-ins, sign-outs). Supports optional time range filtering via startTimeMs/endTimeMs.

  • get-activities-for-location: Get guest activity logs for a specific location. Requires locationUuid. Supports optional time range filtering.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

location-toolB

This tool performs operations on locations.

  • 'get': Retrieves all locations. When generating reports with location details, use location names not uuids.

  • 'create': Creates a new location with a name and optional address.

  • 'update': Updates an existing location (requires locationUuid).

  • 'get-labels': Retrieves all location labels for the organization.

lpr-toolA

This tool interacts with the Rhombus LPR system to retrieve information about license plate recognition events and registered license plates.

Vs events-tool (camera): events-tool with eventType camera returns that camera’s VOD footage seekpoints (many activity types on the timeline, including vehicle-related activity when present). lpr-tool is for the LPR product surface: plate events, saved vehicles, labels, and plate search APIs across the org—use it when the user needs registry, labeling, or org-wide LPR queries, not only “what showed up on this camera’s timeline.”

The system's cameras may have LPR enabled, and when it is enabled, it will detect "license plate recognition" events when it sees a license plate come into view. However, it is possible that the recognized license is only a partial match, so keep that in mind when using this tool. Users will be able to save license plates into the system, and then additionally label them with a name.

Regarding vehicle labels: Users in the Rhombus LPR system can assign labels to vehicles. When a vehicle (license plate) is assigned a label, and then later is recognized by a rhombus security camera, it will attach the label to the event and will be available on the events returned from (get-saved-vehicles).

You should use the location-tool if trying to pair vehicle events to a particular location. Never use location UUIDs in reports, use names.

As such, if the user is asking anything about a label or labels it would be best practice to first call get-vehicle-labels and then get-vehicle-events or get-vehicle-events.

This tool has 3 modes of operation, determined by the "requestType" parameter:

  • get-vehicle-events: Retrieves a list of vehicle events that have been detected by the system. Please keep in mind that this has the potential to return a lot of data. However, 7 days should be a reasonable time range to start from if the user is not specific.

  • get-saved-vehicles: Retrieves a list of saved vehicles that have been saved in the organization.

  • get-vehicle-labels: Retrieves a list of vehicle labels that have been saved in the organization.

Its very likely that "vehicle", "car", and "license plates" are used interchangeably. Please keep this in mind.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

policy-alerts-toolA

Retrieves Rhombus policy alerts. Policy alerts in the Rhombus system are generated based on user-defined alert policies configured in the Rhombus Console. These policies trigger alerts when specific events occur, such as:

  • AI & Computer Vision Events: Based on intelligent video analytics for motion, people, vehicles, facial recognition, license plate recognition, or unusual behavior.

  • Device Status Changes: Like camera disconnections or sensor low battery.

  • Physical or Visual Tamper: Detection of physical movement of a device or obstruction of a camera's field of view.

  • Access Control Events: Such as unauthorized access attempts in restricted areas.

Alerts are generated on triggers, but are NOT the same as notifications. Only certain alerts generate notifications based on user settings.

Can inquire about labels that have been seen.

Please note, this is not an exhaustive list, and there may be other types of triggers or events that generate policy alerts within the Rhombus system.

This tool allows you to filter existing alerts by existing/expiring, a specific time range (before or after a timestamp in ISO 8601 format), by a list of device UUIDs, or by a list of location UUIDs. You can also specify the maximum number of results to return. The output is provided in JSON format.

Pagination: Results are paginated and have a maximum page size. If the response includes a lastEvaluatedKey (for queryType "expiringSoon") or both lastTimestampISO and lastUuid (for queryTypes "existing" and "alert-groups"), more results are available. Pass these values back in the next call using the corresponding input parameters (lastEvaluatedKey, or lastTimestampISO and lastUuid) to retrieve the next page. Repeat until the response no longer includes these fields.

IMPORTANT: The "unhealthy-devices" queryType returns historical alert notifications that were triggered for device health issues. It does NOT return live/real-time device connection status. If no device health alert policies are configured, or alerts were dismissed, this may return empty even when devices are offline.

To check which devices are currently online/offline, use the get-entity-tool instead. The get-entity-tool returns the current state of all devices including their live connection status (the "connected" field). Request all entity types (CAMERA, DOORBELL_CAMERA, BADGE_READER, etc.) and check the "connected" field on each device to determine which are offline.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

reboot-camerasB

this tool is for rebooting one or more cameras causing them to reconnect to the server, this is a helpful option when a camera is experiencing connectivity issues or is in need of troubleshooting. THIS TOOL PERFORMS AN ACTION.

report-toolA

Scope: This tool returns aggregated counts and time-series summaries over specified intervals and scopes. Use events-tool when you need raw, event-level data (individual events with timestamps). Use this tool for high-level reports, analytics, and trends—especially over periods of a day or more.


People / occupancy counting strategy

When asked to count people on a camera or at a location, follow this strategy:

  1. Always call GET_OCCUPANCY_ENABLED_CAMERAS first to discover which cameras have occupancy counting enabled.

  2. If the target camera IS in the list, call GET_OCCUPANCY_COUNT_REPORT for that device. The response will automatically include a faceCountEnrichment field with the number of unique individuals identified by face recognition in the same time range. Present both data sources: occupancy estimate and unique face count.

  3. If the target camera is NOT in the list, tell the user that camera does not have occupancy counting enabled, and list the cameras that do. You can still call GET_SUMMARY_COUNT_REPORT with PEOPLE type — its response will also include faceCountEnrichment with unique face data as a fallback. If the PEOPLE count returns zero, the response will also include the list of occupancy-enabled cameras and a hint.

  4. When both occupancy data and face recognition data are available, synthesize both in your answer (e.g., "Occupancy estimates ~15 people. Face recognition identified 9 unique individuals during this period.").

PEOPLE type (in GET_SUMMARY_COUNT_REPORT): Not a unique person count; it counts people-detection events. Requires people detection to be enabled on the camera. Use for high-level activity trends, not for deduplicated head counts.


Summary and occupancy

  • GET_SUMMARY_COUNT_REPORT: Aggregated counts (people, faces, motion, vehicles, etc.) over time at device, location, or org scope. Interval: minutely, hourly, daily, weekly, monthly, yearly. When called with PEOPLE type at DEVICE scope, the response is automatically enriched with face recognition data.

  • GET_OCCUPANCY_ENABLED_CAMERAS: List of cameras with occupancy reporting enabled. Always call this first before any people/occupancy counting request to verify camera support.

  • GET_OCCUPANCY_COUNT_REPORT: Occupancy count time series for a specific device over a time range. Response is automatically enriched with face recognition data. If the device does not support occupancy, the response will include a hint and the list of cameras that do.


Line crossing

  • GET_LINE_CROSSING_ENABLED_CAMERAS: Cameras at a location with line crossing enabled, plus their configs. Call first to see which cameras support threshold crossing reports.

  • GET_THRESHOLD_CROSSING_COUNT_REPORT: Ingress/egress counts for line crossings over time. Supports human and vehicle detection; bucket size: quarter hour, hour, day, week. Response includes computed metrics: average entries/exits per hour, hour with most entries/exits, busiest hour (with breakdown).


Custom LLM events

  • FIND_PROMPT_CONFIGURATIONS: All custom event prompt configurations (e.g. "black dog sightings", "delivery truck arrivals", "parking availability %"). Each has prompt text, UUID, and promptType (COUNT, PERCENT, BOOLEAN). Call first to discover available custom events.

  • GET_CUSTOM_LLM_REPORT: This is the PRIMARY way to get custom event reports. Aggregated time-series for one custom event by prompt UUID. Automatically selects the correct API based on promptType: COUNT (numeric counts), PERCENT (percentages), BOOLEAN (true/false). Intervals: minutely, quarter-hourly, hourly, daily, weekly, monthly. Always use this for custom event reports, trends, and analytics. Use FIND_PROMPT_CONFIGURATIONS first to get the promptUuid and promptType.

  • GET_CUSTOM_EVENTS_REPORT: Raw individual event values only (not aggregated). Use only when you need per-event granularity, not for reports or trends.


Audit and diagnostics

  • GET_AUDIT_FEED: Audit log of all user/admin actions in the org over a time range. Returns who did what and when (principalName, targetName, action, displayText).

  • GET_DIAGNOSTIC_FEED: Device diagnostic events over a time range.

  • GET_THRESHOLD_CROSSING_EVENTS: Individual line-crossing events (not aggregated counts).

  • GET_PEOPLE_COUNT_EVENTS: Most recent people count readings for specified devices.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

rules-toolA

This tool manages Rhombus automation rules for triggering actions based on events.

It has the following modes of operation, determined by the "requestType" parameter:

  • list: List all automation rules in the organization.

  • create: Create a new automation rule. Requires ruleName and ruleConfig (JSON string with the rule definition).

  • update: Update an existing rule. Requires ruleUuid and ruleConfig (JSON string with updated fields).

  • delete: Delete a rule. Requires ruleUuid.

  • get-records: Get the event trigger history for a specific rule. Requires ruleUuid.

Rules can trigger notifications, recordings, and other actions based on events from cameras, sensors, doors, etc.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

search-toolA

This tool performs visual and data searches across Rhombus camera footage and events.

It has the following modes of operation, determined by the "requestType" parameter:

  • license-plate: Search for license plate sightings by plate number. Requires query (the plate number or partial match).

  • object-by-color: Search for objects by color in camera footage. Requires query (color name) and cameraUuid.

  • object-by-text: Semantic search for objects in footage using a text description. Requires query (text description).

  • motion-search: Search for motion events in a camera's field of view. Requires cameraUuid, startTime, and endTime.

All search types support optional startTime and endTime to narrow the search window. Use the get-entity-tool with entityType CAMERA to get camera UUIDs.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

time-conversion-toolA

This tool is capable of converting to and from epoch and ISO 8601 timestamps. Use this tool when you have one time format and need to convert to the other format. The tool will automatically detect the input format and convert to the other format.

time-toolA

This tool is capable of returning the time from a natural language query. If the user asks about the 'current time' use this tool. Try to kee time_description as close to the users initial query as possible. For example if someone says 'was X person seen today?' then time_description should be 'today'.

update-toolA

This tool allows updating configuration settings for various Rhombus entities. Currently supports:

  • Cameras: Update video settings (resolution, HDR, WDR, brightness, contrast, etc.), audio settings (recording, microphone, speaker), and device settings (name, timezone, LED control).

For LED control, use EXACTLY these field names in cameraDeviceSettings:

  • To turn LED off: {"led_stealth_mode": true} (recommended) or {"led_mode": "always_off"}

  • To turn LED on: {"led_stealth_mode": false} or {"led_mode": "always_on"} or {"led_mode": "auto"}

  • IMPORTANT: Use underscore in field names (led_mode, led_stealth_mode), not camelCase

The tool supports faceted UUIDs (e.g., "cameraUuid.v0" or "cameraUuid.v1") to update specific camera facets. If no facet is specified, defaults to "v0".

The tool guides users through a multi-step process:

  1. Entity selection (if not provided)

  2. Settings configuration with current values shown

  3. Confirmation and application of changes

Future support planned for:

  • Climate sensors

  • Door controllers

  • Environmental gateways

  • Audio gateways

  • Doorbell cameras

  • Badge readers

The tool uses elicitation forms for rich user interaction and shows current settings before updates.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

user-access-trail-toolA

This tool traces a specific user's physical access events across all doors and access points. It answers questions like "Where did this person badge in?" or "Show me all access events for this user."

It has the following modes of operation, determined by the "requestType" parameter:

  • get-access-events-by-user: Get access events using a known userUuid. Requires userUuid.

  • get-access-events-by-email: Get access events by looking up the user's email first. Requires email. Automatically resolves the user UUID.

Both modes support optional startTimeMs, endTimeMs, and limit parameters. Use the user-tool to find user UUIDs if needed, or use the email-based lookup directly.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

user-audit-toolA

This tool retrieves configuration audit trails for specific users or specific targets (devices, policies, etc.). Unlike the general audit feed, this focuses on a SINGLE user or a SINGLE target entity.

It has the following modes of operation, determined by the "requestType" parameter:

  • audit-by-user: Get all configuration changes made BY a specific user. Requires userUuid (use user-tool to find it). Answers: "What did this admin change recently?"

  • audit-by-target: Get all configuration changes made TO a specific entity (camera, door, policy, etc.). Requires targetUuid. Answers: "Who changed the settings on this camera?"

Both modes return audit events with action, display text, who did it, what was changed, and when.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

user-toolA

This tool manages Rhombus user operations including listing users, finding users by email, and viewing permissions.

It has the following modes of operation, determined by the "requestType" parameter:

  • list-users: List all users in the organization with their details and roles.

  • find-by-email: Find a specific user by their email address. Requires the email parameter.

  • get-permissions: Get the permissions for the current API user/token.

  • get-permission-groups: List all permission groups defined in the organization. Each row can be very large — see below.

User UUIDs returned here can be used with the access-control-tool to look up credentials.

IMPORTANT for 'get-permission-groups': Each permission group row includes five access maps whose size scales with the org's locations, devices, and other permission groups. The total payload for 'userPermissionGroupAccessMap' across all rows grows O(N^2) in the number of permission groups. Before calling, decide which fields you actually need and pass them via 'includeFields':

  • Safe/small fields (O(1) per row): 'permissionGroups.uuid', 'permissionGroups.name', 'permissionGroups.description', 'permissionGroups.mutable', 'permissionGroups.superAdmin', 'permissionGroups.installer', 'permissionGroups.defaultPermissionForNewLocations', 'permissionGroups.defaultAccessControlPermissionForNewLocations'.

  • Bounded fields (O(K) per row): 'permissionGroups.functionalityList', 'permissionGroups.accessibleLocations', 'permissionGroups.assignablePermissionGroups'.

  • Heavy fields (O(locations) / O(devices) / O(groups) per row): 'permissionGroups.locationAccessMap', 'permissionGroups.accessControlLocationAccessMap', 'permissionGroups.deviceAccessMap', 'permissionGroups.userPermissionGroupAccessMap', 'permissionGroups.locationGranularAccessMap'. Only request these when you specifically need them for a user. Typical usage when just picking a role uuid: 'includeFields: ["permissionGroups.uuid", "permissionGroups.name", "permissionGroups.description"]'.

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

video-walls-toolB

This tool interacts with Rhombus video walls. Rhombus video walls are a collection of camera feeds combined into a single view, allowing users to monitor multiple cameras.

The layout of created video walls is automatically determined by the number of cameras in video wall settings "numVisibleDevicesAtOnce".

Output filtering (all tools):

  • includeFields (string[]): Dot-notation paths to keep in the response (e.g. "vehicleEvents.vehicleLicensePlate"). Omit to return all fields.

  • filterBy (array): Predicates to filter array items. Each entry: {field, op, value} where op is one of = != > >= < <= contains. All conditions are ANDed. Example: [{field:"vehicleLicensePlate", op:"=", value:"ABC123"}] WARNING: some tool responses exceed 400k characters — use these params to request only the data you need.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/RhombusSystems/rhombus-node-mcp'

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