jujugrowth-mcp 1.0.5 → 1.0.7

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.
Files changed (3) hide show
  1. package/README.md +27 -3
  2. package/package.json +1 -1
  3. package/server.mjs +11 -1
package/README.md CHANGED
@@ -39,9 +39,33 @@ claude mcp add jujugrowth --scope user \
39
39
  The jujugrowth Settings → Developer panel generates the token and shows these
40
40
  commands pre-filled.
41
41
 
42
- 3. Restart the client. You'll have three tools:
43
- - `list_recommendations`open recommendations across your businesses
42
+ 3. Restart the client. **First use:** your AI will ask to approve the jujugrowth
43
+ tools the first time it calls them approve them. (In Claude Code, if it's in
44
+ "don't ask"/deny mode it silently refuses — toggle the permission mode or run
45
+ `/allowed-tools`, then approve once.)
46
+
47
+ You'll have these tools:
48
+ - `list_recommendations` — open recommendations (one site if the token is scoped)
44
49
  - `get_recommendation` — the full brief for one (implement it in your repo)
45
- - `mark_recommendation_handled` — mark it done after you've shipped it
50
+ - `mark_recommendation_handled` — mark it done (with a note of what you changed)
51
+ - `request_site_advice` — Pro: trigger a fresh website analysis
52
+ - `request_campaign_brief` — Pro: trigger a campaign brief
53
+
54
+ A token can be scoped to one business; the server then announces itself as
55
+ `jujugrowth (yoursite.com)` and only ever touches that site. Generate scoped
56
+ tokens in jujugrowth → Settings → Developer (one per business/repo).
57
+
58
+ ## Prompts to get started
59
+
60
+ Open your AI in your site's project and try:
61
+
62
+ - **See the work:** "List my jujugrowth recommendations and summarize each in one line."
63
+ - **Implement one:** "Get the full brief for the most impactful recommendation, verify it against the code, then implement it here — show me a diff before committing. Mark it handled when it's in."
64
+ - **Fresh analysis (Pro):** "Ask jujugrowth to run a fresh website analysis for this site, then list the new recommendations."
65
+ - **Hands-off:** "Pull my open jujugrowth recommendations, implement the website/SEO ones in this repo (skip GA4-console or business-judgment items — flag those for me), open a PR, and mark each handled with a note."
66
+
67
+ The server also tells your AI the workflow on connect (verify-before-changing,
68
+ scope guardrails, always mark handled), so it follows the loop without you
69
+ spelling it out each time.
46
70
 
47
71
  Requires Node ≥ 22. Optional env `JUJUGROWTH_API` (defaults to https://jujugrowth.com).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jujugrowth-mcp",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "MCP server connecting your AI coding assistant (Claude, Cursor, Codex) to jujugrowth — pull recommendations and apply them in your repo.",
5
5
  "type": "module",
6
6
  "bin": {
package/server.mjs CHANGED
@@ -68,7 +68,7 @@ const TOOLS = [
68
68
  {
69
69
  name: "get_recommendation",
70
70
  description:
71
- "Get the full implementable brief for one recommendation (title, body, and a ready-to-implement claude_prompt when present). Implement it in the user's repo, scoped to wording/structure/SEO — never touch checkout, auth, or analytics events.",
71
+ "Get the full implementable brief for one recommendation (title, body, and a ready-to-implement claude_prompt when present). Verify the brief's current-state claims against the actual code first (they can be stale), then implement in the user's repo scoped to wording/structure/SEO — never touch checkout, auth, or analytics events. After it's shipped, ALWAYS call mark_recommendation_handled with a note of what you changed.",
72
72
  inputSchema: {
73
73
  type: "object",
74
74
  properties: { tenantId: { type: "string" }, recId: { type: "string" } },
@@ -138,6 +138,16 @@ async function handle(msg) {
138
138
  name: SITE_LABEL ? `jujugrowth (${SITE_LABEL})` : "jujugrowth",
139
139
  version: "1.0.0",
140
140
  },
141
+ // Workflow the AI should follow unprompted (so the human never has to
142
+ // say "now mark it handled"). Surfaced to the model by MCP clients.
143
+ instructions:
144
+ `This server provides growth recommendations for ${SITE_LABEL ? `the site "${SITE_LABEL}"` : "the user's site(s)"} and connects them to your code work. Standard loop:\n` +
145
+ "1) list_recommendations.\n" +
146
+ "2) get_recommendation for one you'll act on.\n" +
147
+ "3) Before changing anything, VERIFY the brief's current-state claims against the actual code — they can be stale; skip what's already done.\n" +
148
+ "4) Implement in the user's repo, scoped to wording/structure/SEO. Never change checkout, auth, or analytics events. Show a diff / open a PR for the user to review.\n" +
149
+ "5) ALWAYS call mark_recommendation_handled with a short note of what you changed once it's shipped — don't wait to be told.\n" +
150
+ "Skip GA4-console toggles and business-judgment items — flag those for the user instead of editing code. This server is bound to ONE site; never act on another.",
141
151
  },
142
152
  });
143
153
  }