Menu

API reference · SEO Planner

Comments

seo_planner · comments · 4 operations

GET/v1/seo-planner/items/{item_id}/comments

List the comments of an SEO planner action

seo_planner.comments.list

ReadIdempotentSince 2026-11-01

Lists the internal comments of an SEO Planner action, oldest first, paginated by cursor: content (sanitized HTML), author and mentioned member uids. 404 seo_item_not_found if the action does not exist in this organization. Requires view access to the SEO Planner.

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

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

Parameters

item_idstringpathrequired

The action id (id of an item of seo_planner.items.list).

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.

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/seo-planner/items/{item_id}/comments" \
  -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/items/{item_id}/comments" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/seo-planner/items/{item_id}/comments

Comment on an SEO planner action

seo_planner.comments.create

WriteSince 2026-11-01

Adds an internal comment to an SEO Planner action (simple HTML or text, sanitized; up to 10,000 characters) and bumps its comment_count. mentions are member uids to notify in the bell (only members of this organization or of its agency workspace receive the notice). The client portal does not show these comments. Returns the comment. Requires full access to the SEO Planner.

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

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

Parameters

item_idstringpathrequired

The action id (id of an item of seo_planner.items.list).

contentstringbodyrequired

The comment: plain text or simple HTML (it is sanitized), up to 10,000 characters.

mentionsarray<string>bodyoptional

Uids of members to mention (members of the organization or of its workspace: members.members.list); they get a notification in the bell.

Response

comment_idstring
commentobject

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/seo-planner/items/{item_id}/comments" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "content": "CONTENT"
}'

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/items/{item_id}/comments" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "content": "CONTENT"
}'
PATCH/v1/seo-planner/items/{item_id}/comments/{comment_id}

Edit a comment of an SEO planner action

seo_planner.comments.update

WriteIdempotentSince 2026-11-01

Replaces the content (and mentions) of a comment on an SEO Planner action. Only its author can edit it (403 comment_author_only); only newly added mentions are notified. Returns the updated comment. Requires full access to the SEO Planner.

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

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

Parameters

item_idstringpathrequired

The action id (id of an item of seo_planner.items.list).

comment_idstringpathrequired

The comment id (id of an item of seo_planner.comments.list).

contentstringbodyrequired

The comment: plain text or simple HTML (it is sanitized), up to 10,000 characters.

mentionsarray<string>bodyoptional

Uids of members to mention (members of the organization or of its workspace: members.members.list); they get a notification in the bell.

Response

commentobject

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/seo-planner/items/{item_id}/comments/{comment_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "CONTENT"
}'

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/items/{item_id}/comments/{comment_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "CONTENT"
}'
DELETE/v1/seo-planner/items/{item_id}/comments/{comment_id}

Delete a comment of an SEO planner action

seo_planner.comments.delete

IrreversibleSince 2026-11-01

Deletes a comment of an SEO Planner action and lowers its comment_count. Its author or an owner/admin of the organization can delete it (403 comment_delete_denied otherwise). It stays 30 days in the trash (platform.trash.restore brings it back to its action). 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_comments_deleteOn the full surface; on the compact one, mb_execute_operation with id: "seo_planner.comments.delete".

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

Parameters

item_idstringpathrequired

The action id (id of an item of seo_planner.items.list).

comment_idstringpathrequired

The comment id (id of an item of seo_planner.comments.list).

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/items/{item_id}/comments/{comment_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/items/{item_id}/comments/{comment_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY"