campaign_plan_comment_create
Post a Comment on a Campaign Plan, or a reply in one of its threads.
Ask the agent to post an update on a Campaign Plan. A Comment is a post on the AdCrunch Campaign Plan. It is not a comment on an ad or a campaign at Meta, Google or TikTok.
“Post on the spring sale plan that the TikTok test ends on 15 April.”
The agent calls campaign_plan_comment_create. The Comment shows in the Updates tab of the Campaign Plan in the AdCrunch console. It names the agent that posted it, for example Claude, and you as its author.
To answer a Comment, the agent sends the id of that Comment as parent_id. A thread has one level, so a reply cannot have replies.
A Comment does not change the Campaign Plan. An approved plan stays approved. No tool edits or deletes a Comment: you do that in the console.
Plan a campaign walks the whole job.
Reference
Post a Comment on a Campaign Plan: an update, a question or a decision. A Comment is a post on the AdCrunch Campaign Plan, not a comment on an ad or a campaign at Meta, Google or TikTok. The body is markdown, 1 to 10,000 characters. Send parent_id, the id of a top-level Comment, to reply in its thread; a reply cannot have replies. The Comment names your client as the agent that posted it, and the person who connected you as its author. A Comment does not change the plan: its revision stays, and an approved plan stays approved. No tool edits or deletes a Comment: the person does that in the AdCrunch console. A Campaign Plan is AdCrunch’s own planning document — it is not a campaign on Meta or Google. For those, use list_campaigns and get_campaign.
Input
| Argument | Type | Required | Description |
|---|---|---|---|
body |
string, 1 to 10000 characters | yes | The markdown text of the Comment, 1 to 10,000 characters. |
campaign_plan_name |
string | yes | The Campaign Plan slug — its stable per-organization handle. |
parent_id |
string | no | The id of a top-level Comment, cmt_…, from campaign_plan_comment_list. Omit it to start a new thread. |
Output
A successful call returns this object in structuredContent.
| Field | Type | Always present | Description |
|---|---|---|---|
comment |
object | yes | |
comment.body |
string or null | yes | The markdown text. null for a deleted Comment that stays as the head of its thread. |
comment.clientId |
string or null | yes | The client of the agent that posted the Comment, or null when a person posted it in the console. adgent is the AdCrunch Adgent. |
comment.createdAt |
number | yes | Milliseconds since the Unix epoch, UTC. |
comment.createdBy |
string | yes | The author of the Comment, usr_…: the person who posted it, or for whom an agent posted it. |
comment.deleted |
boolean | yes | true for a deleted Comment that a live reply still answers. Its body is null. |
comment.editedAt |
number or null | yes | When the author last edited the text, or null. |
comment.id |
string | yes | The id of the Comment, cmt_…. Send it as parent_id to reply in its thread. |
comment.parentId |
string or null | yes | The top-level Comment that this reply answers, or null for a top-level Comment. |
Failure codes
A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.
not_foundparent_not_foundparent_is_replyorganization_unentitledforbiddeninvalid_requestinternal_error
Scope
The token must hold campaign_plan:write. Auth & scopes lists each scope.
Annotations
A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.
- Writes. The tool can change data.
- Not destructive. The tool makes only additive changes.
- Not idempotent. A second call with the same arguments can change more.
- Closed world. The tool reads and writes the data of AdCrunch only.
Example
The arguments:
{
"body": "The TikTok test ends on 15 April. I will post the CPA then.",
"campaign_plan_name": "spring-sale",
"parent_id": "cmt_8b3f10"
}
The result, in structuredContent:
{
"comment": {
"body": "The TikTok test ends on 15 April. I will post the CPA then.",
"clientId": "https://claude.ai/oauth/mcp-oauth-client-metadata",
"createdAt": 1768435260000,
"createdBy": "usr_5d2b71",
"deleted": false,
"editedAt": null,
"id": "cmt_c41a92",
"parentId": "cmt_8b3f10"
}
}