Lists the organization's AI paid media strategies (generated from a briefing by MB Suite's AI: channel mix, campaigns and budget), newest first, paginated by cursor (limit up to 200). Each row is a summary: name, status (generating, completed or error), objective, ad platforms, currency, monthly budget range (min_budget, max_budget), number of campaigns, label ids and, for a failed one, its error message. Filters status, objective, label_id and search (text in the name) fill the page (a page can come short only for a rare filter after scanning 600 strategies, with has_more true). Read one with strategy_generator.strategies.get. Strategies are generated in the app (AI Strategies): this API reads, edits, exports and deletes them. Requires view access to AI Strategies.
Scope
strategy_generator:read
Permission
View the module
MCP tool
strategy_generator_strategies_listOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.list".
Declared cost: up to 202 reads and 0 writes per call (they count against the daily quota).
Parameters
limitintegerqueryoptional
How many items this page brings at most (see the maximum and the default in the schema).
Default: 50
cursorstringqueryoptional
The next_cursor of the previous page, exactly as it came (only for the same list and filters); without it, the first page.
statusenumqueryoptional
Only strategies in this state: generating, completed or error.
Values: generating, completed, error
objectiveenumqueryoptional
Only strategies whose briefing has this campaign objective.
Returns one strategy: name, status, the briefing it was generated from (input: project, landing page, sector, product, objective, currency, budget mode, ad platforms, countries, languages, audience, interests, keywords and regions by country code), the AI plan, the projections the person adjusted (projections, null until edited or after a regeneration), label ids and the AI model used. result (null until the first generation finishes) holds the AI plan with snake_case keys: executive_summary; recommended_mix (list of {channel, percentage, reason}); detailed_plan (list of campaigns {id, channel, campaign_name, campaign_type, rationale, budget_percentage, kpis}); total_budget_estimation, min_budget, max_budget and currency (the monthly budget range); targeting_personas and audience_insights; the objective's estimated metrics (estimated_cpl, estimated_cpc, estimated_ctr, estimated_conversion_rate, estimated_total_leads, ecommerce_funnel…) and metric_rationales. The prompt sent to the AI and its raw answer are not returned. Not found (strategy_not_found) if the id does not exist in this organization. Requires view access to AI Strategies.
Scope
strategy_generator:read
Permission
View the module
MCP tool
strategy_generator_strategies_getOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.get".
Declared cost: up to 1 reads and 0 writes per call (they count against the daily quota).
Parameters
strategy_idstringpathrequired
Strategy id (from strategy_generator.strategies.list).
Response
idstring
Strategy id.
namestring
Strategy name.
statusenum
generating, completed or error.
Values: generating, completed, error
inputobject
The briefing it was generated from.
resultobject | null
The AI plan (its keys as the AI wrote them); null until the first generation finishes.
projectionsobject | null
The projection values the person adjusted; null until edited or after a regeneration.
label_idsarray<string>
Labels (strategy_generator.labels.list).
ai_modelstring | null
The AI model that generated it.
error_messagestring | null
Why the generation failed (status error).
created_bystring | null
Who created it (uid).
created_atnumber
Epoch ms.
updated_atnumber
Epoch ms.
created_by_namestring | null
That person's name (null when MB Suite does not know it: a former member).
Changes one or more of these, sent inside updates ({ strategy_id, updates: { … } }): name (up to 200 characters); label_ids (replaces the whole list; ids from strategy_generator.labels.list, unknown ones are dropped); result (replaces the WHOLE AI plan: send the complete object you read with strategy_generator.strategies.get, modified, keeping recommended_mix and detailed_plan as lists; up to 400 KB); projections (replaces the projection values: rates, amounts, budget_basis min|avg|max, campaign_budget_mode, hide_revenue). result (null until the first generation finishes) holds the AI plan with snake_case keys: executive_summary; recommended_mix (list of {channel, percentage, reason}); detailed_plan (list of campaigns {id, channel, campaign_name, campaign_type, rationale, budget_percentage, kpis}); total_budget_estimation, min_budget, max_budget and currency (the monthly budget range); targeting_personas and audience_insights; the objective's estimated metrics (estimated_cpl, estimated_cpc, estimated_ctr, estimated_conversion_rate, estimated_total_leads, ecommerce_funnel…) and metric_rationales. The plan can only be edited on a completed strategy (409 strategy_not_ready while it generates or after a failed first generation). Unknown fields are rejected. It does not run the AI: a new plan is generated from the app. Idempotent: sending what the strategy already has changes nothing (changed: false). Returns the strategy. Requires edit access to AI Strategies.
Scope
strategy_generator:write
Permission
Edit in the module
MCP tool
strategy_generator_strategies_updateOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.update".
Declared cost: up to 101 reads and 1 writes per call (they count against the daily quota).
Parameters
strategy_idstringpathrequired
Strategy id (from strategy_generator.strategies.list).
updatesobjectbodyrequired
What changes (at least one field).
Response
strategyobject
The strategy as it is now.
changedboolean
false when the values sent were already the current ones: nothing was written.
Deletes a strategy. It stays 30 days in the trash, where an owner or admin can restore it with the same id, its plan, projections and labels (platform.trash.restore); a strategy deleted while generating loses that run and comes back with its previous plan, or as failed if it had none. Outside the app it needs a dry run and a confirm_token, except a REST DELETE with a key allowed to delete. Emits strategy_generator.strategy.deleted. Requires edit access to AI Strategies.
With an API key, this DELETE runs directly: the record stays 30 days in the trash and the response carries its trash_item_id. With an OAuth token, and through the MCP, it needs dry_run → confirm_token.
Scope
strategy_generator:writeand “Allow deletions” (strategy_generator:delete in OAuth)
Permission
Edit in the module
MCP tool
strategy_generator_strategies_deleteOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.delete".
Renders a strategy to an A4 PDF with the organization's branding and returns a signed download link that expires in 24 hours, plus the file name and size. sections picks what goes in (cover, strategy, projections, briefing; default all four). The projections in the PDF are the ones saved in the strategy. Rendering can take tens of seconds; when the PDF service is slow or not available right now it fails with pdf_unavailable (503): retry after retry_after. A strategy without a generated plan cannot be exported (409 strategy_not_ready). Not idempotent: each call renders a new file. Requires edit access to AI Strategies.
Instructions for agents
Give the person the download link and say it expires in 24 hours. Do not paste the link anywhere public.
Scope
strategy_generator:write
Permission
Edit in the module
MCP tool
strategy_generator_strategies_export_pdfOn the full surface; on the compact one, mb_execute_operation with id: "strategy_generator.strategies.export_pdf".
Declared cost: up to 1 reads and 0 writes per call (they count against the daily quota). Touches an external platform (pdf): it counts against the external operations quota.
Parameters
strategy_idstringpathrequired
Strategy id (from strategy_generator.strategies.list).
sectionsarray<enum>bodyoptional
Sections to include, in this order: cover, strategy, projections, briefing (default: all four).
curl-X POST "https://api.mb-suite.com/v1/strategy-generator/strategies/{strategy_id}/export-pdf" \
-H"Authorization: Bearer $MB_API_KEY"
Try it with your test API key
With a test API key the request always goes to your practice organization: example data you can reset.In the practice organization this operation is not simulated (it reaches another platform): it answers 409 sandbox_external_unavailable.