portkey-admin-mcp 0.4.0 → 0.4.1

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/build/index.js CHANGED
@@ -2797,8 +2797,14 @@ function registerConfigsTools(server, service) {
2797
2797
  );
2798
2798
  server.tool(
2799
2799
  "update_config",
2800
- "Update a config by slug and create a new version. Only provided fields change; name, status, and all routing/cache/retry settings (cache_mode, cache_max_age, retry_attempts, retry_on_status_codes, strategy_mode, targets) are editable, while the slug stays fixed. Use list_config_versions if you need history first.",
2800
+ "Update a config by slug; every call creates a new config version rather than overwriting, so earlier versions stay recoverable via list_config_versions. Only provided fields change: name, status, and all routing/cache/retry settings (cache_mode, cache_max_age, retry_attempts, retry_on_status_codes, strategy_mode, targets) are editable, while the slug stays fixed. Changes apply immediately to every API key and prompt referencing the config; get the slug from list_configs and review current settings with get_config before editing. Returns the config id, slug, and updated config payload.",
2801
2801
  CONFIGS_TOOL_SCHEMAS.updateConfig,
2802
+ {
2803
+ readOnlyHint: false,
2804
+ destructiveHint: false,
2805
+ idempotentHint: false,
2806
+ openWorldHint: false
2807
+ },
2802
2808
  async (params) => {
2803
2809
  const config = buildConfigPayload(params);
2804
2810
  const updateData = {};
@@ -3262,8 +3268,14 @@ function registerIntegrationsTools(server, service) {
3262
3268
  );
3263
3269
  server.tool(
3264
3270
  "create_integration",
3265
- "Create an org-level provider integration. Some backends need provider-specific fields, and the new integration becomes the source for downstream providers and workspace access. Returns the new integration id and slug.",
3271
+ "Create an org-level provider integration that stores an AI provider's API key and becomes the source workspace providers (create_provider) build on. ai_provider_id takes a provider identifier such as 'openai' or 'anthropic'; some backends (azure-openai, aws-bedrock, vertex-ai) need provider-specific fields, and the key is write-only afterwards (get_integration shows it masked). Provision models and workspace access afterwards with update_integration_models and update_integration_workspaces. Returns the new integration id and slug.",
3266
3272
  INTEGRATIONS_TOOL_SCHEMAS.createIntegration,
3273
+ {
3274
+ readOnlyHint: false,
3275
+ destructiveHint: false,
3276
+ idempotentHint: false,
3277
+ openWorldHint: false
3278
+ },
3267
3279
  async (params) => {
3268
3280
  const result = await service.integrations.createIntegration({
3269
3281
  name: params.name,
@@ -3323,8 +3335,14 @@ function registerIntegrationsTools(server, service) {
3323
3335
  );
3324
3336
  server.tool(
3325
3337
  "update_integration",
3326
- "Update an integration's name, key, or provider-specific config. Key and config changes take effect immediately and can disrupt dependent providers or live requests. Model provisioning and workspace access are managed separately via update_integration_models and update_integration_workspaces.",
3338
+ "Update an org-level integration's name, description, API key, or provider-specific config by slug. Only provided fields change and the update is in place (no version history); key and config changes take effect immediately and can disrupt dependent providers or live requests, so review current settings with get_integration first. Get the slug from list_integrations; model provisioning and workspace access are managed separately via update_integration_models and update_integration_workspaces. Returns a success flag.",
3327
3339
  INTEGRATIONS_TOOL_SCHEMAS.updateIntegration,
3340
+ {
3341
+ readOnlyHint: false,
3342
+ destructiveHint: true,
3343
+ idempotentHint: true,
3344
+ openWorldHint: false
3345
+ },
3328
3346
  async (params) => {
3329
3347
  const result = await service.integrations.updateIntegration(params.slug, {
3330
3348
  name: params.name,
@@ -5131,8 +5149,14 @@ function registerMcpIntegrationsTools(server, service) {
5131
5149
  );
5132
5150
  server.tool(
5133
5151
  "update_mcp_integration_capabilities",
5134
- "Bulk enable or disable capabilities on an MCP integration. Changes take effect immediately for connected users and hide or expose the selected tools, resources, and prompts; use list_mcp_integration_capabilities first if you need the current state.",
5152
+ "Bulk enable or disable capabilities (tools, prompts, resources) on an MCP integration. A reversible toggle, not a deletion: only the capabilities named in the array change state, the change hides or exposes them immediately for connected users, and re-running with enabled flipped restores them. Source the integration id from list_mcp_integrations and current capability names, types, and states from list_mcp_integration_capabilities. Returns a success confirmation message.",
5135
5153
  MCP_INTEGRATIONS_TOOL_SCHEMAS.updateMcpIntegrationCapabilities,
5154
+ {
5155
+ readOnlyHint: false,
5156
+ destructiveHint: false,
5157
+ idempotentHint: true,
5158
+ openWorldHint: false
5159
+ },
5136
5160
  async (params) => {
5137
5161
  await service.mcpIntegrations.updateMcpIntegrationCapabilities(
5138
5162
  params.id,
@@ -5177,8 +5201,14 @@ function registerMcpIntegrationsTools(server, service) {
5177
5201
  );
5178
5202
  server.tool(
5179
5203
  "update_mcp_integration_workspaces",
5180
- "Grant or revoke workspace access to an MCP integration in bulk. Changes take effect immediately for all users in the selected workspaces; use list_mcp_integration_workspaces first to review the current access state.",
5204
+ "Grant or revoke workspace access to an MCP integration in bulk. Reversible: only the workspaces listed change, access applies or is removed immediately for all users in those workspaces, and re-running with enabled flipped undoes a change. Source the integration id from list_mcp_integrations, workspace ids from list_workspaces, and the current access state from list_mcp_integration_workspaces. Returns a success confirmation message.",
5181
5205
  MCP_INTEGRATIONS_TOOL_SCHEMAS.updateMcpIntegrationWorkspaces,
5206
+ {
5207
+ readOnlyHint: false,
5208
+ destructiveHint: false,
5209
+ idempotentHint: true,
5210
+ openWorldHint: false
5211
+ },
5182
5212
  async (params) => {
5183
5213
  await service.mcpIntegrations.updateMcpIntegrationWorkspaces(params.id, {
5184
5214
  workspaces: params.workspaces
@@ -6375,8 +6405,14 @@ function registerPromptsTools(server, service) {
6375
6405
  );
6376
6406
  server.tool(
6377
6407
  "migrate_prompt",
6378
- "Create or update a prompt in one idempotent step for CI/CD and prompt-as-code flows. Finds existing prompts by name within the collection, stores app/env in template_metadata, and supports dry_run for safe preflight checks.",
6408
+ "Create or update a prompt in one idempotent step for CI/CD and prompt-as-code flows, unlike create_prompt which always makes a new prompt. Looks up the prompt by name within collection_id: if found it adds a new version (nothing is overwritten), otherwise it creates the prompt; dry_run reports what would happen without changing anything. Stores app/env in template_metadata; get collection_id from list_collections. Returns the action taken (created or updated), dry_run flag, prompt id, slug, and version id.",
6379
6409
  PROMPTS_TOOL_SCHEMAS.migratePrompt,
6410
+ {
6411
+ readOnlyHint: false,
6412
+ destructiveHint: false,
6413
+ idempotentHint: true,
6414
+ openWorldHint: false
6415
+ },
6380
6416
  async (params) => {
6381
6417
  const templateString = normalizePromptTemplateString(params);
6382
6418
  if (templateString === void 0) {
package/build/server.js CHANGED
@@ -2811,8 +2811,14 @@ function registerConfigsTools(server, service) {
2811
2811
  );
2812
2812
  server.tool(
2813
2813
  "update_config",
2814
- "Update a config by slug and create a new version. Only provided fields change; name, status, and all routing/cache/retry settings (cache_mode, cache_max_age, retry_attempts, retry_on_status_codes, strategy_mode, targets) are editable, while the slug stays fixed. Use list_config_versions if you need history first.",
2814
+ "Update a config by slug; every call creates a new config version rather than overwriting, so earlier versions stay recoverable via list_config_versions. Only provided fields change: name, status, and all routing/cache/retry settings (cache_mode, cache_max_age, retry_attempts, retry_on_status_codes, strategy_mode, targets) are editable, while the slug stays fixed. Changes apply immediately to every API key and prompt referencing the config; get the slug from list_configs and review current settings with get_config before editing. Returns the config id, slug, and updated config payload.",
2815
2815
  CONFIGS_TOOL_SCHEMAS.updateConfig,
2816
+ {
2817
+ readOnlyHint: false,
2818
+ destructiveHint: false,
2819
+ idempotentHint: false,
2820
+ openWorldHint: false
2821
+ },
2816
2822
  async (params) => {
2817
2823
  const config = buildConfigPayload(params);
2818
2824
  const updateData = {};
@@ -3276,8 +3282,14 @@ function registerIntegrationsTools(server, service) {
3276
3282
  );
3277
3283
  server.tool(
3278
3284
  "create_integration",
3279
- "Create an org-level provider integration. Some backends need provider-specific fields, and the new integration becomes the source for downstream providers and workspace access. Returns the new integration id and slug.",
3285
+ "Create an org-level provider integration that stores an AI provider's API key and becomes the source workspace providers (create_provider) build on. ai_provider_id takes a provider identifier such as 'openai' or 'anthropic'; some backends (azure-openai, aws-bedrock, vertex-ai) need provider-specific fields, and the key is write-only afterwards (get_integration shows it masked). Provision models and workspace access afterwards with update_integration_models and update_integration_workspaces. Returns the new integration id and slug.",
3280
3286
  INTEGRATIONS_TOOL_SCHEMAS.createIntegration,
3287
+ {
3288
+ readOnlyHint: false,
3289
+ destructiveHint: false,
3290
+ idempotentHint: false,
3291
+ openWorldHint: false
3292
+ },
3281
3293
  async (params) => {
3282
3294
  const result = await service.integrations.createIntegration({
3283
3295
  name: params.name,
@@ -3337,8 +3349,14 @@ function registerIntegrationsTools(server, service) {
3337
3349
  );
3338
3350
  server.tool(
3339
3351
  "update_integration",
3340
- "Update an integration's name, key, or provider-specific config. Key and config changes take effect immediately and can disrupt dependent providers or live requests. Model provisioning and workspace access are managed separately via update_integration_models and update_integration_workspaces.",
3352
+ "Update an org-level integration's name, description, API key, or provider-specific config by slug. Only provided fields change and the update is in place (no version history); key and config changes take effect immediately and can disrupt dependent providers or live requests, so review current settings with get_integration first. Get the slug from list_integrations; model provisioning and workspace access are managed separately via update_integration_models and update_integration_workspaces. Returns a success flag.",
3341
3353
  INTEGRATIONS_TOOL_SCHEMAS.updateIntegration,
3354
+ {
3355
+ readOnlyHint: false,
3356
+ destructiveHint: true,
3357
+ idempotentHint: true,
3358
+ openWorldHint: false
3359
+ },
3342
3360
  async (params) => {
3343
3361
  const result = await service.integrations.updateIntegration(params.slug, {
3344
3362
  name: params.name,
@@ -5145,8 +5163,14 @@ function registerMcpIntegrationsTools(server, service) {
5145
5163
  );
5146
5164
  server.tool(
5147
5165
  "update_mcp_integration_capabilities",
5148
- "Bulk enable or disable capabilities on an MCP integration. Changes take effect immediately for connected users and hide or expose the selected tools, resources, and prompts; use list_mcp_integration_capabilities first if you need the current state.",
5166
+ "Bulk enable or disable capabilities (tools, prompts, resources) on an MCP integration. A reversible toggle, not a deletion: only the capabilities named in the array change state, the change hides or exposes them immediately for connected users, and re-running with enabled flipped restores them. Source the integration id from list_mcp_integrations and current capability names, types, and states from list_mcp_integration_capabilities. Returns a success confirmation message.",
5149
5167
  MCP_INTEGRATIONS_TOOL_SCHEMAS.updateMcpIntegrationCapabilities,
5168
+ {
5169
+ readOnlyHint: false,
5170
+ destructiveHint: false,
5171
+ idempotentHint: true,
5172
+ openWorldHint: false
5173
+ },
5150
5174
  async (params) => {
5151
5175
  await service.mcpIntegrations.updateMcpIntegrationCapabilities(
5152
5176
  params.id,
@@ -5191,8 +5215,14 @@ function registerMcpIntegrationsTools(server, service) {
5191
5215
  );
5192
5216
  server.tool(
5193
5217
  "update_mcp_integration_workspaces",
5194
- "Grant or revoke workspace access to an MCP integration in bulk. Changes take effect immediately for all users in the selected workspaces; use list_mcp_integration_workspaces first to review the current access state.",
5218
+ "Grant or revoke workspace access to an MCP integration in bulk. Reversible: only the workspaces listed change, access applies or is removed immediately for all users in those workspaces, and re-running with enabled flipped undoes a change. Source the integration id from list_mcp_integrations, workspace ids from list_workspaces, and the current access state from list_mcp_integration_workspaces. Returns a success confirmation message.",
5195
5219
  MCP_INTEGRATIONS_TOOL_SCHEMAS.updateMcpIntegrationWorkspaces,
5220
+ {
5221
+ readOnlyHint: false,
5222
+ destructiveHint: false,
5223
+ idempotentHint: true,
5224
+ openWorldHint: false
5225
+ },
5196
5226
  async (params) => {
5197
5227
  await service.mcpIntegrations.updateMcpIntegrationWorkspaces(params.id, {
5198
5228
  workspaces: params.workspaces
@@ -6389,8 +6419,14 @@ function registerPromptsTools(server, service) {
6389
6419
  );
6390
6420
  server.tool(
6391
6421
  "migrate_prompt",
6392
- "Create or update a prompt in one idempotent step for CI/CD and prompt-as-code flows. Finds existing prompts by name within the collection, stores app/env in template_metadata, and supports dry_run for safe preflight checks.",
6422
+ "Create or update a prompt in one idempotent step for CI/CD and prompt-as-code flows, unlike create_prompt which always makes a new prompt. Looks up the prompt by name within collection_id: if found it adds a new version (nothing is overwritten), otherwise it creates the prompt; dry_run reports what would happen without changing anything. Stores app/env in template_metadata; get collection_id from list_collections. Returns the action taken (created or updated), dry_run flag, prompt id, slug, and version id.",
6393
6423
  PROMPTS_TOOL_SCHEMAS.migratePrompt,
6424
+ {
6425
+ readOnlyHint: false,
6426
+ destructiveHint: false,
6427
+ idempotentHint: true,
6428
+ openWorldHint: false
6429
+ },
6394
6430
  async (params) => {
6395
6431
  const templateString = normalizePromptTemplateString(params);
6396
6432
  if (templateString === void 0) {
package/package.json CHANGED
@@ -22,7 +22,8 @@
22
22
  "knip": "knip",
23
23
  "ci": "npm run lint && npm run knip && npm run typecheck && npm run test && npm run build && npm run test:e2e && npm run verify:readme-tools",
24
24
  "start:http": "node build/server.js",
25
- "publish:lobehub": "npx -y @lobehub/market-cli plugin publish --dir \"$PWD\"",
25
+ "generate:lobehub-tools": "npm run build && node scripts/generate-lobehub-tools.mjs",
26
+ "publish:lobehub": "npm run generate:lobehub-tools && npx -y @lobehub/market-cli plugin publish --dir \"$PWD\"",
26
27
  "prepare": "[ -n \"$CI\" ] || [ -f /.dockerenv ] || [ ! -d .git ] || lefthook install",
27
28
  "prepublishOnly": "npm run ci"
28
29
  },
@@ -43,7 +44,7 @@
43
44
  },
44
45
  "name": "portkey-admin-mcp",
45
46
  "mcpName": "io.github.CodesWhat/portkey-admin-mcp",
46
- "version": "0.4.0",
47
+ "version": "0.4.1",
47
48
  "main": "build/index.js",
48
49
  "keywords": [
49
50
  "mcp",