zola-mcp 1.1.3 → 1.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.
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "metadata": {
9
9
  "description": "Zola wedding planning tools for Claude Code",
10
- "version": "1.1.3"
10
+ "version": "1.3.0"
11
11
  },
12
12
  "plugins": [
13
13
  {
@@ -15,7 +15,7 @@
15
15
  "displayName": "Zola",
16
16
  "source": "./",
17
17
  "description": "Zola wedding planning tools for Claude — vendors, budget, guests, seating, events, registry, inquiries, and more via MCP",
18
- "version": "1.1.3",
18
+ "version": "1.3.0",
19
19
  "author": {
20
20
  "name": "Chris Chall"
21
21
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zola",
3
3
  "displayName": "Zola",
4
- "version": "1.1.3",
4
+ "version": "1.3.0",
5
5
  "description": "Zola wedding planning tools for Claude — vendors, budget, guests, seating, events, registry, inquiries, and more via MCP",
6
6
  "author": {
7
7
  "name": "Chris Chall",
package/README.md CHANGED
@@ -25,6 +25,28 @@ Ask Claude things like:
25
25
  - A [Zola](https://www.zola.com) account
26
26
  - For the no-env-var path: the [fetchproxy 0.3.0 Chrome / Safari extension](https://github.com/chrischall/fetchproxy)
27
27
 
28
+ ## Acknowledgement of Terms
29
+
30
+ By using this MCP server, you acknowledge and agree to the following:
31
+
32
+ **1. This server accesses your own Zola account.** Auth happens via your own credentials. It does not — and cannot — access anyone else's wedding website, registry, or guest list.
33
+
34
+ **2. [Zola's Terms of Use](https://www.zola.com/terms) govern your use of this server**, just as they govern your direct use of zola.com. The clauses most relevant here:
35
+
36
+ > [You may not use] any hardware or software intended to surreptitiously intercept or otherwise obtain any information… including but not limited to the use of any "scraping" or other data mining techniques, robots or similar data gathering and extraction tools.
37
+
38
+ And, critically, on agent-acting-as-you: *"You are responsible for maintaining the confidentiality of your account and password… You accept full responsibility for all activities that occur under your account and password, **even if such actions are undertaken by your Authorized Agent or other third party**."*
39
+
40
+ You are agreeing to those terms — read by the maintainer 2026-05-23 — every time you invoke a tool in this server. Zola's ToU is explicit: this MCP acting as your Authorized Agent counts as you.
41
+
42
+ **3. Personal, non-commercial use only.** This project is not affiliated with, endorsed by, sponsored by, or in partnership with Zola, Inc. It is a personal automation tool for one couple to manage their own wedding website, registry, vendor research, and guest list. Do not use it to bulk-extract Zola's vendor directory, scrape registries, or compete with Zola.
43
+
44
+ **4. Stability is not guaranteed.** This server may call internal Zola endpoints that change without notice. It may break.
45
+
46
+ **5. You accept full responsibility** for any consequences of using this server in connection with your Zola account — rate limiting, account warnings, suspension, or any enforcement action. Per Zola's ToU, anything this MCP does under your account is your action — review guest list edits, registry changes, and inquiries before confirming. If Zola objects to your use, stop using this server.
47
+
48
+ This section is the maintainer's good-faith summary of the terms — it is not legal advice and does not modify or supersede Zola's actual ToU.
49
+
28
50
  ## Installation
29
51
 
30
52
  ### Option A — MCPB (recommended)
package/dist/auth.js CHANGED
@@ -45,6 +45,7 @@
45
45
  // returns the JWT plus the source — callers (the client) treat the
46
46
  // return value as opaque credentials.
47
47
  import { bootstrap } from '@fetchproxy/bootstrap';
48
+ import { classifyBridgeError } from '@fetchproxy/server';
48
49
  import pkg from '../package.json' with { type: 'json' };
49
50
  /**
50
51
  * Read an env var, trim, and treat blank / `${UNEXPANDED}` placeholders as
@@ -113,6 +114,18 @@ export async function resolveRefreshToken() {
113
114
  return { token, source: 'fetchproxy' };
114
115
  }
115
116
  catch (e) {
117
+ // 0.8.0+ typed-error discrimination. The fetchproxy server already
118
+ // retries once on SW eviction (bridgeReviveDelayMs=2000 default), so
119
+ // a thrown FetchproxyBridgeDownError means the retry also failed —
120
+ // the extension's service worker is genuinely down and the user
121
+ // needs to wake it. The `.hint` is the actionable copy
122
+ // ("click the extension toolbar icon...") that we'd otherwise have
123
+ // to hand-write here. Surface it verbatim so users in path 2 get
124
+ // the same self-service guidance as path 3.
125
+ if (classifyBridgeError(e) === 'bridge_down') {
126
+ const downErr = e;
127
+ throw new Error(`Zola auth: fetchproxy bridge is down (extension service worker unreachable after retry). ${downErr.hint}`);
128
+ }
116
129
  const msg = e instanceof Error ? e.message : String(e);
117
130
  throw new Error(`Zola auth: no ZOLA_REFRESH_TOKEN set, and fetchproxy fallback failed: ${msg}`);
118
131
  }