UNPKG

@jupiterone/jupiterone-mcp

Version:

Model Context Protocol server for JupiterOne account rules and rule details

60 lines 2.85 kB
"use strict"; 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