campaign_plan_assignee_add
Make a member of your organization an Assignee of a Campaign Plan.
Ask to make a member accountable for a Campaign Plan. An Assignee is a person of your organization who answers for the plan.
“Add me as an Assignee of the spring sale plan.”
The agent calls campaign_plan_assignee_add with the slug of the Campaign Plan and one person. The person is me (you), a usr_… id or an email. To find the members, the agent calls organization_member_list.
- The person must be a current member. A person outside your organization and an unknown email get the same refusal. The refusal does not tell whether an email has an AdCrunch account.
- An Assignee grants no access. Each role that can edit the plan can still edit it.
- The call is idempotent. A second call with the same person changes nothing.
- A Campaign Plan has at most 10 Assignees.
- The plan does not change. Its revision stays, and an approved plan stays approved.
The row names the agent that added it, for example Claude, and you as its author. The Assignees show in the console on the page of the Campaign Plan.
Reference
Make a member of the organization an Assignee of a Campaign Plan: a person accountable for it. Send person as me (the person who connected you), a usr_… id or an email. organization_member_list gives the members. It is idempotent: a person who is an Assignee already stays as is. A record has at most 10 Assignees. An Assignee is a current member of the organization who is accountable for the record. An Assignee has no extra access: every role with the write scope can still edit the record. The change does not touch the revision or the status of the target. The row names your client as the agent that added it, and the person who connected you as its author. An approved plan stays approved. 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 |
|---|---|---|---|
person |
string, at least 1 character | yes | The member: me (the person who connected you), a usr_… id or an email. |
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 |
|---|---|---|---|
assignees |
array of object | yes | The current members who are accountable for the record, oldest first, at most 10. An Assignee grants no access. |
assignees[].id |
string | yes | The usr_… id of the member. |
assignees[].name |
string | yes | The name of the member. |
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_foundnot_a_memberassignee_limitorganization_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.
- Idempotent. A second call with the same arguments changes nothing more.
- Closed world. The tool reads and writes the data of AdCrunch only.
Example
The arguments:
{
"person": "ana@acme.test",
"campaign_plan_name": "spring-sale"
}
The result, in structuredContent:
{
"assignees": [
{
"id": "usr_4d8b12",
"name": "Ana Silva"
}
]
}