portkey-admin-mcp 0.3.1 → 0.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/build/index.js CHANGED
@@ -2804,7 +2804,7 @@ function registerConfigsTools(server, service) {
2804
2804
  );
2805
2805
  server.tool(
2806
2806
  "create_config",
2807
- "Create a config that defines routing, cache, retry, and targets for requests. At least one of those settings is required; returns the new id and version_id.",
2807
+ "Create a config that defines routing, cache, retry, and targets for requests; use update_config to modify an existing one and list_config_versions for history. At least one setting is required, new configs become active immediately once referenced by a key or prompt, and the call returns the new id and version_id.",
2808
2808
  CONFIGS_TOOL_SCHEMAS.createConfig,
2809
2809
  async (params) => {
2810
2810
  const config = buildConfigPayload(params);
@@ -3018,7 +3018,7 @@ function registerGuardrailsTools(server, service) {
3018
3018
  );
3019
3019
  server.tool(
3020
3020
  "get_guardrail",
3021
- "Fetch one guardrail with its full checks and actions. Use this before updating rules or when you need the exact enforcement policy.",
3021
+ "Fetch one guardrail by id or slug with its full checks and actions; use list_guardrails to discover ids first. Use before update_guardrail or delete_guardrail when you need the exact enforcement policy, and returns the full check and action configuration alongside status and ownership.",
3022
3022
  GUARDRAILS_TOOL_SCHEMAS.getGuardrail,
3023
3023
  async (params) => {
3024
3024
  const guardrail = await service.guardrails.getGuardrail(
@@ -3084,7 +3084,7 @@ function registerGuardrailsTools(server, service) {
3084
3084
  );
3085
3085
  server.tool(
3086
3086
  "update_guardrail",
3087
- "Update a guardrail's name, checks, or actions. This creates a new version, so configs keep pointing at the latest policy after the change.",
3087
+ "Update a guardrail's name, checks, or actions, unlike create_guardrail which registers a new one or delete_guardrail which removes it. This creates a new version that takes effect immediately for dependent configs, so review list_guardrails first; returns the updated id, slug, and version_id.",
3088
3088
  GUARDRAILS_TOOL_SCHEMAS.updateGuardrail,
3089
3089
  async (params) => {
3090
3090
  const updateData = {};
@@ -3610,7 +3610,7 @@ function registerIntegrationsTools(server, service) {
3610
3610
  );
3611
3611
  server.tool(
3612
3612
  "update_integration_workspaces",
3613
- "Control which workspaces can use an integration and set per-workspace limits. Access changes and new limits apply to downstream usage immediately. Returns success and the number of workspaces updated.",
3613
+ "Control which workspaces can use an integration and set per-workspace limits, unlike update_integration which edits the org-level connection. Call list_integration_workspaces first to review current state; access changes and new limits apply to downstream usage immediately, and the call returns success plus the number of workspaces updated.",
3614
3614
  INTEGRATIONS_TOOL_SCHEMAS.updateIntegrationWorkspaces,
3615
3615
  async (params) => {
3616
3616
  const result = await service.integrations.updateIntegrationWorkspaces(
@@ -4084,7 +4084,7 @@ function registerKeysTools(server, service) {
4084
4084
  );
4085
4085
  server.tool(
4086
4086
  "update_api_key",
4087
- "Update an API key's name, description, scopes, defaults, or limits. Changes affect what downstream callers can access; type and sub-type stay fixed after creation. Returns success after the update is applied.",
4087
+ "Update an API key's name, description, scopes, defaults, or limits, unlike delete_api_key which revokes it or create_api_key which issues a new one. Changes take effect immediately for downstream callers, type and sub-type stay fixed after creation, and the call returns success without rotating the secret.",
4088
4088
  KEYS_TOOL_SCHEMAS.updateApiKey,
4089
4089
  async (params) => {
4090
4090
  const result = await service.keys.updateApiKey(params.id, {
@@ -4288,7 +4288,7 @@ function registerLabelsTools(server, service) {
4288
4288
  );
4289
4289
  server.tool(
4290
4290
  "update_prompt_label",
4291
- "Update a prompt label's name, description, or color only. This changes the label definition, not existing prompt-version assignments or history.",
4291
+ "Update a prompt label's name, description, or color only, unlike update_prompt_version which changes which label a version carries. This takes effect immediately for all versions already tagged with the label, but does not reassign labels or touch history; use list_prompt_labels to find the label_id first.",
4292
4292
  LABELS_TOOL_SCHEMAS.updatePromptLabel,
4293
4293
  async (params) => {
4294
4294
  const { label_id, ...updateData } = params;
@@ -4657,7 +4657,7 @@ function registerLimitsTools(server, service) {
4657
4657
  );
4658
4658
  server.tool(
4659
4659
  "update_usage_limit",
4660
- "Update a usage limit's name, credit_limit, alert_threshold, reset schedule, or reset target by id. Conditions and group_by are immutable after creation.",
4660
+ "Update a usage limit's name, credit_limit, alert_threshold, reset schedule, or reset target by id, unlike update_rate_limit which tunes request throttling. New values apply immediately to tracked usage, conditions and group_by are immutable after creation, and the call returns the updated id without clearing accumulated usage (use reset_usage_limit_entity for that).",
4661
4661
  LIMITS_TOOL_SCHEMAS.updateUsageLimit,
4662
4662
  async (params) => {
4663
4663
  const result = await service.limits.updateUsageLimit(params.id, {
@@ -5027,7 +5027,7 @@ function registerLoggingTools(server, service) {
5027
5027
  );
5028
5028
  server.tool(
5029
5029
  "cancel_log_export",
5030
- "Cancel a pending or running log export job. This permanently stops that export, so create a new log export if you need the same data again.",
5030
+ "Cancel a pending or running log export job, unlike start_log_export which queues one or delete_integration which removes the source. This permanently stops that export, takes effect immediately, and does not roll back already-processed rows; call create_log_export and start_log_export again to retry.",
5031
5031
  LOGGING_TOOL_SCHEMAS.cancelLogExport,
5032
5032
  async (params) => {
5033
5033
  const result = await service.logging.cancelLogExport(params.export_id);
@@ -5880,7 +5880,7 @@ function registerPartialsTools(server, service) {
5880
5880
  );
5881
5881
  server.tool(
5882
5882
  "list_prompt_partials",
5883
- "List partials across collections, with optional collection filtering. Returns ids, slugs, names, collections, and status so you can choose a prompt_partial_id before get/update/delete.",
5883
+ "List partials across collections, with optional collection filtering. Returns ids, slugs, names, collections, and status so you can choose a prompt_partial_id before get_prompt_partial, update_prompt_partial, delete_prompt_partial, or publish_partial.",
5884
5884
  PARTIALS_TOOL_SCHEMAS.listPromptPartials,
5885
5885
  async (params) => {
5886
5886
  const partials = await service.partials.listPromptPartials(params);
@@ -6030,7 +6030,7 @@ function registerPartialsTools(server, service) {
6030
6030
  );
6031
6031
  server.tool(
6032
6032
  "publish_partial",
6033
- "Publish a specific partial version as the default version. This changes which content {{> partial_name}} resolves to and replaces the previously active version.",
6033
+ "Publish a specific partial version as the default, unlike update_prompt_partial which creates a new draft without activating it. Use after list_partial_versions to pick a version_id; this immediately changes what {{> partial_name}} resolves to for all prompts and replaces the previously active version without a rollback path.",
6034
6034
  PARTIALS_TOOL_SCHEMAS.publishPartial,
6035
6035
  async (params) => {
6036
6036
  await service.partials.publishPartial(params.prompt_partial_id, {
@@ -6612,7 +6612,7 @@ function registerPromptsTools(server, service) {
6612
6612
  );
6613
6613
  server.tool(
6614
6614
  "publish_prompt",
6615
- "Publish a specific version of a prompt as the active default. Use list_prompt_versions to choose the version and update_prompt when you need to create new content before promoting it.",
6615
+ "Publish a specific version of a prompt as the active default, unlike promote_prompt which copies across environments or update_prompt which creates a new draft. This immediately routes all callers using the slug to that version and there is no rollback, so use list_prompt_versions to pick the version and update_prompt first if you need to create new content before promoting it.",
6616
6616
  PROMPTS_TOOL_SCHEMAS.publishPrompt,
6617
6617
  async (params) => {
6618
6618
  await service.prompts.publishPrompt(params.prompt_id, {
@@ -7569,7 +7569,7 @@ function registerUsersTools(server, service) {
7569
7569
  );
7570
7570
  server.tool(
7571
7571
  "resend_user_invite",
7572
- "Resend the email for a pending invite that has not been accepted. The invite must still exist; use get_user_invite first if you are unsure.",
7572
+ "Resend the email for a pending invite that has not been accepted, unlike invite_user which creates a new invite. This sends a fresh email without modifying the invite record, expiry, or role; use get_user_invite first if you are unsure whether the invite still exists and list_user_invites to discover invite_ids.",
7573
7573
  USERS_TOOL_SCHEMAS.resendUserInvite,
7574
7574
  async (params) => {
7575
7575
  await service.users.resendUserInvite(params.invite_id);
@@ -7771,7 +7771,7 @@ function registerWorkspacesTools(server, service) {
7771
7771
  );
7772
7772
  server.tool(
7773
7773
  "update_workspace",
7774
- "Update a workspace's name, slug, description, default flag, or metadata by id. Only provided fields change; changing the slug can break URLs and other references.",
7774
+ "Update a workspace's name, slug, description, default flag, or metadata by id, unlike update_workspace_member which changes role assignments within a workspace. Only provided fields change and updates take effect immediately; changing the slug can break URLs, API key references, and other external links, so confirm no dependencies first.",
7775
7775
  WORKSPACES_TOOL_SCHEMAS.updateWorkspace,
7776
7776
  async (params) => {
7777
7777
  const { workspace_id, is_default, metadata, ...rest } = params;
package/build/server.js CHANGED
@@ -2819,7 +2819,7 @@ function registerConfigsTools(server, service) {
2819
2819
  );
2820
2820
  server.tool(
2821
2821
  "create_config",
2822
- "Create a config that defines routing, cache, retry, and targets for requests. At least one of those settings is required; returns the new id and version_id.",
2822
+ "Create a config that defines routing, cache, retry, and targets for requests; use update_config to modify an existing one and list_config_versions for history. At least one setting is required, new configs become active immediately once referenced by a key or prompt, and the call returns the new id and version_id.",
2823
2823
  CONFIGS_TOOL_SCHEMAS.createConfig,
2824
2824
  async (params) => {
2825
2825
  const config = buildConfigPayload(params);
@@ -3033,7 +3033,7 @@ function registerGuardrailsTools(server, service) {
3033
3033
  );
3034
3034
  server.tool(
3035
3035
  "get_guardrail",
3036
- "Fetch one guardrail with its full checks and actions. Use this before updating rules or when you need the exact enforcement policy.",
3036
+ "Fetch one guardrail by id or slug with its full checks and actions; use list_guardrails to discover ids first. Use before update_guardrail or delete_guardrail when you need the exact enforcement policy, and returns the full check and action configuration alongside status and ownership.",
3037
3037
  GUARDRAILS_TOOL_SCHEMAS.getGuardrail,
3038
3038
  async (params) => {
3039
3039
  const guardrail = await service.guardrails.getGuardrail(
@@ -3099,7 +3099,7 @@ function registerGuardrailsTools(server, service) {
3099
3099
  );
3100
3100
  server.tool(
3101
3101
  "update_guardrail",
3102
- "Update a guardrail's name, checks, or actions. This creates a new version, so configs keep pointing at the latest policy after the change.",
3102
+ "Update a guardrail's name, checks, or actions, unlike create_guardrail which registers a new one or delete_guardrail which removes it. This creates a new version that takes effect immediately for dependent configs, so review list_guardrails first; returns the updated id, slug, and version_id.",
3103
3103
  GUARDRAILS_TOOL_SCHEMAS.updateGuardrail,
3104
3104
  async (params) => {
3105
3105
  const updateData = {};
@@ -3625,7 +3625,7 @@ function registerIntegrationsTools(server, service) {
3625
3625
  );
3626
3626
  server.tool(
3627
3627
  "update_integration_workspaces",
3628
- "Control which workspaces can use an integration and set per-workspace limits. Access changes and new limits apply to downstream usage immediately. Returns success and the number of workspaces updated.",
3628
+ "Control which workspaces can use an integration and set per-workspace limits, unlike update_integration which edits the org-level connection. Call list_integration_workspaces first to review current state; access changes and new limits apply to downstream usage immediately, and the call returns success plus the number of workspaces updated.",
3629
3629
  INTEGRATIONS_TOOL_SCHEMAS.updateIntegrationWorkspaces,
3630
3630
  async (params) => {
3631
3631
  const result = await service.integrations.updateIntegrationWorkspaces(
@@ -4099,7 +4099,7 @@ function registerKeysTools(server, service) {
4099
4099
  );
4100
4100
  server.tool(
4101
4101
  "update_api_key",
4102
- "Update an API key's name, description, scopes, defaults, or limits. Changes affect what downstream callers can access; type and sub-type stay fixed after creation. Returns success after the update is applied.",
4102
+ "Update an API key's name, description, scopes, defaults, or limits, unlike delete_api_key which revokes it or create_api_key which issues a new one. Changes take effect immediately for downstream callers, type and sub-type stay fixed after creation, and the call returns success without rotating the secret.",
4103
4103
  KEYS_TOOL_SCHEMAS.updateApiKey,
4104
4104
  async (params) => {
4105
4105
  const result = await service.keys.updateApiKey(params.id, {
@@ -4303,7 +4303,7 @@ function registerLabelsTools(server, service) {
4303
4303
  );
4304
4304
  server.tool(
4305
4305
  "update_prompt_label",
4306
- "Update a prompt label's name, description, or color only. This changes the label definition, not existing prompt-version assignments or history.",
4306
+ "Update a prompt label's name, description, or color only, unlike update_prompt_version which changes which label a version carries. This takes effect immediately for all versions already tagged with the label, but does not reassign labels or touch history; use list_prompt_labels to find the label_id first.",
4307
4307
  LABELS_TOOL_SCHEMAS.updatePromptLabel,
4308
4308
  async (params) => {
4309
4309
  const { label_id, ...updateData } = params;
@@ -4672,7 +4672,7 @@ function registerLimitsTools(server, service) {
4672
4672
  );
4673
4673
  server.tool(
4674
4674
  "update_usage_limit",
4675
- "Update a usage limit's name, credit_limit, alert_threshold, reset schedule, or reset target by id. Conditions and group_by are immutable after creation.",
4675
+ "Update a usage limit's name, credit_limit, alert_threshold, reset schedule, or reset target by id, unlike update_rate_limit which tunes request throttling. New values apply immediately to tracked usage, conditions and group_by are immutable after creation, and the call returns the updated id without clearing accumulated usage (use reset_usage_limit_entity for that).",
4676
4676
  LIMITS_TOOL_SCHEMAS.updateUsageLimit,
4677
4677
  async (params) => {
4678
4678
  const result = await service.limits.updateUsageLimit(params.id, {
@@ -5042,7 +5042,7 @@ function registerLoggingTools(server, service) {
5042
5042
  );
5043
5043
  server.tool(
5044
5044
  "cancel_log_export",
5045
- "Cancel a pending or running log export job. This permanently stops that export, so create a new log export if you need the same data again.",
5045
+ "Cancel a pending or running log export job, unlike start_log_export which queues one or delete_integration which removes the source. This permanently stops that export, takes effect immediately, and does not roll back already-processed rows; call create_log_export and start_log_export again to retry.",
5046
5046
  LOGGING_TOOL_SCHEMAS.cancelLogExport,
5047
5047
  async (params) => {
5048
5048
  const result = await service.logging.cancelLogExport(params.export_id);
@@ -5895,7 +5895,7 @@ function registerPartialsTools(server, service) {
5895
5895
  );
5896
5896
  server.tool(
5897
5897
  "list_prompt_partials",
5898
- "List partials across collections, with optional collection filtering. Returns ids, slugs, names, collections, and status so you can choose a prompt_partial_id before get/update/delete.",
5898
+ "List partials across collections, with optional collection filtering. Returns ids, slugs, names, collections, and status so you can choose a prompt_partial_id before get_prompt_partial, update_prompt_partial, delete_prompt_partial, or publish_partial.",
5899
5899
  PARTIALS_TOOL_SCHEMAS.listPromptPartials,
5900
5900
  async (params) => {
5901
5901
  const partials = await service.partials.listPromptPartials(params);
@@ -6045,7 +6045,7 @@ function registerPartialsTools(server, service) {
6045
6045
  );
6046
6046
  server.tool(
6047
6047
  "publish_partial",
6048
- "Publish a specific partial version as the default version. This changes which content {{> partial_name}} resolves to and replaces the previously active version.",
6048
+ "Publish a specific partial version as the default, unlike update_prompt_partial which creates a new draft without activating it. Use after list_partial_versions to pick a version_id; this immediately changes what {{> partial_name}} resolves to for all prompts and replaces the previously active version without a rollback path.",
6049
6049
  PARTIALS_TOOL_SCHEMAS.publishPartial,
6050
6050
  async (params) => {
6051
6051
  await service.partials.publishPartial(params.prompt_partial_id, {
@@ -6627,7 +6627,7 @@ function registerPromptsTools(server, service) {
6627
6627
  );
6628
6628
  server.tool(
6629
6629
  "publish_prompt",
6630
- "Publish a specific version of a prompt as the active default. Use list_prompt_versions to choose the version and update_prompt when you need to create new content before promoting it.",
6630
+ "Publish a specific version of a prompt as the active default, unlike promote_prompt which copies across environments or update_prompt which creates a new draft. This immediately routes all callers using the slug to that version and there is no rollback, so use list_prompt_versions to pick the version and update_prompt first if you need to create new content before promoting it.",
6631
6631
  PROMPTS_TOOL_SCHEMAS.publishPrompt,
6632
6632
  async (params) => {
6633
6633
  await service.prompts.publishPrompt(params.prompt_id, {
@@ -7584,7 +7584,7 @@ function registerUsersTools(server, service) {
7584
7584
  );
7585
7585
  server.tool(
7586
7586
  "resend_user_invite",
7587
- "Resend the email for a pending invite that has not been accepted. The invite must still exist; use get_user_invite first if you are unsure.",
7587
+ "Resend the email for a pending invite that has not been accepted, unlike invite_user which creates a new invite. This sends a fresh email without modifying the invite record, expiry, or role; use get_user_invite first if you are unsure whether the invite still exists and list_user_invites to discover invite_ids.",
7588
7588
  USERS_TOOL_SCHEMAS.resendUserInvite,
7589
7589
  async (params) => {
7590
7590
  await service.users.resendUserInvite(params.invite_id);
@@ -7786,7 +7786,7 @@ function registerWorkspacesTools(server, service) {
7786
7786
  );
7787
7787
  server.tool(
7788
7788
  "update_workspace",
7789
- "Update a workspace's name, slug, description, default flag, or metadata by id. Only provided fields change; changing the slug can break URLs and other references.",
7789
+ "Update a workspace's name, slug, description, default flag, or metadata by id, unlike update_workspace_member which changes role assignments within a workspace. Only provided fields change and updates take effect immediately; changing the slug can break URLs, API key references, and other external links, so confirm no dependencies first.",
7790
7790
  WORKSPACES_TOOL_SCHEMAS.updateWorkspace,
7791
7791
  async (params) => {
7792
7792
  const { workspace_id, is_default, metadata, ...rest } = params;
package/package.json CHANGED
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "name": "portkey-admin-mcp",
44
44
  "mcpName": "io.github.s-b-e-n-s-o-n/portkey-admin-mcp",
45
- "version": "0.3.1",
45
+ "version": "0.3.2",
46
46
  "main": "build/index.js",
47
47
  "keywords": [
48
48
  "mcp",