@ziggs-ai/ziggs-mcp 0.37.24 → 0.37.25

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/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.37.25
6
+
7
+ - `ziggs_inbox_claim` takes the lease and returns that it claimed, plus how many deliveries are waiting. It does not return the inbox.
8
+ - A malformed inbox acknowledgement is a request error, not a connection failure.
9
+ - Agreement list `fields` resolve the same aliases as the other lists and report `unknownFields`.
10
+
5
11
  ## 0.37.24
6
12
 
7
13
  - `tools/list` marks `ziggs_inbox` read-only, with no ack parameters. `ziggs_inbox_ack` stays the write that moves the watermark. The inbox description says a full read takes this host's lease and that waitSeconds long-polls.
package/dist/tools.js CHANGED
@@ -2,7 +2,7 @@ import { isDirectorySurface } from './directorySurface.js';
2
2
  import { INBOX_CARD_TOOL_META, inboxCardResult, registerInboxCardResource, } from './inboxCard.js';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { z } from 'zod';
5
- import { presentResourceActions, getAgreement, getMyAgreements, listMyChats, respondToAgreement, revokeAgreement, counterAgreement, fulfillAgreement, sendChatMessage, ConnectionsClient, ContextReadClient, GrantsClient, InboxClient, AssistantConnectionClient, createTask, updateTaskState, acknowledgeTaskControl, replaceTaskPlan, updateTaskPlanSteps, listTasks, getTask, getBackendUrl, fetchMyOrgs, fetchSessionAccess, isMcpOAuthDelegateSession, GRANTS_CAPABILITIES, AGREEMENT_TERMS_PARAMS, AGREEMENT_VERB_CAPABILITIES, LISTING_DOOR_CAPABILITIES, CONTEXT_GRANT_SCOPE_KINDS, contextReadCapability, openCapability, accessExplainCapability, contextExpandReachCapability, contextDiscoverGrantableCapability, recordArtifactCapability, listArtifactsCapability, findArtifactsCapability, shareArtifactCapability, attachArtifactCapability, uploadArtifactUrlCapability, completeArtifactFileCapability, downloadArtifactCapability, openConversationCapability, connectionProxyCapability, requestConnectionCapability, agreementClaimCapability, agreementSubcontractCapability, listTasksCapability, cancelTaskCapability, marketplaceViewCapability, parseListFields, pickListedRows, projectChatListRows, sessionOrientation, presentSendResult, presentTaskOutcome, explainRefusedRead, RESOURCE_HIDDEN_MESSAGE, SOURCES_DESCRIPTION, } from '@ziggs-ai/api-client';
5
+ import { presentResourceActions, getAgreement, getMyAgreements, listMyChats, respondToAgreement, revokeAgreement, counterAgreement, fulfillAgreement, sendChatMessage, ConnectionsClient, ContextReadClient, GrantsClient, InboxClient, AssistantConnectionClient, createTask, updateTaskState, acknowledgeTaskControl, replaceTaskPlan, updateTaskPlanSteps, listTasks, getTask, getBackendUrl, fetchMyOrgs, fetchSessionAccess, isMcpOAuthDelegateSession, GRANTS_CAPABILITIES, AGREEMENT_TERMS_PARAMS, AGREEMENT_VERB_CAPABILITIES, LISTING_DOOR_CAPABILITIES, CONTEXT_GRANT_SCOPE_KINDS, contextReadCapability, openCapability, accessExplainCapability, contextExpandReachCapability, contextDiscoverGrantableCapability, recordArtifactCapability, listArtifactsCapability, findArtifactsCapability, shareArtifactCapability, attachArtifactCapability, uploadArtifactUrlCapability, completeArtifactFileCapability, downloadArtifactCapability, openConversationCapability, connectionProxyCapability, requestConnectionCapability, agreementClaimCapability, agreementSubcontractCapability, listTasksCapability, cancelTaskCapability, marketplaceViewCapability, parseListFields, pickListedRows, listedFieldNote, projectChatListRows, sessionOrientation, presentSendResult, presentTaskOutcome, explainRefusedRead, RESOURCE_HIDDEN_MESSAGE, SOURCES_DESCRIPTION, } from '@ziggs-ai/api-client';
6
6
  import { decodeOperatorKeyClaims } from './operatorKey.js';
7
7
  import { registerTrustTools } from './trustTools.js';
8
8
  import { registerPaymentTools } from './paymentTools.js';
@@ -392,10 +392,12 @@ export function registerZiggsTools(server, creds, cfg) {
392
392
  ...(proposalStatus ? { proposalStatus } : {}),
393
393
  partyOnly: scope === 'mine',
394
394
  }, creds);
395
+ const projected = parseListFields(fields);
395
396
  return textResult({
396
397
  count: agreements.length,
397
398
  scope: scope ?? 'reachable',
398
- agreements: pickListedRows(agreements, parseListFields(fields)),
399
+ agreements: pickListedRows(agreements, projected),
400
+ ...listedFieldNote(agreements, projected),
399
401
  });
400
402
  }
401
403
  catch (e) {
@@ -830,10 +832,9 @@ export function registerZiggsTools(server, creds, cfg) {
830
832
  registerStrictTool(server, 'ziggs_inbox_claim', {}, destructive('Claim the inbox for this worker'), async () => {
831
833
  try {
832
834
  const client = inboxFor(creds);
833
- return compactTextResult(await client.getInbox(), {
834
- agentIds: [creds.agentId],
835
- personId: ownerPrincipalId(creds, cfg),
836
- });
835
+ const inbox = await client.getInbox();
836
+ const deliveryCount = Array.isArray(inbox.deliveries) ? inbox.deliveries.length : 0;
837
+ return textResult({ claimed: true, deliveryCount });
837
838
  }
838
839
  catch (e) {
839
840
  return toolError(e);
@@ -229,7 +229,15 @@ export class WorkspaceRouter {
229
229
  this.remember(synced.workspaces);
230
230
  return result(synced);
231
231
  }
232
- if (name === 'ziggs_inbox' || name === 'ziggs_inbox_claim') {
232
+ if (name === 'ziggs_inbox_claim') {
233
+ const inbox = await this.client.inbox(0, false);
234
+ const workspaces = inbox.workspaces;
235
+ if (Array.isArray(workspaces))
236
+ this.remember(workspaces);
237
+ const deliveryCount = Array.isArray(inbox.deliveries) ? inbox.deliveries.length : 0;
238
+ return compactTextResult({ claimed: true, deliveryCount });
239
+ }
240
+ if (name === 'ziggs_inbox') {
233
241
  const inbox = await this.client.inbox(Number(args.waitSeconds ?? 0), this.directory && name === 'ziggs_inbox');
234
242
  const workspaces = inbox.workspaces;
235
243
  if (Array.isArray(workspaces))
@@ -248,7 +256,7 @@ export class WorkspaceRouter {
248
256
  return compactTextResult({
249
257
  ...news,
250
258
  ...pending,
251
- ...(name === 'ziggs_inbox' && args.waitSeconds == null ? { rules: sessionRules('directory') } : {}),
259
+ ...(args.waitSeconds == null ? { rules: sessionRules('directory') } : {}),
252
260
  ...(note && typeof pending.notice === 'string' ? { notice: `${pending.notice} ${note}` } : {}),
253
261
  session: { workspaces },
254
262
  instruction: `deliveries.forYou is your work; deliveries.forYourPerson is for your person to see. ${ASK_YOUR_HUMAN}`,
@@ -282,7 +290,9 @@ export class WorkspaceRouter {
282
290
  return result({ count: workspaces.length, orgs: workspaces });
283
291
  }
284
292
  catch (error) {
285
- if (name === 'ziggs_notification_status' || name === 'ziggs_inbox_changes')
293
+ if (name === 'ziggs_notification_status' ||
294
+ name === 'ziggs_inbox_changes' ||
295
+ name === 'ziggs_inbox_ack')
286
296
  return toolError(error);
287
297
  return refusal('CONNECTION_REQUEST_FAILED', error instanceof Error ? error.message : String(error));
288
298
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ziggs-ai/ziggs-mcp",
3
- "version": "0.37.24",
3
+ "version": "0.37.25",
4
4
  "description": "MCP server for Claude Code, Cursor, and other MCP hosts \u2014 act as your Ziggs delegate agent",
5
5
  "homepage": "https://ziggsai.com/docs",
6
6
  "bugs": {
@@ -51,7 +51,7 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@modelcontextprotocol/sdk": "^1.29.0",
54
- "@ziggs-ai/api-client": "0.37.22",
54
+ "@ziggs-ai/api-client": "0.37.23",
55
55
  "dotenv": "^16.6.1",
56
56
  "zod": "^3.24.2",
57
57
  "zod-to-json-schema": "^3.25.1"