mcp-zenskar 2.2.4 → 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.
- package/dist/mcp-config.json +11 -10
- package/dist/server.mjs +21 -19
- package/package.json +3 -5
package/dist/mcp-config.json
CHANGED
|
@@ -3169,7 +3169,7 @@
|
|
|
3169
3169
|
},
|
|
3170
3170
|
{
|
|
3171
3171
|
"name": "updateContract",
|
|
3172
|
-
"description": "Update an existing contract. This is a PUT endpoint — you MUST fetch the contract first with getContractById, then send ALL required fields including phases. Without phases the API returns 500. Copy phases from the GET response (each phase needs name, start_date, end_date at minimum).
|
|
3172
|
+
"description": "Update an existing contract. This is a PUT endpoint — you MUST fetch the contract first with getContractById, then send ALL required fields including phases. Without phases the API returns 500. Copy phases from the GET response (each phase needs name, start_date, end_date at minimum). Renewal: renew_with_default_contract, renew_with_existing, do_not_renew. EXPIRY: this tool CANNOT expire, end, terminate or cancel a contract. Contract status is derived from the CONTRACT-LEVEL end_date; phase end_dates never affect it. If the user asks to expire/end/terminate/cancel a contract, or to 'set' or 'update' its expiry date, you MUST call expireContract instead of this tool — it sets the end_date and also prunes future phases, trims overlapping phases and caps product dates, which this tool does not. Setting a past end_date here is rejected.",
|
|
3173
3173
|
"args": [
|
|
3174
3174
|
{
|
|
3175
3175
|
"name": "contractId",
|
|
@@ -3187,7 +3187,7 @@
|
|
|
3187
3187
|
},
|
|
3188
3188
|
{
|
|
3189
3189
|
"name": "status",
|
|
3190
|
-
"description": "Contract status: draft, active, paused, or disputed.
|
|
3190
|
+
"description": "Contract status: draft, active, paused, or disputed. 'expired' is not settable here — it is derived from contract-level end_date. Use expireContract to expire a contract.",
|
|
3191
3191
|
"type": "string",
|
|
3192
3192
|
"required": true,
|
|
3193
3193
|
"position": "body",
|
|
@@ -3223,7 +3223,7 @@
|
|
|
3223
3223
|
},
|
|
3224
3224
|
{
|
|
3225
3225
|
"name": "end_date",
|
|
3226
|
-
"description": "Contract end date in ISO 8601 format.",
|
|
3226
|
+
"description": "Contract end date in ISO 8601 format. Drives the effective contract status: a past end_date makes the contract read as EXPIRED. Leave null for an open-ended contract. Prefer expireContract over setting a past end_date here.",
|
|
3227
3227
|
"type": "string",
|
|
3228
3228
|
"required": false,
|
|
3229
3229
|
"position": "body"
|
|
@@ -3751,21 +3751,21 @@
|
|
|
3751
3751
|
},
|
|
3752
3752
|
{
|
|
3753
3753
|
"name": "expireContract",
|
|
3754
|
-
"description": "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": "
|
|
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": ["
|
|
3762
|
+
"sensitiveFields": ["contractIds", "expiry_date"]
|
|
3763
3763
|
},
|
|
3764
3764
|
"args": [
|
|
3765
3765
|
{
|
|
3766
|
-
"name": "
|
|
3767
|
-
"description": "
|
|
3768
|
-
"type": "
|
|
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/{
|
|
3782
|
+
"url": "/contract_v2/{contractIds}/expire",
|
|
3782
3783
|
"method": "PATCH",
|
|
3783
3784
|
"headers": {
|
|
3784
3785
|
"Content-Type": "application/json"
|