itglue-mcp 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +492 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +24 -2
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +68 -1
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/audit-logger.d.ts +4 -0
- package/dist/lib/audit-logger.d.ts.map +1 -1
- package/dist/lib/audit-logger.js +15 -0
- package/dist/lib/audit-logger.js.map +1 -1
- package/dist/tools/attachments.d.ts +2 -2
- package/dist/tools/auxiliary/audit/compliance-check.d.ts +3 -3
- package/dist/tools/configurations.d.ts +98 -0
- package/dist/tools/configurations.d.ts.map +1 -1
- package/dist/tools/configurations.js +136 -0
- package/dist/tools/configurations.js.map +1 -1
- package/dist/tools/contacts.d.ts +92 -0
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +131 -0
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/flexible-assets.d.ts +96 -0
- package/dist/tools/flexible-assets.d.ts.map +1 -1
- package/dist/tools/flexible-assets.js +176 -0
- package/dist/tools/flexible-assets.js.map +1 -1
- package/dist/tools/locations.d.ts +110 -0
- package/dist/tools/locations.d.ts.map +1 -1
- package/dist/tools/locations.js +155 -0
- package/dist/tools/locations.js.map +1 -1
- package/dist/tools/organizations.d.ts +36 -0
- package/dist/tools/organizations.d.ts.map +1 -1
- package/dist/tools/organizations.js +61 -0
- package/dist/tools/organizations.js.map +1 -1
- package/dist/tools/passwords.d.ts +92 -0
- package/dist/tools/passwords.d.ts.map +1 -1
- package/dist/tools/passwords.js +148 -0
- package/dist/tools/passwords.js.map +1 -1
- package/dist/tools/related-items.d.ts +2 -2
- package/dist/types/itglue.d.ts +17 -0
- package/dist/types/itglue.d.ts.map +1 -1
- package/dist/types/itglue.js.map +1 -1
- package/package.json +1 -1
- package/skills/find-password/CLAUDE.md +1 -0
- package/skills/report-generator/CLAUDE.md +5 -1
package/dist/index.js
CHANGED
|
@@ -13,14 +13,14 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextpro
|
|
|
13
13
|
import { APIClient } from './lib/api-client.js';
|
|
14
14
|
import { AuditLogger } from './lib/audit-logger.js';
|
|
15
15
|
// Import tool schemas and handlers
|
|
16
|
-
import { SearchOrganizationsSchema, ListOrganizationTypesSchema, searchOrganizations, listOrganizationTypes, } from './tools/organizations.js';
|
|
16
|
+
import { SearchOrganizationsSchema, ListOrganizationTypesSchema, UpdateOrganizationSchema, searchOrganizations, listOrganizationTypes, updateOrganization, } from './tools/organizations.js';
|
|
17
17
|
import { GlobalSearchSchema, globalSearch } from './tools/search.js';
|
|
18
|
-
import { ListConfigurationsSchema, listConfigurations } from './tools/configurations.js';
|
|
19
|
-
import { ListPasswordsSchema, GetPasswordSchema, listPasswords, getPassword, } from './tools/passwords.js';
|
|
20
|
-
import { ListFlexibleAssetsSchema, GetFlexibleAssetSchema, listFlexibleAssets, getFlexibleAsset, } from './tools/flexible-assets.js';
|
|
18
|
+
import { ListConfigurationsSchema, CreateConfigurationSchema, UpdateConfigurationSchema, listConfigurations, createConfiguration, updateConfiguration, } from './tools/configurations.js';
|
|
19
|
+
import { ListPasswordsSchema, GetPasswordSchema, CreatePasswordSchema, UpdatePasswordSchema, listPasswords, getPassword, createPassword, updatePassword, } from './tools/passwords.js';
|
|
20
|
+
import { ListFlexibleAssetTypesSchema, ListFlexibleAssetsSchema, GetFlexibleAssetSchema, CreateFlexibleAssetSchema, UpdateFlexibleAssetSchema, listFlexibleAssetTypes, listFlexibleAssets, getFlexibleAsset, createFlexibleAsset, updateFlexibleAsset, } from './tools/flexible-assets.js';
|
|
21
21
|
import { ListDocumentsSchema, listDocuments } from './tools/documents.js';
|
|
22
|
-
import { ListContactsArgsSchema, listContacts } from './tools/contacts.js';
|
|
23
|
-
import { ListLocationsArgsSchema, listLocations } from './tools/locations.js';
|
|
22
|
+
import { ListContactsArgsSchema, CreateContactSchema, UpdateContactSchema, listContacts, createContact, updateContact, } from './tools/contacts.js';
|
|
23
|
+
import { ListLocationsArgsSchema, CreateLocationSchema, UpdateLocationSchema, listLocations, createLocation, updateLocation, } from './tools/locations.js';
|
|
24
24
|
import { ListAttachmentsArgsSchema, listAttachments } from './tools/attachments.js';
|
|
25
25
|
import { ListConfigurationInterfacesArgsSchema, listConfigurationInterfaces, } from './tools/configuration-interfaces.js';
|
|
26
26
|
import { GetRelatedItemsArgsSchema, getRelatedItems } from './tools/related-items.js';
|
|
@@ -110,6 +110,13 @@ async function main() {
|
|
|
110
110
|
},
|
|
111
111
|
},
|
|
112
112
|
},
|
|
113
|
+
annotations: {
|
|
114
|
+
title: 'Search Organizations',
|
|
115
|
+
readOnlyHint: true,
|
|
116
|
+
destructiveHint: false,
|
|
117
|
+
idempotentHint: true,
|
|
118
|
+
openWorldHint: true,
|
|
119
|
+
},
|
|
113
120
|
},
|
|
114
121
|
{
|
|
115
122
|
name: 'itglue_list_organization_types',
|
|
@@ -118,6 +125,13 @@ async function main() {
|
|
|
118
125
|
type: 'object',
|
|
119
126
|
properties: {},
|
|
120
127
|
},
|
|
128
|
+
annotations: {
|
|
129
|
+
title: 'List Organization Types',
|
|
130
|
+
readOnlyHint: true,
|
|
131
|
+
destructiveHint: false,
|
|
132
|
+
idempotentHint: true,
|
|
133
|
+
openWorldHint: true,
|
|
134
|
+
},
|
|
121
135
|
},
|
|
122
136
|
{
|
|
123
137
|
name: 'itglue_search_global',
|
|
@@ -139,6 +153,34 @@ async function main() {
|
|
|
139
153
|
},
|
|
140
154
|
required: ['query'],
|
|
141
155
|
},
|
|
156
|
+
annotations: {
|
|
157
|
+
title: 'Global Search',
|
|
158
|
+
readOnlyHint: true,
|
|
159
|
+
destructiveHint: false,
|
|
160
|
+
idempotentHint: true,
|
|
161
|
+
openWorldHint: true,
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: 'itglue_list_flexible_asset_types',
|
|
166
|
+
description: 'List all flexible asset types (custom documentation categories like "Network", "Application", "Backup"). Returns type IDs needed for itglue_list_flexible_assets. Optionally includes field definitions for each type.',
|
|
167
|
+
inputSchema: {
|
|
168
|
+
type: 'object',
|
|
169
|
+
properties: {
|
|
170
|
+
include_fields: {
|
|
171
|
+
type: 'boolean',
|
|
172
|
+
description: 'Include field definitions (name, kind, required) for each type',
|
|
173
|
+
default: false,
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
annotations: {
|
|
178
|
+
title: 'List Flexible Asset Types',
|
|
179
|
+
readOnlyHint: true,
|
|
180
|
+
destructiveHint: false,
|
|
181
|
+
idempotentHint: true,
|
|
182
|
+
openWorldHint: true,
|
|
183
|
+
},
|
|
142
184
|
},
|
|
143
185
|
// Tier 2: Entity Navigation
|
|
144
186
|
{
|
|
@@ -169,6 +211,13 @@ async function main() {
|
|
|
169
211
|
},
|
|
170
212
|
required: ['organization_id'],
|
|
171
213
|
},
|
|
214
|
+
annotations: {
|
|
215
|
+
title: 'List Configurations',
|
|
216
|
+
readOnlyHint: true,
|
|
217
|
+
destructiveHint: false,
|
|
218
|
+
idempotentHint: true,
|
|
219
|
+
openWorldHint: true,
|
|
220
|
+
},
|
|
172
221
|
},
|
|
173
222
|
{
|
|
174
223
|
name: 'itglue_list_passwords',
|
|
@@ -194,6 +243,13 @@ async function main() {
|
|
|
194
243
|
},
|
|
195
244
|
required: ['organization_id'],
|
|
196
245
|
},
|
|
246
|
+
annotations: {
|
|
247
|
+
title: 'List Passwords',
|
|
248
|
+
readOnlyHint: true,
|
|
249
|
+
destructiveHint: false,
|
|
250
|
+
idempotentHint: true,
|
|
251
|
+
openWorldHint: true,
|
|
252
|
+
},
|
|
197
253
|
},
|
|
198
254
|
{
|
|
199
255
|
name: 'itglue_list_flexible_assets',
|
|
@@ -219,6 +275,13 @@ async function main() {
|
|
|
219
275
|
},
|
|
220
276
|
required: ['organization_id', 'flexible_asset_type_id'],
|
|
221
277
|
},
|
|
278
|
+
annotations: {
|
|
279
|
+
title: 'List Flexible Assets',
|
|
280
|
+
readOnlyHint: true,
|
|
281
|
+
destructiveHint: false,
|
|
282
|
+
idempotentHint: true,
|
|
283
|
+
openWorldHint: true,
|
|
284
|
+
},
|
|
222
285
|
},
|
|
223
286
|
{
|
|
224
287
|
name: 'itglue_list_documents',
|
|
@@ -240,6 +303,13 @@ async function main() {
|
|
|
240
303
|
},
|
|
241
304
|
required: ['organization_id'],
|
|
242
305
|
},
|
|
306
|
+
annotations: {
|
|
307
|
+
title: 'List Documents',
|
|
308
|
+
readOnlyHint: true,
|
|
309
|
+
destructiveHint: false,
|
|
310
|
+
idempotentHint: true,
|
|
311
|
+
openWorldHint: true,
|
|
312
|
+
},
|
|
243
313
|
},
|
|
244
314
|
{
|
|
245
315
|
name: 'itglue_list_contacts',
|
|
@@ -265,6 +335,13 @@ async function main() {
|
|
|
265
335
|
},
|
|
266
336
|
required: ['organization_id'],
|
|
267
337
|
},
|
|
338
|
+
annotations: {
|
|
339
|
+
title: 'List Contacts',
|
|
340
|
+
readOnlyHint: true,
|
|
341
|
+
destructiveHint: false,
|
|
342
|
+
idempotentHint: true,
|
|
343
|
+
openWorldHint: true,
|
|
344
|
+
},
|
|
268
345
|
},
|
|
269
346
|
{
|
|
270
347
|
name: 'itglue_list_locations',
|
|
@@ -286,6 +363,13 @@ async function main() {
|
|
|
286
363
|
},
|
|
287
364
|
required: ['organization_id'],
|
|
288
365
|
},
|
|
366
|
+
annotations: {
|
|
367
|
+
title: 'List Locations',
|
|
368
|
+
readOnlyHint: true,
|
|
369
|
+
destructiveHint: false,
|
|
370
|
+
idempotentHint: true,
|
|
371
|
+
openWorldHint: true,
|
|
372
|
+
},
|
|
289
373
|
},
|
|
290
374
|
{
|
|
291
375
|
name: 'itglue_list_attachments',
|
|
@@ -319,6 +403,13 @@ async function main() {
|
|
|
319
403
|
},
|
|
320
404
|
required: ['resource_type', 'resource_id'],
|
|
321
405
|
},
|
|
406
|
+
annotations: {
|
|
407
|
+
title: 'List Attachments',
|
|
408
|
+
readOnlyHint: true,
|
|
409
|
+
destructiveHint: false,
|
|
410
|
+
idempotentHint: true,
|
|
411
|
+
openWorldHint: true,
|
|
412
|
+
},
|
|
322
413
|
},
|
|
323
414
|
{
|
|
324
415
|
name: 'itglue_list_configuration_interfaces',
|
|
@@ -340,6 +431,13 @@ async function main() {
|
|
|
340
431
|
},
|
|
341
432
|
required: ['configuration_id'],
|
|
342
433
|
},
|
|
434
|
+
annotations: {
|
|
435
|
+
title: 'List Configuration Interfaces',
|
|
436
|
+
readOnlyHint: true,
|
|
437
|
+
destructiveHint: false,
|
|
438
|
+
idempotentHint: true,
|
|
439
|
+
openWorldHint: true,
|
|
440
|
+
},
|
|
343
441
|
},
|
|
344
442
|
{
|
|
345
443
|
name: 'itglue_get_related_items',
|
|
@@ -366,6 +464,13 @@ async function main() {
|
|
|
366
464
|
},
|
|
367
465
|
required: ['resource_type', 'resource_id'],
|
|
368
466
|
},
|
|
467
|
+
annotations: {
|
|
468
|
+
title: 'Get Related Items',
|
|
469
|
+
readOnlyHint: true,
|
|
470
|
+
destructiveHint: false,
|
|
471
|
+
idempotentHint: true,
|
|
472
|
+
openWorldHint: true,
|
|
473
|
+
},
|
|
369
474
|
},
|
|
370
475
|
// Tier 3: Detail Retrieval
|
|
371
476
|
{
|
|
@@ -390,6 +495,13 @@ async function main() {
|
|
|
390
495
|
},
|
|
391
496
|
required: ['password_id'],
|
|
392
497
|
},
|
|
498
|
+
annotations: {
|
|
499
|
+
title: 'Get Password',
|
|
500
|
+
readOnlyHint: true,
|
|
501
|
+
destructiveHint: false,
|
|
502
|
+
idempotentHint: true,
|
|
503
|
+
openWorldHint: true,
|
|
504
|
+
},
|
|
393
505
|
},
|
|
394
506
|
{
|
|
395
507
|
name: 'itglue_get_flexible_asset',
|
|
@@ -408,6 +520,13 @@ async function main() {
|
|
|
408
520
|
},
|
|
409
521
|
required: ['flexible_asset_id'],
|
|
410
522
|
},
|
|
523
|
+
annotations: {
|
|
524
|
+
title: 'Get Flexible Asset',
|
|
525
|
+
readOnlyHint: true,
|
|
526
|
+
destructiveHint: false,
|
|
527
|
+
idempotentHint: true,
|
|
528
|
+
openWorldHint: true,
|
|
529
|
+
},
|
|
411
530
|
},
|
|
412
531
|
// Auxiliary Tools: Audit & Compliance
|
|
413
532
|
{
|
|
@@ -432,6 +551,13 @@ async function main() {
|
|
|
432
551
|
},
|
|
433
552
|
required: ['organization_id'],
|
|
434
553
|
},
|
|
554
|
+
annotations: {
|
|
555
|
+
title: 'Compliance Check',
|
|
556
|
+
readOnlyHint: true,
|
|
557
|
+
destructiveHint: false,
|
|
558
|
+
idempotentHint: true,
|
|
559
|
+
openWorldHint: true,
|
|
560
|
+
},
|
|
435
561
|
},
|
|
436
562
|
// Auxiliary Tools: Staleness Detection
|
|
437
563
|
{
|
|
@@ -468,6 +594,13 @@ async function main() {
|
|
|
468
594
|
},
|
|
469
595
|
required: ['organization_id'],
|
|
470
596
|
},
|
|
597
|
+
annotations: {
|
|
598
|
+
title: 'Detect Staleness',
|
|
599
|
+
readOnlyHint: true,
|
|
600
|
+
destructiveHint: false,
|
|
601
|
+
idempotentHint: true,
|
|
602
|
+
openWorldHint: true,
|
|
603
|
+
},
|
|
471
604
|
},
|
|
472
605
|
// Auxiliary Tools: Data Validation
|
|
473
606
|
{
|
|
@@ -492,6 +625,13 @@ async function main() {
|
|
|
492
625
|
},
|
|
493
626
|
required: ['organization_id'],
|
|
494
627
|
},
|
|
628
|
+
annotations: {
|
|
629
|
+
title: 'Validate Data',
|
|
630
|
+
readOnlyHint: true,
|
|
631
|
+
destructiveHint: false,
|
|
632
|
+
idempotentHint: true,
|
|
633
|
+
openWorldHint: true,
|
|
634
|
+
},
|
|
495
635
|
},
|
|
496
636
|
// Auxiliary Tools: Reporting
|
|
497
637
|
{
|
|
@@ -518,6 +658,296 @@ async function main() {
|
|
|
518
658
|
},
|
|
519
659
|
required: ['organization_id'],
|
|
520
660
|
},
|
|
661
|
+
annotations: {
|
|
662
|
+
title: 'Generate Report',
|
|
663
|
+
readOnlyHint: true,
|
|
664
|
+
destructiveHint: false,
|
|
665
|
+
idempotentHint: true,
|
|
666
|
+
openWorldHint: true,
|
|
667
|
+
},
|
|
668
|
+
},
|
|
669
|
+
// Tier 4: Write Operations
|
|
670
|
+
{
|
|
671
|
+
name: 'itglue_update_organization',
|
|
672
|
+
description: '✏️ Update an organization\'s details (name, description, quick notes, short name). AUDIT LOGGED.',
|
|
673
|
+
inputSchema: {
|
|
674
|
+
type: 'object',
|
|
675
|
+
properties: {
|
|
676
|
+
organization_id: { type: 'string', description: 'Organization ID to update' },
|
|
677
|
+
name: { type: 'string', description: 'New organization name' },
|
|
678
|
+
description: { type: 'string', description: 'Organization description' },
|
|
679
|
+
quick_notes: { type: 'string', description: 'Quick notes (displayed prominently in ITGlue UI)' },
|
|
680
|
+
short_name: { type: 'string', description: 'Short name / abbreviation' },
|
|
681
|
+
},
|
|
682
|
+
required: ['organization_id'],
|
|
683
|
+
},
|
|
684
|
+
annotations: {
|
|
685
|
+
title: 'Update Organization',
|
|
686
|
+
readOnlyHint: false,
|
|
687
|
+
destructiveHint: true,
|
|
688
|
+
idempotentHint: true,
|
|
689
|
+
openWorldHint: true,
|
|
690
|
+
},
|
|
691
|
+
},
|
|
692
|
+
{
|
|
693
|
+
name: 'itglue_create_configuration',
|
|
694
|
+
description: '➕ Create a new configuration (server, workstation, network device) for an organization. AUDIT LOGGED.',
|
|
695
|
+
inputSchema: {
|
|
696
|
+
type: 'object',
|
|
697
|
+
properties: {
|
|
698
|
+
organization_id: { type: 'string', description: 'Organization ID' },
|
|
699
|
+
name: { type: 'string', description: 'Configuration name (hostname)' },
|
|
700
|
+
configuration_type_id: { type: 'number', description: 'Configuration type ID' },
|
|
701
|
+
configuration_status_id: { type: 'number', description: 'Configuration status ID' },
|
|
702
|
+
serial_number: { type: 'string', description: 'Serial number' },
|
|
703
|
+
asset_tag: { type: 'string', description: 'Asset tag' },
|
|
704
|
+
manufacturer_name: { type: 'string', description: 'Manufacturer name' },
|
|
705
|
+
model_number: { type: 'string', description: 'Model number' },
|
|
706
|
+
notes: { type: 'string', description: 'Notes' },
|
|
707
|
+
},
|
|
708
|
+
required: ['organization_id', 'name', 'configuration_type_id'],
|
|
709
|
+
},
|
|
710
|
+
annotations: {
|
|
711
|
+
title: 'Create Configuration',
|
|
712
|
+
readOnlyHint: false,
|
|
713
|
+
destructiveHint: false,
|
|
714
|
+
idempotentHint: false,
|
|
715
|
+
openWorldHint: true,
|
|
716
|
+
},
|
|
717
|
+
},
|
|
718
|
+
{
|
|
719
|
+
name: 'itglue_update_configuration',
|
|
720
|
+
description: '✏️ Update an existing configuration\'s details. AUDIT LOGGED.',
|
|
721
|
+
inputSchema: {
|
|
722
|
+
type: 'object',
|
|
723
|
+
properties: {
|
|
724
|
+
configuration_id: { type: 'string', description: 'Configuration ID to update' },
|
|
725
|
+
organization_id: { type: 'string', description: 'Organization ID (for audit)' },
|
|
726
|
+
name: { type: 'string', description: 'New name' },
|
|
727
|
+
configuration_type_id: { type: 'number', description: 'Configuration type ID' },
|
|
728
|
+
configuration_status_id: { type: 'number', description: 'Configuration status ID' },
|
|
729
|
+
serial_number: { type: 'string', description: 'Serial number' },
|
|
730
|
+
asset_tag: { type: 'string', description: 'Asset tag' },
|
|
731
|
+
manufacturer_name: { type: 'string', description: 'Manufacturer name' },
|
|
732
|
+
model_number: { type: 'string', description: 'Model number' },
|
|
733
|
+
notes: { type: 'string', description: 'Notes' },
|
|
734
|
+
},
|
|
735
|
+
required: ['configuration_id'],
|
|
736
|
+
},
|
|
737
|
+
annotations: {
|
|
738
|
+
title: 'Update Configuration',
|
|
739
|
+
readOnlyHint: false,
|
|
740
|
+
destructiveHint: true,
|
|
741
|
+
idempotentHint: true,
|
|
742
|
+
openWorldHint: true,
|
|
743
|
+
},
|
|
744
|
+
},
|
|
745
|
+
{
|
|
746
|
+
name: 'itglue_create_password',
|
|
747
|
+
description: '🔐 Create a new password entry for an organization. ⚠️ CRITICAL AUDIT LOGGED — password values are never stored in logs.',
|
|
748
|
+
inputSchema: {
|
|
749
|
+
type: 'object',
|
|
750
|
+
properties: {
|
|
751
|
+
organization_id: { type: 'string', description: 'Organization ID' },
|
|
752
|
+
name: { type: 'string', description: 'Password name/label' },
|
|
753
|
+
password: { type: 'string', description: 'The password value' },
|
|
754
|
+
username: { type: 'string', description: 'Username' },
|
|
755
|
+
url: { type: 'string', description: 'Service URL' },
|
|
756
|
+
notes: { type: 'string', description: 'Notes' },
|
|
757
|
+
password_category_id: { type: 'number', description: 'Password category ID' },
|
|
758
|
+
resource_id: { type: 'number', description: 'Related resource ID' },
|
|
759
|
+
resource_type: { type: 'string', description: 'Related resource type' },
|
|
760
|
+
},
|
|
761
|
+
required: ['organization_id', 'name', 'password'],
|
|
762
|
+
},
|
|
763
|
+
annotations: {
|
|
764
|
+
title: 'Create Password',
|
|
765
|
+
readOnlyHint: false,
|
|
766
|
+
destructiveHint: false,
|
|
767
|
+
idempotentHint: false,
|
|
768
|
+
openWorldHint: true,
|
|
769
|
+
},
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
name: 'itglue_update_password',
|
|
773
|
+
description: '🔐 Update an existing password entry (name, value, username, URL, category). ⚠️ CRITICAL AUDIT LOGGED.',
|
|
774
|
+
inputSchema: {
|
|
775
|
+
type: 'object',
|
|
776
|
+
properties: {
|
|
777
|
+
password_id: { type: 'string', description: 'Password ID to update' },
|
|
778
|
+
organization_id: { type: 'string', description: 'Organization ID (for audit)' },
|
|
779
|
+
name: { type: 'string', description: 'Password name/label' },
|
|
780
|
+
password: { type: 'string', description: 'New password value' },
|
|
781
|
+
username: { type: 'string', description: 'Username' },
|
|
782
|
+
url: { type: 'string', description: 'Service URL' },
|
|
783
|
+
notes: { type: 'string', description: 'Notes' },
|
|
784
|
+
password_category_id: { type: 'number', description: 'Password category ID' },
|
|
785
|
+
},
|
|
786
|
+
required: ['password_id'],
|
|
787
|
+
},
|
|
788
|
+
annotations: {
|
|
789
|
+
title: 'Update Password',
|
|
790
|
+
readOnlyHint: false,
|
|
791
|
+
destructiveHint: true,
|
|
792
|
+
idempotentHint: true,
|
|
793
|
+
openWorldHint: true,
|
|
794
|
+
},
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
name: 'itglue_create_contact',
|
|
798
|
+
description: '👤 Create a new contact for an organization. AUDIT LOGGED.',
|
|
799
|
+
inputSchema: {
|
|
800
|
+
type: 'object',
|
|
801
|
+
properties: {
|
|
802
|
+
organization_id: { type: 'string', description: 'Organization ID' },
|
|
803
|
+
first_name: { type: 'string', description: 'First name' },
|
|
804
|
+
last_name: { type: 'string', description: 'Last name' },
|
|
805
|
+
title: { type: 'string', description: 'Job title' },
|
|
806
|
+
contact_type_id: { type: 'number', description: 'Contact type ID' },
|
|
807
|
+
email: { type: 'string', description: 'Primary email' },
|
|
808
|
+
phone: { type: 'string', description: 'Primary phone' },
|
|
809
|
+
notes: { type: 'string', description: 'Notes' },
|
|
810
|
+
important: { type: 'boolean', description: 'Mark as important/VIP', default: false },
|
|
811
|
+
},
|
|
812
|
+
required: ['organization_id', 'first_name', 'last_name'],
|
|
813
|
+
},
|
|
814
|
+
annotations: {
|
|
815
|
+
title: 'Create Contact',
|
|
816
|
+
readOnlyHint: false,
|
|
817
|
+
destructiveHint: false,
|
|
818
|
+
idempotentHint: false,
|
|
819
|
+
openWorldHint: true,
|
|
820
|
+
},
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
name: 'itglue_update_contact',
|
|
824
|
+
description: '✏️ Update an existing contact\'s details. AUDIT LOGGED.',
|
|
825
|
+
inputSchema: {
|
|
826
|
+
type: 'object',
|
|
827
|
+
properties: {
|
|
828
|
+
contact_id: { type: 'string', description: 'Contact ID to update' },
|
|
829
|
+
organization_id: { type: 'string', description: 'Organization ID (for audit)' },
|
|
830
|
+
first_name: { type: 'string', description: 'First name' },
|
|
831
|
+
last_name: { type: 'string', description: 'Last name' },
|
|
832
|
+
title: { type: 'string', description: 'Job title' },
|
|
833
|
+
contact_type_id: { type: 'number', description: 'Contact type ID' },
|
|
834
|
+
notes: { type: 'string', description: 'Notes' },
|
|
835
|
+
important: { type: 'boolean', description: 'Mark as important/VIP' },
|
|
836
|
+
},
|
|
837
|
+
required: ['contact_id'],
|
|
838
|
+
},
|
|
839
|
+
annotations: {
|
|
840
|
+
title: 'Update Contact',
|
|
841
|
+
readOnlyHint: false,
|
|
842
|
+
destructiveHint: true,
|
|
843
|
+
idempotentHint: true,
|
|
844
|
+
openWorldHint: true,
|
|
845
|
+
},
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
name: 'itglue_create_location',
|
|
849
|
+
description: '📍 Create a new location (office, data center, site) for an organization. AUDIT LOGGED.',
|
|
850
|
+
inputSchema: {
|
|
851
|
+
type: 'object',
|
|
852
|
+
properties: {
|
|
853
|
+
organization_id: { type: 'string', description: 'Organization ID' },
|
|
854
|
+
name: { type: 'string', description: 'Location name' },
|
|
855
|
+
address1: { type: 'string', description: 'Street address line 1' },
|
|
856
|
+
address2: { type: 'string', description: 'Street address line 2' },
|
|
857
|
+
city: { type: 'string', description: 'City' },
|
|
858
|
+
region_name: { type: 'string', description: 'State/region' },
|
|
859
|
+
country_name: { type: 'string', description: 'Country' },
|
|
860
|
+
postal_code: { type: 'string', description: 'ZIP/postal code' },
|
|
861
|
+
phone: { type: 'string', description: 'Phone number' },
|
|
862
|
+
notes: { type: 'string', description: 'Notes' },
|
|
863
|
+
primary: { type: 'boolean', description: 'Set as primary location', default: false },
|
|
864
|
+
},
|
|
865
|
+
required: ['organization_id', 'name'],
|
|
866
|
+
},
|
|
867
|
+
annotations: {
|
|
868
|
+
title: 'Create Location',
|
|
869
|
+
readOnlyHint: false,
|
|
870
|
+
destructiveHint: false,
|
|
871
|
+
idempotentHint: false,
|
|
872
|
+
openWorldHint: true,
|
|
873
|
+
},
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
name: 'itglue_update_location',
|
|
877
|
+
description: '✏️ Update an existing location\'s details (address, phone, notes). AUDIT LOGGED.',
|
|
878
|
+
inputSchema: {
|
|
879
|
+
type: 'object',
|
|
880
|
+
properties: {
|
|
881
|
+
location_id: { type: 'string', description: 'Location ID to update' },
|
|
882
|
+
organization_id: { type: 'string', description: 'Organization ID (for audit)' },
|
|
883
|
+
name: { type: 'string', description: 'Location name' },
|
|
884
|
+
address1: { type: 'string', description: 'Street address line 1' },
|
|
885
|
+
address2: { type: 'string', description: 'Street address line 2' },
|
|
886
|
+
city: { type: 'string', description: 'City' },
|
|
887
|
+
region_name: { type: 'string', description: 'State/region' },
|
|
888
|
+
country_name: { type: 'string', description: 'Country' },
|
|
889
|
+
postal_code: { type: 'string', description: 'ZIP/postal code' },
|
|
890
|
+
phone: { type: 'string', description: 'Phone number' },
|
|
891
|
+
notes: { type: 'string', description: 'Notes' },
|
|
892
|
+
primary: { type: 'boolean', description: 'Set as primary location' },
|
|
893
|
+
},
|
|
894
|
+
required: ['location_id'],
|
|
895
|
+
},
|
|
896
|
+
annotations: {
|
|
897
|
+
title: 'Update Location',
|
|
898
|
+
readOnlyHint: false,
|
|
899
|
+
destructiveHint: true,
|
|
900
|
+
idempotentHint: true,
|
|
901
|
+
openWorldHint: true,
|
|
902
|
+
},
|
|
903
|
+
},
|
|
904
|
+
{
|
|
905
|
+
name: 'itglue_create_flexible_asset',
|
|
906
|
+
description: '➕ Create a new flexible asset (custom documentation type) with trait values. AUDIT LOGGED.',
|
|
907
|
+
inputSchema: {
|
|
908
|
+
type: 'object',
|
|
909
|
+
properties: {
|
|
910
|
+
organization_id: { type: 'string', description: 'Organization ID' },
|
|
911
|
+
flexible_asset_type_id: { type: 'number', description: 'Flexible asset type ID' },
|
|
912
|
+
traits: {
|
|
913
|
+
type: 'object',
|
|
914
|
+
description: 'Custom field values as key-value pairs (use trait field names as keys)',
|
|
915
|
+
additionalProperties: true,
|
|
916
|
+
},
|
|
917
|
+
},
|
|
918
|
+
required: ['organization_id', 'flexible_asset_type_id', 'traits'],
|
|
919
|
+
},
|
|
920
|
+
annotations: {
|
|
921
|
+
title: 'Create Flexible Asset',
|
|
922
|
+
readOnlyHint: false,
|
|
923
|
+
destructiveHint: false,
|
|
924
|
+
idempotentHint: false,
|
|
925
|
+
openWorldHint: true,
|
|
926
|
+
},
|
|
927
|
+
},
|
|
928
|
+
{
|
|
929
|
+
name: 'itglue_update_flexible_asset',
|
|
930
|
+
description: '✏️ Update a flexible asset\'s trait values. Only include traits to change. AUDIT LOGGED.',
|
|
931
|
+
inputSchema: {
|
|
932
|
+
type: 'object',
|
|
933
|
+
properties: {
|
|
934
|
+
flexible_asset_id: { type: 'string', description: 'Flexible asset ID to update' },
|
|
935
|
+
organization_id: { type: 'string', description: 'Organization ID (for audit)' },
|
|
936
|
+
traits: {
|
|
937
|
+
type: 'object',
|
|
938
|
+
description: 'Custom field values to update (only include fields to change)',
|
|
939
|
+
additionalProperties: true,
|
|
940
|
+
},
|
|
941
|
+
},
|
|
942
|
+
required: ['flexible_asset_id', 'traits'],
|
|
943
|
+
},
|
|
944
|
+
annotations: {
|
|
945
|
+
title: 'Update Flexible Asset',
|
|
946
|
+
readOnlyHint: false,
|
|
947
|
+
destructiveHint: true,
|
|
948
|
+
idempotentHint: true,
|
|
949
|
+
openWorldHint: true,
|
|
950
|
+
},
|
|
521
951
|
},
|
|
522
952
|
// Auxiliary Tools: Health Check
|
|
523
953
|
{
|
|
@@ -537,6 +967,13 @@ async function main() {
|
|
|
537
967
|
},
|
|
538
968
|
},
|
|
539
969
|
},
|
|
970
|
+
annotations: {
|
|
971
|
+
title: 'Health Check',
|
|
972
|
+
readOnlyHint: true,
|
|
973
|
+
destructiveHint: false,
|
|
974
|
+
idempotentHint: true,
|
|
975
|
+
openWorldHint: true,
|
|
976
|
+
},
|
|
540
977
|
},
|
|
541
978
|
],
|
|
542
979
|
};
|
|
@@ -562,6 +999,10 @@ async function main() {
|
|
|
562
999
|
const parsed = GlobalSearchSchema.parse(args);
|
|
563
1000
|
return await globalSearch(client, parsed);
|
|
564
1001
|
}
|
|
1002
|
+
case 'itglue_list_flexible_asset_types': {
|
|
1003
|
+
const parsed = ListFlexibleAssetTypesSchema.parse(args);
|
|
1004
|
+
return await listFlexibleAssetTypes(client, parsed);
|
|
1005
|
+
}
|
|
565
1006
|
// Tier 2: Entity Navigation
|
|
566
1007
|
case 'itglue_list_configurations': {
|
|
567
1008
|
const parsed = ListConfigurationsSchema.parse(args);
|
|
@@ -608,6 +1049,51 @@ async function main() {
|
|
|
608
1049
|
const parsed = GetFlexibleAssetSchema.parse(args);
|
|
609
1050
|
return await getFlexibleAsset(client, parsed);
|
|
610
1051
|
}
|
|
1052
|
+
// Tier 4: Write Operations
|
|
1053
|
+
case 'itglue_update_organization': {
|
|
1054
|
+
const parsed = UpdateOrganizationSchema.parse(args);
|
|
1055
|
+
return await updateOrganization(client, parsed);
|
|
1056
|
+
}
|
|
1057
|
+
case 'itglue_create_configuration': {
|
|
1058
|
+
const parsed = CreateConfigurationSchema.parse(args);
|
|
1059
|
+
return await createConfiguration(client, parsed);
|
|
1060
|
+
}
|
|
1061
|
+
case 'itglue_update_configuration': {
|
|
1062
|
+
const parsed = UpdateConfigurationSchema.parse(args);
|
|
1063
|
+
return await updateConfiguration(client, parsed);
|
|
1064
|
+
}
|
|
1065
|
+
case 'itglue_create_password': {
|
|
1066
|
+
const parsed = CreatePasswordSchema.parse(args);
|
|
1067
|
+
return await createPassword(client, parsed);
|
|
1068
|
+
}
|
|
1069
|
+
case 'itglue_update_password': {
|
|
1070
|
+
const parsed = UpdatePasswordSchema.parse(args);
|
|
1071
|
+
return await updatePassword(client, parsed);
|
|
1072
|
+
}
|
|
1073
|
+
case 'itglue_create_contact': {
|
|
1074
|
+
const parsed = CreateContactSchema.parse(args);
|
|
1075
|
+
return await createContact(client, parsed);
|
|
1076
|
+
}
|
|
1077
|
+
case 'itglue_update_contact': {
|
|
1078
|
+
const parsed = UpdateContactSchema.parse(args);
|
|
1079
|
+
return await updateContact(client, parsed);
|
|
1080
|
+
}
|
|
1081
|
+
case 'itglue_create_location': {
|
|
1082
|
+
const parsed = CreateLocationSchema.parse(args);
|
|
1083
|
+
return await createLocation(client, parsed);
|
|
1084
|
+
}
|
|
1085
|
+
case 'itglue_update_location': {
|
|
1086
|
+
const parsed = UpdateLocationSchema.parse(args);
|
|
1087
|
+
return await updateLocation(client, parsed);
|
|
1088
|
+
}
|
|
1089
|
+
case 'itglue_create_flexible_asset': {
|
|
1090
|
+
const parsed = CreateFlexibleAssetSchema.parse(args);
|
|
1091
|
+
return await createFlexibleAsset(client, parsed);
|
|
1092
|
+
}
|
|
1093
|
+
case 'itglue_update_flexible_asset': {
|
|
1094
|
+
const parsed = UpdateFlexibleAssetSchema.parse(args);
|
|
1095
|
+
return await updateFlexibleAsset(client, parsed);
|
|
1096
|
+
}
|
|
611
1097
|
// Auxiliary Tools
|
|
612
1098
|
case 'itglue_compliance_check': {
|
|
613
1099
|
const parsed = ComplianceCheckSchema.parse(args);
|