UNPKG

@jupiterone/jupiterone-mcp

Version:

Model Context Protocol server for JupiterOne account rules and rule details

65 lines 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.accountTools = void 0; const zod_1 = require("zod"); const package_json_1 = require("../../../package.json"); const load_description_js_1 = require("../../utils/load-description.js"); const errors_js_1 = require("./errors.js"); const result_js_1 = require("./result.js"); const types_js_1 = require("./types.js"); const testConnectionOutput = { connected: zod_1.z.boolean(), account: zod_1.z.record(zod_1.z.any()).nullable().optional(), reason: zod_1.z.string().optional(), version: zod_1.z.string().optional(), }; // `.nullish()`: one account with a null displayName must not fail validation for the whole list. const accountSummary = zod_1.z.object({ accountId: zod_1.z.string().nullish(), displayName: zod_1.z.string().nullish(), }); const listAccountsOutput = { accounts: zod_1.z.array(accountSummary), }; exports.accountTools = [ (0, types_js_1.defineTool)({ name: 'test-connection', title: 'Test Connection', description: (0, load_description_js_1.loadDescription)('test-connection.md'), inputSchema: {}, outputSchema: testConnectionOutput, annotations: types_js_1.READ_ONLY, errorContext: 'Connection test failed', handler: async (_params, client, _validator, context) => { try { const account = await client.getAccountInfo(); return (0, result_js_1.structuredResult)({ connected: true, account, version: package_json_1.version }); } catch (error) { const deniedStatus = (0, errors_js_1.accessDeniedStatus)(error); const reason = deniedStatus !== null ? (0, errors_js_1.accessDeniedMessage)(deniedStatus, !!context.resolveAccounts) : error instanceof Error ? error.message : 'Unknown error'; return (0, result_js_1.structuredResult)({ connected: false, reason, version: package_json_1.version }); } }, }), (0, types_js_1.defineTool)({ name: 'list-accounts', title: 'List Accounts', description: (0, load_description_js_1.loadDescription)('list-accounts.md'), inputSchema: {}, outputSchema: listAccountsOutput, annotations: types_js_1.READ_ONLY, accountAgnostic: true, requiresAccountResolver: true, errorContext: 'Failed to list accounts', handler: async (_params, _client, _validator, context) => { const accounts = (await context.resolveAccounts?.()) ?? []; return (0, result_js_1.structuredResult)({ accounts }); }, }), ]; //# sourceMappingURL=account.js.map