@jupiterone/jupiterone-mcp
Version:
Model Context Protocol server for JupiterOne account rules and rule details
60 lines • 2.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.alertTools = void 0;
const zod_1 = require("zod");
const load_description_js_1 = require("../../utils/load-description.js");
const result_js_1 = require("./result.js");
const types_js_1 = require("./types.js");
const getActiveAlertsOutput = {
total: zod_1.z.number(),
returned: zod_1.z.number(),
activeAlerts: zod_1.z.array(zod_1.z.record(zod_1.z.any())),
};
exports.alertTools = [
(0, types_js_1.defineTool)({
name: 'get-active-alerts',
title: 'Get Active Alerts',
description: (0, load_description_js_1.loadDescription)('list-alerts.md'),
inputSchema: {
limit: zod_1.z.number().min(1).max(1000).optional(),
},
outputSchema: getActiveAlertsOutput,
annotations: types_js_1.READ_ONLY,
errorContext: 'Error getting active alerts',
handler: async ({ limit }, client) => {
const instances = await client.getAllAlertInstances('ACTIVE');
if (!instances || !Array.isArray(instances)) {
throw new Error('Invalid response from JupiterOne API: instances is not an array');
}
const limitedInstances = limit ? instances.slice(0, limit) : instances;
return (0, result_js_1.structuredResult)({
total: instances.length,
returned: limitedInstances.length,
activeAlerts: limitedInstances.map((instance) => ({
id: instance.id,
name: instance.questionRuleInstance?.name ||
instance.reportRuleInstance?.name ||
'Unknown',
description: instance.questionRuleInstance?.description ||
instance.reportRuleInstance?.description,
level: instance.level,
status: instance.status,
createdOn: instance.createdOn,
lastUpdatedOn: instance.lastUpdatedOn,
lastEvaluationBeginOn: instance.lastEvaluationBeginOn,
lastEvaluationEndOn: instance.lastEvaluationEndOn,
recordCount: instance.lastEvaluationResult?.rawDataDescriptors?.[0]?.recordCount || 0,
tags: instance.questionRuleInstance?.tags || [],
labels: instance.questionRuleInstance?.labels || [],
outputs: instance.lastEvaluationResult?.outputs || [],
users: instance.users,
ruleId: instance.ruleId,
ruleVersion: instance.ruleVersion,
endReason: instance.endReason,
dismissedOn: instance.dismissedOn,
})),
});
},
}),
];
//# sourceMappingURL=alerts.js.map