jujugrowth-mcp 1.3.0 → 1.4.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/package.json +1 -1
- package/server.mjs +40 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jujugrowth-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "MCP server connecting your AI coding assistant (Claude, Cursor, Codex) to jujugrowth — pull your living marketing plan's dev tasks + recommendations and apply them in your repo.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/server.mjs
CHANGED
|
@@ -180,6 +180,14 @@ const TOOLS = [
|
|
|
180
180
|
inputSchema: { type: "object", properties: {}, additionalProperties: false },
|
|
181
181
|
run: async () => call("GET", "/build-opportunities"),
|
|
182
182
|
},
|
|
183
|
+
{
|
|
184
|
+
name: "get_build_resources",
|
|
185
|
+
operator: true,
|
|
186
|
+
description:
|
|
187
|
+
"OPERATOR TOKEN ONLY. The BUILD RESOURCE MANIFEST: how to reach every portfolio integration when building an asset — DOMAIN (Namecheap: register AND verify the domain), EMAIL (Resend), IMAGE_GEN (JUJU-PERFECT), GEO (jujuGEO), GEM (Google Merchant), METRICS (push into jujugrowth metric_facts), GA4, JG_HOOKS (GTM + monitoring beacon + partner contract), GITHUB, AWS — plus the cross-cutting requirements (design, security, compliance, backups, cost, born-safe) to bake in. SECURITY: it serves the spec + how-to + secret NAMES only, NEVER raw secret values; read each value at build time by its name from .env / Secrets Manager. Call this once before building. Returns 403 for non-admin tokens.",
|
|
188
|
+
inputSchema: { type: "object", properties: {}, additionalProperties: false },
|
|
189
|
+
run: async () => call("GET", "/build-resources"),
|
|
190
|
+
},
|
|
183
191
|
{
|
|
184
192
|
name: "get_opportunity_build_brief",
|
|
185
193
|
operator: true,
|
|
@@ -193,11 +201,40 @@ const TOOLS = [
|
|
|
193
201
|
},
|
|
194
202
|
run: async (a) => call("GET", `/build-opportunities/${a.id}`),
|
|
195
203
|
},
|
|
204
|
+
{
|
|
205
|
+
name: "submit_opportunity_plan",
|
|
206
|
+
operator: true,
|
|
207
|
+
description:
|
|
208
|
+
"OPERATOR TOKEN ONLY. PLAN FIRST — before building, submit your plan for the owner's review: what you'll build, the stack, pages/features, design direction, integrations (domain, GA4, JG hooks, partner API), and the cost shape. Pass the opportunity `id` and the `plan` (markdown). The owner reviews it in the Opportunity Explorer; poll get_opportunity_plan_status and build only once it's approved.",
|
|
209
|
+
inputSchema: {
|
|
210
|
+
type: "object",
|
|
211
|
+
properties: {
|
|
212
|
+
id: { type: "string", description: "the opportunity id" },
|
|
213
|
+
plan: { type: "string", description: "the build plan (markdown)" },
|
|
214
|
+
},
|
|
215
|
+
required: ["id", "plan"],
|
|
216
|
+
additionalProperties: false,
|
|
217
|
+
},
|
|
218
|
+
run: async (a) => call("POST", `/build-opportunities/${a.id}/plan`, { plan: a.plan }),
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: "get_opportunity_plan_status",
|
|
222
|
+
operator: true,
|
|
223
|
+
description:
|
|
224
|
+
"OPERATOR TOKEN ONLY. The owner's review decision on your submitted plan: 'submitted' (wait), 'approved' (BUILD it), or 'changes_requested' (revise per the feedback, then submit_opportunity_plan again). Pass the opportunity `id`.",
|
|
225
|
+
inputSchema: {
|
|
226
|
+
type: "object",
|
|
227
|
+
properties: { id: { type: "string", description: "the opportunity id" } },
|
|
228
|
+
required: ["id"],
|
|
229
|
+
additionalProperties: false,
|
|
230
|
+
},
|
|
231
|
+
run: async (a) => call("GET", `/build-opportunities/${a.id}/plan-status`),
|
|
232
|
+
},
|
|
196
233
|
{
|
|
197
234
|
name: "mark_opportunity_built",
|
|
198
235
|
operator: true,
|
|
199
236
|
description:
|
|
200
|
-
"OPERATOR TOKEN ONLY. Report an opportunity BUILT
|
|
237
|
+
"OPERATOR TOKEN ONLY. Report an opportunity BUILT after you've actually built + DEPLOYED it live (not localhost). jujugrowth marks it 'built', awaiting the owner's go-live approval; once approved, JG reconnects its tracking + promotes it. Pass the opportunity `id`. Returns 403 for non-admin tokens.",
|
|
201
238
|
inputSchema: {
|
|
202
239
|
type: "object",
|
|
203
240
|
properties: { id: { type: "string", description: "the opportunity id" } },
|
|
@@ -238,7 +275,8 @@ async function handle(msg) {
|
|
|
238
275
|
"3) Before changing anything, VERIFY current-state claims against the actual code — they can be stale; skip what's already done.\n" +
|
|
239
276
|
"4) Implement in the user's repo, scoped to wording/structure/SEO/tracking the plan asks for. Show a diff / open a PR for the user to review.\n" +
|
|
240
277
|
"5) ALWAYS report completion once shipped, don't wait to be told: mark_recommendation_handled for a recommendation, or mark_plan_task_handled (with the task's action + a note) for a plan task — that's how the plan learns the work happened and marks the step done.\n" +
|
|
241
|
-
"Campaigns and ad budgets are NOT here — those are owner decisions the jujugrowth system runs itself. This server is bound to ONE site; never act on another
|
|
278
|
+
"Campaigns and ad budgets are NOT here — those are owner decisions the jujugrowth system runs itself. This server is bound to ONE site; never act on another.\n" +
|
|
279
|
+
"\nOPERATOR (admin token only) — the BUILD CHANNEL: list_build_opportunities → get_opportunity_build_brief → get_build_resources (the integration manifest: domain, EMAIL via Resend, image-gen, GEO/GEM, JG hooks, GA4, GitHub, AWS — secret NAMES only, never values) → submit_opportunity_plan (PLAN FIRST, owner approves) → build + DEPLOY live → mark_opportunity_built. You MUST register AND VERIFY the asset's domain (DNS propagation + TLS + Resend email-auth records) — a bought-but-unverified domain is NOT done. These operator tools are hidden from non-admin tokens.",
|
|
242
280
|
},
|
|
243
281
|
});
|
|
244
282
|
}
|