@productmaker/mcp 2.4.0 → 2.9.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
@@ -85,10 +85,13 @@ Sign up at [productmaker.app](https://productmaker.app) and create a key (prefix
85
85
  | `list_shopify_shops` | List connected Shopify stores |
86
86
  | `list_shopify_products` | Search products in a connected Shopify store before choosing `targetProductId` for `publish_to_shopify` |
87
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 |
88
91
  | `list_tiktok_advertisers` | List connected TikTok Ads advertiser accounts |
89
92
  | `publish_to_shopify` | Publish a completed task to a Shopify store (returns markdown with landing + product URLs) |
90
- | `publish_to_meta` | Create a Meta Ads campaign from a task (always created PAUSED). Accepts optional `angleIndexes[]` to publish a subset of angles and flat `campaignConfig {dailyBudgetUsd, targetCountries[], campaignName}` for tunables |
91
- | `publish_creatives_to_meta` | Group creatives from several tasks (or raw media) into ONE paused Meta campaign across multiple ad sets |
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 |
92
95
  | `publish_to_tiktok` | Create a TikTok Ads campaign from a task (always created PAUSED). Same `angleIndexes` + `campaignConfig` shape as Meta |
93
96
  | `get_meta_campaign_status` | Read-only status + lifetime insights (spend/impressions/clicks/reach) of a Meta campaign |
94
97
  | `get_tiktok_campaign_status` | Read-only status + lifetime report of a TikTok campaign (requires `advertiserId`) |
@@ -100,6 +103,36 @@ Sign up at [productmaker.app](https://productmaker.app) and create a key (prefix
100
103
  | `guide_dropshipping_launch` | Read-only launch guidance: the project's phase and the single computed `nextAction`. Never activates Meta |
101
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 |
102
105
 
106
+ ### Uploading personal media from a remote chat
107
+
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:
111
+ in ChatGPT, the same user message may contribute top-level `files` references;
112
+ in other MCP App hosts, the user can still pick the files from the inline
113
+ widget. The inline device picker sends `File` objects directly to ProductMaker's
114
+ private staging CDN; it does not upload them to the host first. ProductMaker
115
+ treats any `files` references only as UI bridge metadata:
116
+ it never downloads those URLs itself, never forwards them to the API, and never
117
+ asks the user for a CDN URL, local path, bytes, or base64.
118
+
119
+ 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:
124
+
125
+ ```json
126
+ { "type": "staged", "stagingAssetId": "..." }
127
+ ```
128
+
129
+ inside `publish_creatives_to_meta`. A partial batch may include only the assets
130
+ that `assets[]` actually reports as uploaded. The browser uploads directly to
131
+ the presigned CDN object; the chat never receives file bytes, base64, or a
132
+ local path, and ProductMaker deletes the staging object after a successful
133
+ paused Meta publication (or via the 24-hour TTL cleanup if the flow is
134
+ abandoned).
135
+
103
136
  ## Video duration and winner review
104
137
 
105
138
  `create_product_task` and `generate_video_creative` accept `durationSeconds`: