rhombus-node-mcp
Version:
MCP server for Rhombus API
53 lines (52 loc) • 2.1 kB
JavaScript
import { z } from "zod";
import { INCLUDE_FIELDS_ARG, FILTER_BY_ARG } from "../util.js";
export var CameraUptimeRequestType;
(function (CameraUptimeRequestType) {
CameraUptimeRequestType["GET_CAMERA_UPTIME"] = "get-camera-uptime";
CameraUptimeRequestType["GET_FLEET_UPTIME"] = "get-fleet-uptime";
})(CameraUptimeRequestType || (CameraUptimeRequestType = {}));
export const TOOL_ARGS = {
requestType: z
.nativeEnum(CameraUptimeRequestType)
.describe("The type of uptime request to make."),
cameraUuid: z
.string()
.nullable()
.describe("Camera UUID. Required for 'get-camera-uptime'."),
startTimeSec: z
.number()
.describe("Start time as UNIX timestamp in seconds. Required for all requests."),
endTimeSec: z
.number()
.describe("End time as UNIX timestamp in seconds. Required for all requests."),
includeFields: INCLUDE_FIELDS_ARG,
filterBy: FILTER_BY_ARG,
};
const TOOL_ARGS_SCHEMA = z.object(TOOL_ARGS);
const CameraUptimeSchema = z.object({
cameraUuid: z.string().optional(),
cameraName: z.string().optional(),
locationUuid: z.string().optional(),
totalUptimeSeconds: z.number().optional(),
totalPeriodSeconds: z.number().optional(),
uptimePercentage: z.number().optional(),
outageCount: z.number().optional(),
longestOutageSeconds: z.number().optional(),
});
export const OUTPUT_SCHEMA = z.object({
cameraUptime: CameraUptimeSchema.optional().describe("Uptime stats for a single camera"),
fleetUptime: z
.array(CameraUptimeSchema)
.optional()
.describe("Uptime stats for all cameras in the fleet, sorted by worst uptime first"),
fleetSummary: z
.object({
totalCameras: z.number().optional(),
averageUptimePercentage: z.number().optional(),
worstCamera: z.string().optional(),
worstUptimePercentage: z.number().optional(),
})
.optional()
.describe("Fleet-wide uptime summary"),
error: z.string().optional().describe("An error message if the request failed."),
});