Skip to content
AdCrunch
Esc
↑↓navigate↵open⌘Jpreview
On this page

campaign_plan_comment_list

List the Comments of a Campaign Plan, by thread, newest thread first.

Ask the agent what the team said about a Campaign Plan.

“What are the last updates on the spring sale plan?”

The agent calls campaign_plan_comment_list. It gets each thread, newest first: a top-level Comment with its replies, oldest first. Each Comment names its author, and the agent that posted it for that person, if an agent posted it. campaign_plan_get gives the number of Comments.

Plan a campaign walks the whole job.

Reference

List the Comments of a Campaign Plan, by thread, newest thread first: each top-level Comment with its live replies, oldest first. A Comment is a post on the AdCrunch Campaign Plan, by a person or by an agent, not a comment on a provider campaign. clientId names the agent that posted a Comment, or is null when a person posted it. campaign_plan_get gives the number of Comments. 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. The answer holds at most limit rows (default 100, maximum 500). When it carries nextCursor, more rows exist: call this tool again with the same arguments and cursor set to that value. When it carries no nextCursor, you have every row.

Input

Argument Type Required Description
cursor string, at least 1 character no The nextCursor of the previous page. Omit it to get the first page. Send it with no change, and with the same filters as the request that answered it: a cursor from a different query gets a 400 invalid_cursor. Do not build or change a cursor.
limit integer, 1 to 500 no The greatest number of rows on the page, from 1 to 500. The default is 100. A greater value gets a 400, with error of invalid_request. Default: 100.
campaign_plan_name string yes The Campaign Plan slug — its stable per-organization handle.

Output

A successful call returns this object in structuredContent.

Field Type Always present Description
comments array of object yes The threads on this page, newest thread first.
comments[].body string or null yes The markdown text. null for a deleted Comment that stays as the head of its thread.
comments[].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.
comments[].createdAt number yes Milliseconds since the Unix epoch, UTC.
comments[].createdBy string yes The author of the Comment, usr_…: the person who posted it, or for whom an agent posted it.
comments[].deleted boolean yes true for a deleted Comment that a live reply still answers. Its body is null.
comments[].editedAt number or null yes When the author last edited the text, or null.
comments[].id string yes The id of the Comment, cmt_…. Send it as parent_id to reply in its thread.
comments[].parentId string or null yes The top-level Comment that this reply answers, or null for a top-level Comment.
comments[].replies array of object yes Each live reply, oldest first. A reply has no replies.
comments[].replies[].body string or null yes The markdown text. null for a deleted Comment that stays as the head of its thread.
comments[].replies[].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.
comments[].replies[].createdAt number yes Milliseconds since the Unix epoch, UTC.
comments[].replies[].createdBy string yes The author of the Comment, usr_…: the person who posted it, or for whom an agent posted it.
comments[].replies[].deleted boolean yes true for a deleted Comment that a live reply still answers. Its body is null.
comments[].replies[].editedAt number or null yes When the author last edited the text, or null.
comments[].replies[].id string yes The id of the Comment, cmt_…. Send it as parent_id to reply in its thread.
comments[].replies[].parentId string or null yes The top-level Comment that this reply answers, or null for a top-level Comment.
comments[].replyCount number yes The number of live replies.
nextCursor string no Send this value as cursor to get the next page. It is absent on the last page.

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_found
  • invalid_cursor
  • organization_unentitled
  • forbidden
  • invalid_request
  • internal_error

Scope

The token must hold campaign_plan:read. 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.

  • Read-only. The tool changes nothing.
  • Closed world. The tool reads and writes the data of AdCrunch only.

Example

The arguments:

{
  "campaign_plan_name": "spring-sale",
  "limit": 20
}

The result, in structuredContent:

{
  "comments": [
    {
      "body": "Meta carries the reach. TikTok tests the younger audience first.",
      "clientId": null,
      "createdAt": 1768435200000,
      "createdBy": "usr_5d2b71",
      "deleted": false,
      "editedAt": null,
      "id": "cmt_8b3f10",
      "parentId": null,
      "replies": [
        {
          "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"
        }
      ],
      "replyCount": 1
    }
  ]
}

Was this page helpful?