mcp-zenskar 2.2.5 → 2.3.0

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.
@@ -3751,21 +3751,21 @@
3751
3751
  },
3752
3752
  {
3753
3753
  "name": "expireContract",
3754
- "description": "THE ONLY tool that can expire, end, terminate or cancel a contract — use it whenever the user wants a contract to stop on a given date, including when they phrase it as 'update the expiry date'. Do NOT use updateContract for this. Expire an ACTIVE or PAUSED contract by adjusting its end_date. Allowed status transitions: ACTIVE→EXPIRED, PAUSED→EXPIRED. EXPIRED is terminal — calling on an already-expired contract returns 400; do NOT retry, do NOT escalate to deleteContract or any other destructive tool as a fallback. Verify contract.status via getContractById before calling. Idempotency: NO. The contract expires at end of day 23:59:59.999999. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.",
3754
+ "description": "THE ONLY tool that can expire, end, terminate or cancel contracts — use it whenever the user wants contracts to stop on a given date, including when they phrase it as 'update the expiry date'. Do NOT use updateContract for this. To expire SEVERAL contracts, pass every id in contractIds on a SINGLE call — never call this tool once per contract, as each call raises its own approval dialog and only the most recent one can be approved. Expire an ACTIVE or PAUSED contract by adjusting its end_date. Allowed status transitions: ACTIVE→EXPIRED, PAUSED→EXPIRED. EXPIRED is terminal — calling on an already-expired contract returns 400; do NOT retry, do NOT escalate to deleteContract or any other destructive tool as a fallback. Verify contract.status via getContractById before calling. Idempotency: NO. The contract expires at end of day 23:59:59.999999. Host enforces user confirmation via the approval gate; do NOT ask the user to re-confirm before calling.",
3755
3755
  "needsApproval": true,
3756
3756
  "approvalConfig": {
3757
3757
  "title": "Expire Contract",
3758
3758
  "description": "This will set the contract's end_date and transition status to EXPIRED. EXPIRED is terminal.",
3759
- "warningText": "Once expired, the contract cannot be re-activated through this endpoint. Future-dated phases beyond the expiry will be removed.",
3759
+ "warningText": "Approving this expires EVERY contract listed in contractIds — review the full list before confirming. Expiry is terminal: contracts cannot be re-activated through this endpoint, and future-dated phases beyond the expiry will be removed.",
3760
3760
  "confirmText": "Expire Contract",
3761
3761
  "cancelText": "Cancel",
3762
- "sensitiveFields": ["contractId", "expiry_date"]
3762
+ "sensitiveFields": ["contractIds", "expiry_date"]
3763
3763
  },
3764
3764
  "args": [
3765
3765
  {
3766
- "name": "contractId",
3767
- "description": "The unique identifier (UUID) of the contract to expire.",
3768
- "type": "string",
3766
+ "name": "contractIds",
3767
+ "description": "UUIDs of the contracts to expire. Always a list, even for one contract. Pass every contract in one call. Each contract expires independently. The result reports each one.",
3768
+ "type": "array",
3769
3769
  "required": true,
3770
3770
  "position": "path"
3771
3771
  },
@@ -3777,8 +3777,9 @@
3777
3777
  "position": "body"
3778
3778
  }
3779
3779
  ],
3780
+ "bulkOver": { "listArg": "contractIds", "maxBatch": 25 },
3780
3781
  "requestTemplate": {
3781
- "url": "/contract_v2/{contractId}/expire",
3782
+ "url": "/contract_v2/{contractIds}/expire",
3782
3783
  "method": "PATCH",
3783
3784
  "headers": {
3784
3785
  "Content-Type": "application/json"