Menu

API reference · SEO Planner

Action templates

seo_planner · action_templates · 8 operations

GET/v1/seo-planner/action-templates

List SEO action templates

seo_planner.action_templates.list

ReadIdempotentSince 2026-11-01

Lists SEO action templates: a reusable action (name, subtitle, seo_type, description, icon, color and its sub-actions) to create planner actions (seo_planner.action_templates.apply) or build packs. source picks where from: all (default) = the organization's own, then its agency workspace's when the organization is an Account (read only), then the published templates of the MB Suite library; or org, parent, system. Paginated by cursor. Requires view access to the SEO Planner.

Scope
seo_planner:read
Permission
View the module
MCP tool
seo_planner_action_templates_listOn the full surface; on the compact one, mb_execute_operation with id: "seo_planner.action_templates.list".

Declared cost: up to 601 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.

sourceenumqueryoptional

all (default: the organization's, then its workspace's when it is an Account, then the published ones of the MB Suite library), org, parent or system.

Values: all, org, parent, system · Default: "all"

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/seo-planner/action-templates" \
  -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.

curl "https://api.mb-suite.com/v1/seo-planner/action-templates" \
  -H "Authorization: Bearer $MB_TEST_KEY"
GET/v1/seo-planner/action-templates/{template_id}

Get one SEO action template

seo_planner.action_templates.get

ReadIdempotentSince 2026-11-01

Returns one SEO action template. Without source it looks in the organization's templates, then its workspace's (for an Account) and then the published templates of the MB Suite library; drafts of the library do not exist for an organization. 404 seo_action_template_not_found otherwise. Requires view access to the SEO Planner.

Scope
seo_planner:read
Permission
View the module
MCP tool
seo_planner_action_templates_getOn the full surface; on the compact one, mb_execute_operation with id: "seo_planner.action_templates.get".

Declared cost: up to 3 reads and 0 writes per call (they count against the daily quota).

Parameters

template_idstringpathrequired

The action template id (id of an item of seo_planner.action_templates.list).

sourceenumqueryoptional

Where to look: org, parent (the workspace of an Account) or system (the MB Suite library). Without it, in that order.

Values: org, parent, system

Response

idstring
namestring

The title the created action gets.

seo_typestring

Action type it creates.

sourceenum

org (editable), parent (the agency workspace's, read only) or system (the MB Suite library: copy it with seo_planner.action_templates.clone_system).

Values: org, parent, system

subtitlestring | null
descriptionstring | null
icon_keystring | null
colorstring | null
sub_actionsarray<object>

The checklist the created action gets.

ordernumber
source_org_idstring | null

With source parent: the workspace the template belongs to.

created_by_idstring | null

Who created it (null or system for the library).

created_by_namestring | null

Their name, when it is a person.

created_atnumber
updated_atnumber

Errors

Example

curl "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}" \
  -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.

curl "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/seo-planner/action-templates

Create an SEO action template

seo_planner.action_templates.create

WriteSince 2026-11-01

Creates an action template at the end of the organization's list, owned by the caller: name, seo_type, optional subtitle, description, icon and color (default: those of the type) and sub_actions (ordered titles). Returns the template. Requires full access to the SEO Planner.

Scope
seo_planner:write
Permission
Edit in the module
MCP tool
seo_planner_action_templates_createOn the full surface; on the compact one, mb_execute_operation with id: "seo_planner.action_templates.create".

Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).

Parameters

namestringbodyrequired

The title the created actions get (1 to 200 characters).

seo_typeenumbodyrequired

Their type.

Values: blog_post, on_page_seo, speed_performance, technical_seo, website_audit, ai_geo, backlink, keyword_research, seo_analytics, international_seo, local_seo, setup_tools, competitor_analysis, link_audit, rank_tracking, client_report, custom

subtitlestringbodyoptional

Their subtitle.

descriptionstringbodyoptional

Their description.

icon_keystringbodyoptional

MDI icon name (default: the type's).

colorstringbodyoptional

Hex color (default: the type's).

sub_actionsarray<object>bodyoptional

The checklist the created actions get, in order.

Response

template_idstring
templateobject

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/seo-planner/action-templates" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME",
  "seo_type": "blog_post"
}'

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.

curl -X POST "https://api.mb-suite.com/v1/seo-planner/action-templates" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "name": "NAME",
  "seo_type": "blog_post"
}'
PATCH/v1/seo-planner/action-templates/{template_id}

Update an SEO action template

seo_planner.action_templates.update

WriteSince 2026-11-01

Changes the name, subtitle, seo_type, description, icon, color or sub_actions (the whole ordered list) of one of the organization's action templates; templates of the workspace or the library cannot be edited from here. Planner actions already created from it are not touched. Unknown fields are rejected. Returns the template. Requires full access to the SEO Planner.

Scope
seo_planner:write
Permission
Edit in the module
MCP tool
seo_planner_action_templates_updateOn the full surface; on the compact one, mb_execute_operation with id: "seo_planner.action_templates.update".

Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).

Parameters

template_idstringpathrequired

The id of one of the organization's own action templates (a workspace or library one cannot be edited: copy it first).

updatesobjectbodyrequired

The fields to change (at least one).

Response

templateobject

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'

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.

curl -X PATCH "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "updates": {}
}'
DELETE/v1/seo-planner/action-templates/{template_id}

Delete an SEO action template

seo_planner.action_templates.delete

IrreversibleSince 2026-11-01

Deletes one of the organization's action templates. It goes to the 30-day trash, where an owner or admin can restore it. Planner actions and packs built from it are not touched. Outside the app it needs a dry run and a confirm_token, except a REST DELETE with a key allowed to delete. Requires full access to the SEO Planner.

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
seo_planner:write and “Allow deletions” (seo_planner:delete in OAuth)
Permission
Edit in the module
MCP tool
seo_planner_action_templates_deleteOn the full surface; on the compact one, mb_execute_operation with id: "seo_planner.action_templates.delete".

Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).

Parameters

template_idstringpathrequired

The id of one of the organization's own action templates (source org).

Response

oktrue
trash_item_idstring

The trash item this deletion left: the item_id of platform.trash.restore (POST /trash/{item_id}/restore). Missing if nothing went to the trash.

trash_item_idsarray<string>

Only when the deletion left more than one copy: all of them, the first being trash_item_id.

trash_expires_atnumber

When the copy leaves the trash for good (epoch ms): 30 days after the deletion.

Errors

Example

curl -X DELETE "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}" \
  -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.

curl -X DELETE "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/seo-planner/action-templates/{template_id}/duplicate

Duplicate an SEO action template

seo_planner.action_templates.duplicate

WriteSince 2026-11-01

Copies one of the organization's action templates into a new one named '<name> (Copy)' (the suffix in the caller's language: '(Copia)', '(Copy)' or '(Cópia)') at the end of the list, owned by the caller. Returns the new template id. Requires full access to the SEO Planner.

Scope
seo_planner:write
Permission
Edit in the module
MCP tool
seo_planner_action_templates_duplicateOn the full surface; on the compact one, mb_execute_operation with id: "seo_planner.action_templates.duplicate".

Declared cost: up to 2 reads and 1 writes per call (they count against the daily quota).

Parameters

template_idstringpathrequired

The id of one of the organization's own action templates (source org).

Response

template_idstring

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}/duplicate" \
  -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.

curl -X POST "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}/duplicate" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/seo-planner/action-templates/system/{system_template_id}/clone

Copy a library action template into the organization

seo_planner.action_templates.clone_system

WriteSince 2026-11-01

Copies a published action template of the MB Suite library (an id from seo_planner.action_templates.list with source system) into the organization so it can be edited. Drafts of the library cannot be copied (404 seo_action_template_not_found). Returns the new template id. Requires full access to the SEO Planner.

Scope
seo_planner:write
Permission
Edit in the module
MCP tool
seo_planner_action_templates_clone_systemOn the full surface; on the compact one, mb_execute_operation with id: "seo_planner.action_templates.clone_system".

Declared cost: up to 2 reads and 1 writes per call (they count against the daily quota).

Parameters

system_template_idstringpathrequired

The id of a published library template (an item of seo_planner.action_templates.list with source system).

Response

template_idstring

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/seo-planner/action-templates/system/{system_template_id}/clone" \
  -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.

curl -X POST "https://api.mb-suite.com/v1/seo-planner/action-templates/system/{system_template_id}/clone" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/seo-planner/action-templates/{template_id}/apply

Create a planner action from an SEO action template

seo_planner.action_templates.apply

WriteSince 2026-11-01

Creates one SEO Planner action from a template in the month month_key (YYYY-MM): pending, with the template's name as title, its subtitle, type, description and sub-actions (unticked), linked to the template (template_id). The template is read on the server (the organization's, its workspace's or a published library template; without source, in that order). Returns the new action. Requires full access to the SEO Planner.

Scope
seo_planner:write
Permission
Edit in the module
MCP tool
seo_planner_action_templates_applyOn the full surface; on the compact one, mb_execute_operation with id: "seo_planner.action_templates.apply".
Events it can emit
seo_planner.item.created

Declared cost: up to 3 reads and 1 writes per call (they count against the daily quota).

Parameters

template_idstringpathrequired

The action template id (id of an item of seo_planner.action_templates.list).

month_keystringbodyrequired

The month of the new action (YYYY-MM).

sourceenumbodyoptional

Where to look: org, parent (the workspace of an Account) or system (the MB Suite library). Without it, in that order.

Values: org, parent, system

Response

item_idstring
itemobject

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}/apply" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "month_key": "MONTH_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.

curl -X POST "https://api.mb-suite.com/v1/seo-planner/action-templates/{template_id}/apply" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "month_key": "MONTH_KEY"
}'