@productmaker/mcp 2.9.4 → 2.10.1

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/README.md CHANGED
@@ -41,14 +41,14 @@ Verify with `claude mcp list`. Use `--scope user` for a global install.
41
41
  No install needed — connect to the hosted endpoint:
42
42
 
43
43
  - **Server URL:** `https://mcp.productmaker.app/mcp`
44
- - **Header:** `Authorization: Bearer pm_live_...` *(or use the URL-only form below)*
44
+ - **Header:** `Authorization: Bearer pm_live_...` _(or use the URL-only form below)_
45
45
 
46
- In claude.ai: *Settings → Integrations → Add MCP server*.
47
- In ChatGPT: *Settings → Connectors → Add custom connector*.
46
+ In claude.ai: _Settings → Integrations → Add MCP server_.
47
+ In ChatGPT: _Settings → Connectors → Add custom connector_.
48
48
 
49
49
  ### Claude Desktop (Add custom connector — URL only)
50
50
 
51
- Claude Desktop's *Settings → Connectors → Add custom connector* modal only
51
+ Claude Desktop's _Settings → Connectors → Add custom connector_ modal only
52
52
  accepts a URL. Paste your key as a query parameter:
53
53
 
54
54
  - **Name:** Product Maker
@@ -63,51 +63,84 @@ Sign up at [productmaker.app](https://productmaker.app) and create a key (prefix
63
63
 
64
64
  ## What you can do from your AI assistant
65
65
 
66
- | Tool | What it does |
67
- |---|---|
68
- | `cost_product` | Estimate a safe Colombia/COP selling price for free, then reuse its `price` and `compareAtPrice` in `create_product_task` |
69
- | `create_product_task` | Full pipeline from a product image (extract → angles → video → landing → image creatives) |
70
- | `get_task_status` | Check task progress (optional `waitSeconds` for near-sync polling) |
71
- | `list_tasks` | List recent tasks |
72
- | `edit_task_draft` | Edit angle / pain point / persona before generation |
73
- | `create_service_video` | Video for a *service* built from its landing page URL. **Paid action** — `automatic` generates directly, `guided` returns concepts to approve via `resolve_pending_action` |
74
- | `generate_video_creative` | Standalone UGC video creative |
75
- | `generate_free_video` | One free-form video from an exact prompt/script, optionally with a reference image (async: returns a `taskId`) |
76
- | `generate_image_creatives` | Standalone image creatives (multiple variants) |
77
- | `edit_image_creative` | Fix ONE already-generated image of a creatives task (pick it with `variantIndex`, describe the change in `instruction`) without regenerating the whole set. **Paid action** — charges a single image; requires the task to be `done` |
78
- | `generate_landing` | Standalone landing page |
79
- | `get_video_script` | Read the pending video script when a task was created with script review paused (returns scenes + per-scene word limits) |
80
- | `approve_video_script` | Approve the video script (with optional per-scene edits); render starts and consumes credits |
81
- | `regenerate_video_script` | Re-roll the pending video script (optionally with a different narrative style) |
82
- | `resolve_pending_action` | Resolve a gate the pipeline is waiting on (product-reference confirmation or angle-review approval) when `get_task_status` returns `pendingUserAction` |
83
- | `estimate_creative_variant` | Free estimate of the credit range for an extra video / image / landing section inside an existing task. Call this first |
84
- | `create_creative_variant` | Create that extra creative in an existing task. **Paid action** — requires `confirm: true` plus an idempotent `clientRequestId` |
85
- | `list_shopify_shops` | List connected Shopify stores |
86
- | `list_shopify_products` | Search products in a connected Shopify store before choosing `targetProductId` for `publish_to_shopify` |
87
- | `list_meta_ad_accounts` | List connected Meta ad accounts |
88
- | `list_meta_destinations` | List Meta Business portfolios, ad accounts per portfolio, and Facebook Pages; use the returned IDs to choose the exact publication destination |
89
- | `request_meta_media_upload` | Start secure staging for up to ten mixed image/video files from the user's laptop; accepts an optional `maxFiles` limit, ChatGPT can pass optional top-level `files` references from the same message into the inline App bridge, other MCP App hosts use the inline picker, and the external ProductMaker page remains fallback only |
90
- | `check_meta_media_upload` | Check whether the user finished the browser upload and return every owner-scoped staged asset with its media kind |
91
- | `list_tiktok_advertisers` | List connected TikTok Ads advertiser accounts |
92
- | `publish_to_shopify` | Publish a completed task to a Shopify store (returns markdown with landing + product URLs) |
93
- | `publish_to_meta` | Create a Meta Ads campaign from a task (always PAUSED) after selecting exact `portfolioId`, `adAccountId`, and `pageId` with `list_meta_destinations` |
94
- | `publish_creatives_to_meta` | Group task creatives or user media into ONE paused Meta campaign; user media is staged on ProductMaker's CDN and removed after successful publication or TTL expiry |
95
- | `publish_to_tiktok` | Create a TikTok Ads campaign from a task (always created PAUSED). Same `angleIndexes` + `campaignConfig` shape as Meta |
96
- | `get_meta_campaign_status` | Read-only status + lifetime insights (spend/impressions/clicks/reach) of a Meta campaign |
97
- | `get_tiktok_campaign_status` | Read-only status + lifetime report of a TikTok campaign (requires `advertiserId`) |
98
- | `find_winning_products` | Research winning dropshipping products for a country/category with AI-explained reasons, risks, and real Meta Ads evidence. **Costs 2000 credits per run** — requires explicit user confirmation (`confirmed: true`) before charging. Covers CO, MX, PE, EC, CL |
99
- | `get_product_research_run` | Read the full report (score, verdict, confidence, reasons, risks, ad evidence) of a research run by `runId`. Free |
100
- | `list_product_research_runs` | List the user's past research runs, most recent first. Free |
101
- | `start_dropshipping_project` | Start or resume a guided dropshipping project. Idempotent, costs no credits |
102
- | `cost_dropshipping_project` | Save the project's costing inputs (the backend recomputes the canonical result and owns versioning) |
103
- | `guide_dropshipping_launch` | Read-only launch guidance: the project's phase and the single computed `nextAction`. Never activates Meta |
104
- | `list_actors` | List the user's saved personajes (AI-generated people who can star in videos and images). Returns the `id` to pass as `actorId`. Read-only, free |
66
+ ### Guided dropshipping launch
67
+
68
+ The MCP exposes one guided prompt, `start_dropshipping`, for users who want
69
+ ProductMaker to lead the complete journey. It routes intent before acting: a
70
+ focused request to create a creative, publish to Shopify, or publish to Meta
71
+ continues through the corresponding tool without creating a project. The guided
72
+ flow uses the project's persisted phase and `guide_dropshipping_launch`'s
73
+ `nextAction` instead of maintaining a second checklist in the chat.
74
+
75
+ The launch flow asks for explicit confirmation before the 2,000-credit product
76
+ research run and before other paid or external mutations, uses the real supplier
77
+ cost for costing, pauses at user-review gates, and leaves Meta campaigns PAUSED.
78
+ It does not promise persistent memory, automatic next-day monitoring, traffic-light
79
+ decisions, campaign activation, budget changes, or automatic shutdown. For deeper
80
+ Meta metrics, the assistant may optionally suggest Meta's official MCP; that is
81
+ not required to use ProductMaker and is never claimed to be installed by this
82
+ server.
83
+
84
+ Use it in one of three ways: load the source-controlled Agent Plugin on a
85
+ compatible host and invoke `$start-dropshipping`, select the MCP prompt
86
+ `start_dropshipping` where prompts are supported, or ask any tool-only client in
87
+ natural language to guide an end-to-end launch. A focused creative, landing,
88
+ Shopify, Meta, or status request continues through its direct tool.
89
+
90
+ The plugin manifests intentionally contain no ProductMaker API key. The host
91
+ must provide the authenticated MCP connection through its secure connection or
92
+ credential flow; loading the skill alone does not prove that the remote endpoint
93
+ is authorized. Public OpenAI/“With MCP” registration and OAuth readiness are a
94
+ separate release step.
95
+
96
+ | Tool | What it does |
97
+ | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
98
+ | `cost_product` | Estimate a safe Colombia/COP selling price for free, then reuse its `price` and `compareAtPrice` in `create_product_task` |
99
+ | `create_product_task` | Full pipeline from a product image (extract → angles → video → landing → image creatives) |
100
+ | `get_task_status` | Check task progress (optional `waitSeconds` for near-sync polling) |
101
+ | `list_tasks` | List recent tasks |
102
+ | `edit_task_draft` | Edit angle / pain point / persona before generation |
103
+ | `create_service_video` | Video for a _service_ built from its landing page URL. **Paid action** — `automatic` generates directly, `guided` returns concepts to approve via `resolve_pending_action` |
104
+ | `generate_video_creative` | Standalone UGC video creative |
105
+ | `generate_free_video` | One free-form video from an exact prompt/script, optionally with a reference image (async: returns a `taskId`) |
106
+ | `generate_image_creatives` | Standalone image creatives (multiple variants) |
107
+ | `edit_image_creative` | Fix ONE already-generated image of a creatives task (pick it with `variantIndex`, describe the change in `instruction`) without regenerating the whole set. **Paid action** — charges a single image; requires the task to be `done` |
108
+ | `generate_landing` | Standalone landing page |
109
+ | `get_video_script` | Read the pending video script when a task was created with script review paused (returns scenes + per-scene word limits) |
110
+ | `approve_video_script` | Approve the video script (with optional per-scene edits); render starts and consumes credits |
111
+ | `regenerate_video_script` | Re-roll the pending video script (optionally with a different narrative style) |
112
+ | `resolve_pending_action` | Resolve a gate the pipeline is waiting on (product-reference confirmation or angle-review approval) when `get_task_status` returns `pendingUserAction` |
113
+ | `estimate_creative_variant` | Free estimate of the credit range for an extra video / image / landing section inside an existing task. Call this first |
114
+ | `create_creative_variant` | Create that extra creative in an existing task. **Paid action** — requires `confirm: true` plus an idempotent `clientRequestId` |
115
+ | `list_shopify_shops` | List connected Shopify stores |
116
+ | `list_shopify_products` | Search products in a connected Shopify store before choosing `targetProductId` for `publish_to_shopify` |
117
+ | `list_meta_ad_accounts` | List connected Meta ad accounts |
118
+ | `list_meta_destinations` | List Meta Business portfolios, ad accounts per portfolio, and Facebook Pages; use the returned IDs to choose the exact publication destination |
119
+ | `request_media_upload` | Open the consumer-neutral inline file picker for ProductMaker tasks, image/video creatives, landings, and Meta; supports image, video, or mixed sessions, ChatGPT file references, an explicit OK chat handoff, and `/upload-media` only as fallback |
120
+ | `check_media_upload` | Return verified owner-scoped opaque asset IDs and media kinds from a universal upload session; no bytes, token, file name, or private URL reaches the model |
121
+ | `request_meta_media_upload` | Backward-compatible Meta upload alias; existing clients keep the legacy staged-source flow |
122
+ | `check_meta_media_upload` | Backward-compatible Meta status alias returning legacy staged asset IDs |
123
+ | `list_tiktok_advertisers` | List connected TikTok Ads advertiser accounts |
124
+ | `publish_to_shopify` | Publish a completed task to a Shopify store (returns markdown with landing + product URLs) |
125
+ | `publish_to_meta` | Create a Meta Ads campaign from a task (always PAUSED) after selecting exact `portfolioId`, `adAccountId`, and `pageId` with `list_meta_destinations` |
126
+ | `publish_creatives_to_meta` | Group task creatives or user media into ONE paused Meta campaign; user media is staged on ProductMaker's CDN and removed after successful publication or TTL expiry |
127
+ | `publish_to_tiktok` | Create a TikTok Ads campaign from a task (always created PAUSED). Same `angleIndexes` + `campaignConfig` shape as Meta |
128
+ | `get_meta_campaign_status` | Read-only status + lifetime insights (spend/impressions/clicks/reach) of a Meta campaign |
129
+ | `get_tiktok_campaign_status` | Read-only status + lifetime report of a TikTok campaign (requires `advertiserId`) |
130
+ | `find_winning_products` | Research winning dropshipping products for a country/category with AI-explained reasons, risks, and real Meta Ads evidence. **Costs 2000 credits per run** — requires explicit user confirmation (`confirmed: true`) before charging. Covers CO, MX, PE, EC, CL |
131
+ | `get_product_research_run` | Read the full report (score, verdict, confidence, reasons, risks, ad evidence) of a research run by `runId`. Free |
132
+ | `list_product_research_runs` | List the user's past research runs, most recent first. Free |
133
+ | `start_dropshipping_project` | Start or resume a guided dropshipping project. Idempotent, costs no credits |
134
+ | `cost_dropshipping_project` | Save the project's costing inputs (the backend recomputes the canonical result and owns versioning) |
135
+ | `guide_dropshipping_launch` | Read-only launch guidance: the project's phase and the single computed `nextAction`. Never activates Meta |
136
+ | `list_actors` | List the user's saved personajes (AI-generated people who can star in videos and images). Returns the `id` to pass as `actorId`. Read-only, free |
105
137
 
106
138
  ### Uploading personal media from a remote chat
107
139
 
108
- When a user says “sube estos archivos de mi Desktop a Meta”, the hosted MCP
109
- cannot open the laptop filesystem directly. Call `request_meta_media_upload`
110
- with its default `mediaKind: "mixed"`. The primary path is the inline MCP App:
140
+ When a user wants to use laptop files in any supported ProductMaker flow, the
141
+ hosted MCP cannot open the laptop filesystem directly. Call
142
+ `request_media_upload` with the consumer's required `mediaKind`; use `mixed`
143
+ only when both images and videos are valid. The primary path is the inline MCP App:
111
144
  in ChatGPT, the same user message may contribute top-level `files` references;
112
145
  in other MCP App hosts, the user can still pick the files from the inline
113
146
  widget. The inline device picker sends `File` objects directly to ProductMaker's
@@ -117,10 +150,14 @@ it never downloads those URLs itself, never forwards them to the API, and never
117
150
  asks the user for a CDN URL, local path, bytes, or base64.
118
151
 
119
152
  If the host lacks the bridge/picker capabilities, fall back to the external
120
- ProductMaker upload page returned by the tool. Once the user finishes staging,
121
- call `check_meta_media_upload` with the returned `sessionId`. For every
122
- reported entry in `assets[]`, use its `mediaKind` as the creative `type` and
123
- its `stagingAssetId` as:
153
+ consumer-neutral ProductMaker upload page returned by the tool. After the user
154
+ presses OK, continue the previous request with only the verified `assetId` and
155
+ matching `mediaKind` values. `check_media_upload` remains available for hosts
156
+ that need an explicit status call.
157
+
158
+ Existing Meta clients may continue using `request_meta_media_upload` and
159
+ `check_meta_media_upload`. For every legacy entry in `assets[]`, use its
160
+ `mediaKind` as the creative `type` and its `stagingAssetId` as:
124
161
 
125
162
  ```json
126
163
  { "type": "staged", "stagingAssetId": "..." }
@@ -177,13 +214,13 @@ The `base64` field was removed. MCP JSON-RPC transports truncate large tool argu
177
214
 
178
215
  ## Environment variables
179
216
 
180
- | Var | Default | Required for |
181
- |---|---|---|
182
- | `PM_API_KEY` | — | stdio (required) |
183
- | `PM_API_URL` | `https://api.productmaker.app` | both |
184
- | `PORT` | `8080` | http only |
185
- | `MCP_PROXY_BASE_URL` | `https://mcp.productmaker.app` | http only |
186
- | `PM_PROXY_SECRET` | — | http only (32+ chars; enables asset proxy) |
217
+ | Var | Default | Required for |
218
+ | -------------------- | ------------------------------ | ------------------------------------------ |
219
+ | `PM_API_KEY` | — | stdio (required) |
220
+ | `PM_API_URL` | `https://api.productmaker.app` | both |
221
+ | `PORT` | `8080` | http only |
222
+ | `MCP_PROXY_BASE_URL` | `https://mcp.productmaker.app` | http only |
223
+ | `PM_PROXY_SECRET` | — | http only (32+ chars; enables asset proxy) |
187
224
 
188
225
  ## Keywords
189
226