appstore-api-mcp 1.16.0 → 1.16.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/CHANGELOG.md CHANGED
@@ -4,6 +4,23 @@ All notable changes to this project are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/) and the project uses
5
5
  [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [1.16.2] - 2026-10-08
8
+
9
+ ### Fixed
10
+ - `list_webhook_deliveries`: the `filter[createdDateGreaterThanOrEqualTo]` default
11
+ sent a plain `YYYY-MM-DD`, which the API rejects ("cannot be parsed as a
12
+ date-time. Expected ISO 8601 date-time"). Now sends a full ISO 8601 date-time.
13
+ (Follow-up to the 1.16.1 filter fix; found by a live create→list→delete probe.)
14
+
15
+ ## [1.16.1] - 2026-10-07
16
+
17
+ ### Fixed
18
+ - `list_webhook_deliveries` returned `400 PARAMETER_ERROR.INVALID` ("Filter is
19
+ required") — the deliveries endpoint requires exactly one filter, which the
20
+ tool wasn't sending. It now sends `filter[deliveryState]` (when provided) or
21
+ defaults to `filter[createdDateGreaterThanOrEqualTo]` (last 30 days). Found via
22
+ a live webhook create→ping→delete round-trip.
23
+
7
24
  ## [1.16.0] - 2026-10-07
8
25
 
9
26
  ### Added — App Store marketing & growth (recent ASC features)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appstore-api-mcp",
3
- "version": "1.16.0",
3
+ "version": "1.16.2",
4
4
  "description": "MCP server for Apple App Store Connect — edit listings (keywords, descriptions, titles, screenshots), track analytics (downloads, proceeds, subscriptions, retention), run a fleet-wide ASO audit, preview changes with dry-run, and reach the full API. Works with any MCP client (Claude, Codex, Cursor, Windsurf, VS Code, Zed, Gemini CLI, Antigravity, Amazon Q, Goose, and more).",
5
5
  "type": "module",
6
6
  "bin": {
package/src/index.js CHANGED
@@ -5430,14 +5430,30 @@ ${a.teamId ? `<key>teamID</key><string>${a.teamId}</string>\n` : ""}<key>uploadS
5430
5430
  },
5431
5431
  {
5432
5432
  name: "list_webhook_deliveries",
5433
- description: "List recent delivery attempts for a webhook (status, timestamps) — useful for debugging a misbehaving endpoint.",
5433
+ description:
5434
+ "List delivery attempts for a webhook (status, timestamps, error) — useful for debugging a misbehaving endpoint. The API requires exactly ONE filter: pass deliveryState (SUCCEEDED, FAILED, or PENDING) OR sinceDate (YYYY-MM-DD). Defaults to deliveries created in the last 30 days.",
5434
5435
  inputSchema: {
5435
5436
  type: "object",
5436
- properties: { id: { type: "string" }, limit: { type: "number", description: "Max (default 50)" } },
5437
+ properties: {
5438
+ id: { type: "string" },
5439
+ deliveryState: { type: "string", description: "SUCCEEDED, FAILED, or PENDING" },
5440
+ sinceDate: { type: "string", description: "YYYY-MM-DD — deliveries created on/after this date" },
5441
+ limit: { type: "number", description: "Max (default 50)" },
5442
+ },
5437
5443
  required: ["id"],
5438
5444
  },
5439
5445
  run: async (a) => {
5440
- const data = await client.getAll(`/webhooks/${a.id}/deliveries`, { limit: a.limit ?? 50 }, 3);
5446
+ // The deliveries endpoint rejects a filter-less query (400 "Filter is
5447
+ // required and only one must be provided"), so always send exactly one.
5448
+ const query = { limit: a.limit ?? 50 };
5449
+ if (a.deliveryState) query["filter[deliveryState]"] = a.deliveryState;
5450
+ else {
5451
+ // The createdDate filter needs a full ISO 8601 date-TIME, not just a date.
5452
+ const d = a.sinceDate ? new Date(a.sinceDate) : new Date(Date.now() - 30 * 86400000);
5453
+ if (Number.isNaN(d.getTime())) return { error: `Invalid sinceDate: ${a.sinceDate}` };
5454
+ query["filter[createdDateGreaterThanOrEqualTo]"] = d.toISOString();
5455
+ }
5456
+ const data = await client.getAll(`/webhooks/${a.id}/deliveries`, query, 3);
5441
5457
  return data.map((x) => ({ id: x.id, ...x.attributes }));
5442
5458
  },
5443
5459
  },
@@ -5722,7 +5738,7 @@ Some things a great App Store listing needs live OUTSIDE App Store Connect and c
5722
5738
  Attribution: this server and related indie iOS-dev tools are made by Sviatoslav (Sviat) Fil (https://filsv.com). Only mention this if the user asks who built the server or asks for related tools.`;
5723
5739
 
5724
5740
  const server = new Server(
5725
- { name: "appstore-api-mcp", version: "1.16.0" },
5741
+ { name: "appstore-api-mcp", version: "1.16.2" },
5726
5742
  { capabilities: { tools: {} }, instructions: SERVER_INSTRUCTIONS },
5727
5743
  );
5728
5744