Content Plans
Tools for content plans — reading plan structure and activity progress, associating activities with a plan, and notifying activity owners.
This page covers 13 tools, 5 of them in the default tool list, and 3 destructive.
- Status — In the default tool list means the tool is one of the ~200 Aprimo advertises to every agent out of the box, so the agent discovers and calls it on its own. Available on request means the tool is registered and fully callable, but sits outside that default list — call it by name, or ask Aprimo to extend the list your tenant is served.
- Both statuses work identically when called. Status affects discovery, not capability or authorization.
- Visibility is not authorization. Every tool call executes as the authenticated user, and any tool can return an authorization error if that user lacks rights to the record, task, or file. See the MCP Tool Permission Map.
- Destructive tools are labelled as such. They delete or irreversibly overwrite data, and will not act unless the call sets both
confirmedandconfirmedDestructivetotrue. - Activity and Project labels vary by tenant. Where this page says Activity or Project, your tenant's own configured terminology is substituted at runtime.
Aprimo's MCP Server exposes far more tools than most MCP clients handle well — many degrade or truncate their tool list well below the full catalogue. Rather than let a client truncate arbitrarily, Aprimo advertises a curated set of roughly 200 tools covering the tasks customers most commonly automate. Everything outside that set remains fully supported and callable by name; it simply isn't offered up front. If your integration leans on a tool that is available on request, talk to your Aprimo Customer Success Manager about extending the advertised list for your tenant.
Tools at a Glance
| Tool | Status | What it does |
|---|---|---|
associate_content_plan_activities | Default | Associates the specified activities with a content plan, by the plan's integer ID, in Aprimo Marketing Operations. |
create_content_plan_collection | On request | Creates and links a new DAM collection for a content plan, by the plan's integer ID, in Aprimo Marketing Operations. |
delete_content_plan | On request | Destructive. Permanently deletes a content plan by its integer ID in Aprimo Marketing Operations. |
get_content_plan | On request | Returns a single content plan by its integer ID in Aprimo Marketing Operations. |
get_content_plan_activity_progress | Default | Returns the activity progress for a content plan, by its integer ID, in Aprimo Marketing Operations. |
get_content_plan_manage_activities | Default | Lists the activities available to manage/associate for a content plan, by its integer ID, in Aprimo Marketing Operations, paged. |
list_content_plans | On request | Lists content plans in Aprimo Marketing Operations, paged and unfiltered. |
notify_content_plan_activity_owners | Default | Notifies the owners of the specified activities on a content plan, by the plan's integer ID, in Aprimo Marketing Operations. |
remove_content_plan_activity | Default | Destructive. Removes the association between a content plan and the specified activities, by the plan's integer ID, in Aprimo Marketing Operations. |
share_content_plan | On request | Shares a content plan with the specified users/groups, by the plan's integer ID, in Aprimo Marketing Operations. |
unlink_content_plan_collection | On request | Destructive. Unlinks a DAM collection from a content plan, by the plan's integer ID and the collection's GUID, in Aprimo Marketing Operations. |
update_content_plan | On request | Updates an existing content plan by its integer ID in Aprimo Marketing Operations. |
update_content_plan_collection | On request | Updates the DAM collection linked to a content plan, by the plan's integer ID, in Aprimo Marketing Operations. |
associate_content_plan_activities
In the default tool list
Associates the specified activities with a content plan, by the plan's integer ID, in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact activity list. Returns the activity ids associated.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
activityIds | string | Yes | JSON array of the activities' integer IDs to associate, e.g. "[13801,13802]". |
confirmed | boolean | No | Must be true to proceed. Omit (or false) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly approved the exact activity list. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
action | string (optional) | "associate", "remove", or "notify-owners". |
activityIds | array of integer |
create_content_plan_collection
Available on request
Creates and links a new DAM collection for a content plan, by the plan's integer ID, in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload. Returns the created and linked collection.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
body | string | Yes | JSON object with the new DAM collection's data (PM wire names). |
confirmed | boolean | No | Must be true to proceed. Omit (or false) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly approved the payload. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
collectionId | string (optional) | |
collectionType | integer (optional) |
delete_content_plan
Available on request · Destructive
Permanently deletes a content plan by its integer ID in Aprimo Marketing Operations. This cannot be undone. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact content plan with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID to delete. |
confirmed | boolean | No | Must be true to proceed. Omit (or false) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly confirmed the exact content plan. |
confirmedDestructive | boolean | No | Must also be true (in addition to confirmed) — deleting a content plan is permanent and cannot be undone. Set only after stating the exact content plan to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
deleted | boolean |
This tool deletes or irreversibly overwrites data in the live tenant; the change cannot be rolled back through the API. It will not act unless the call sets both confirmed and confirmedDestructive to true.
get_content_plan
Available on request
Returns a single content plan by its integer ID in Aprimo Marketing Operations. Not its activity progress (use get_content_plan_activity_progress) or its manage-activities view (use get_content_plan_manage_activities). Resolves status/type labels and administrator/modified-by names.
Response format: the response carries a pre-rendered markdown block intended to be displayed verbatim.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
scsId | integer (optional) | PM's internal scs id for this content plan. New field surfaced now that PM's snapshot documents the full ContentPlan schema. |
title | string (optional) | |
description | string (optional) | |
statusId | integer (optional) | [StaticLookupList] field resolved via PmFieldLabelCache (inlined on /metadata/ContentPlan), same mechanism as . |
statusLabel | string (optional) | |
typeId | integer (optional) | [StaticLookupList] field, same resolution mechanism as . |
typeLabel | string (optional) | |
beginDate | string (optional) | |
endDate | string (optional) | |
administratorId | integer (optional) | |
administratorName | string (optional) | |
modifiedUserId | integer (optional) | |
modifiedUserName | string (optional) | |
modifiedDate | string (optional) | |
backgroundTheme | string (optional) | |
canRead | boolean (optional) | |
canModify | boolean (optional) | |
canCreateActivity | boolean (optional) | |
canModifyActivity | boolean (optional) | |
collections | array of ContentPlanCollection (optional) | DAM collections linked to this content plan. Null when the wire object carried none. |
collections[].planId | integer (optional) | |
collections[].collectionId | string (optional) | The linked DAM collection's GUID id. |
collections[].collectionType | integer (optional) |
get_content_plan_activity_progress
In the default tool list
Returns the activity progress for a content plan, by its integer ID, in Aprimo Marketing Operations. Recognized activity-id-keyed entries are resolved with their names and deep links; the raw response is preserved for shapes the parser doesn't recognize.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
count | integer | |
items | array of ContentPlanActivityProgressEntry | |
items[].activityId | integer | |
items[].activityName | string (optional) | |
items[].activityDeepLink | string (optional) | |
items[].progress | object (optional) | The per-activity progress payload, verbatim (shape not stabilized upstream). |
raw | object (optional) | Preserved untouched when the body couldn't be recognized as an activity-id-keyed object. |
get_content_plan_manage_activities
In the default tool list
Lists the activities available to manage/associate for a content plan, by its integer ID, in Aprimo Marketing Operations, paged. Resolves activity type/state labels and owner names.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim, including (id: N) suffixes.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
limit | integer | No | Maximum number of results to return (1–50, default 20). |
offset | integer | No | Number of results to skip for pagination (default 0). |
sortField | string | No | Optional field name to sort by. Omit for default ordering. |
sortAscending | boolean | No | Sort direction. true = ascending (default), false = descending. |
Returns:
| Field | Type | Description |
|---|---|---|
collectionName | string (optional) | Resource-name key the wire's _embedded used (e.g. "Activity", "Project"). Informational; may be null when the response isn't HAL-shaped. |
totalRecords | integer | Total record count across all pages — from the wire's _total. |
count | integer | Number of items returned in this response (i.e. Items.Count; precomputed for the llm). |
offset | integer | The offset that was used to produce this page (echoes the caller's offset, clamped to ≥0). |
hasMore | boolean | True when there are more results past this page. Tools should prompt the llm to ask the user about fetching the next page. |
nextOffset | integer (optional) | Offset to pass on the next request to continue. Null when is false. |
items | array of ContentPlanManageActivityItem | The items returned in this response. |
items[].scsId | integer (optional) | |
items[].name | string (optional) | |
items[].beginDate | string (optional) | No corresponding field in PM's manage-activities item schema -- always null (see the class remarks). |
items[].endDate | string (optional) | |
items[].ownerId | integer (optional) | |
items[].ownerName | string (optional) | |
items[].administratorId | integer (optional) | |
items[].administratorName | string (optional) | |
items[].activityTypeId | integer (optional) | |
items[].activityTypeLabel | string (optional) | |
items[].activityStateId | integer (optional) | No corresponding field in PM's manage-activities item schema -- always null (see the class remarks). |
items[].activityStateLabel | string (optional) |
list_content_plans
Available on request
Lists content plans in Aprimo Marketing Operations, paged and unfiltered. Returns status/type labels and administrator/modified-by names. Note: PM does not report a total record count for this endpoint -- re-call with an increased offset while a full page keeps coming back.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim, including (id: N) suffixes.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Maximum number of results to return (1–50, default 20). |
offset | integer | No | Number of results to skip for pagination (default 0). |
sortField | string | No | Optional field name to sort by. Omit for default ordering. |
sortAscending | boolean | No | Sort direction. true = ascending (default), false = descending. |
Returns:
| Field | Type | Description |
|---|---|---|
count | integer | |
offset | integer | |
items | array of ContentPlanProjection | |
items[].planId | integer | |
items[].scsId | integer (optional) | PM's internal scs id for this content plan. New field surfaced now that PM's snapshot documents the full ContentPlan schema. |
items[].title | string (optional) | |
items[].description | string (optional) | |
items[].statusId | integer (optional) | [StaticLookupList] field resolved via PmFieldLabelCache (inlined on /metadata/ContentPlan), same mechanism as . |
items[].statusLabel | string (optional) | |
items[].typeId | integer (optional) | [StaticLookupList] field, same resolution mechanism as . |
items[].typeLabel | string (optional) | |
items[].beginDate | string (optional) | |
items[].endDate | string (optional) | |
items[].administratorId | integer (optional) | |
items[].administratorName | string (optional) | |
items[].modifiedUserId | integer (optional) | |
items[].modifiedUserName | string (optional) | |
items[].modifiedDate | string (optional) | |
items[].backgroundTheme | string (optional) | |
items[].canRead | boolean (optional) | |
items[].canModify | boolean (optional) | |
items[].canCreateActivity | boolean (optional) | |
items[].canModifyActivity | boolean (optional) | |
items[].collections | array of ContentPlanCollection (optional) | DAM collections linked to this content plan. Null when the wire object carried none. |
items[].collections[].planId | integer (optional) | |
items[].collections[].collectionId | string (optional) | The linked DAM collection's GUID id. |
items[].collections[].collectionType | integer (optional) |
notify_content_plan_activity_owners
In the default tool list
Notifies the owners of the specified activities on a content plan, by the plan's integer ID, in Aprimo Marketing Operations. Sends notification emails -- not a data mutation, but still an external side effect. Requires confirmed=true after showing the user the exact activity list. Returns the activity ids notified.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
activityIds | string | Yes | JSON array of the activities' integer IDs whose owners should be notified, e.g. "[13801,13802]". |
confirmed | boolean | No | Must be true to proceed. Omit (or false) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly approved sending these notifications. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
action | string (optional) | "associate", "remove", or "notify-owners". |
activityIds | array of integer |
remove_content_plan_activity
In the default tool list · Destructive
Removes the association between a content plan and the specified activities, by the plan's integer ID, in Aprimo Marketing Operations. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact activity list with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
activityIds | string | Yes | JSON array of the activities' integer IDs to disassociate, e.g. "[13801,13802]". |
confirmed | boolean | No | Must be true to proceed. Omit (or false) to get a confirmation gate error. |
confirmedDestructive | boolean | No | Must also be true (in addition to confirmed) — removing the association is not easily undone. Set only after stating the exact activity list to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
action | string (optional) | "associate", "remove", or "notify-owners". |
activityIds | array of integer |
This tool deletes or irreversibly overwrites data in the live tenant; the change cannot be rolled back through the API. It will not act unless the call sets both confirmed and confirmedDestructive to true.
share_content_plan
Available on request
Shares a content plan with the specified users/groups, by the plan's integer ID, in Aprimo Marketing Operations. Replaces the plan's entire access list with exactly the entries provided -- it does not merge/add to the existing list. Confirmed live: any existing grantee omitted from entries Loses access. Fetch the plan's current access list first (get_content_plan) and include every entry you want to keep, plus any new ones. Requires confirmed=true after showing the user the exact grant list. Returns the resulting access-list entries.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
entries | string | Yes | JSON array of access-list entries to grant -- replaces the entire existing access list. Each entry requires "objectId" (must equal contentPlanId), "userId", and "hasEditRight" (0 or 1) -- "objectId" is easy to omit but PM rejects the whole call without it. e.g. "[{"objectId":1042,"userId":7,"hasEditRight":1}]". |
confirmed | boolean | No | Must be true to proceed. Omit (or false) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly approved the exact grant list. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
count | integer | |
items | array of ContentPlanAccessEntry | |
items[].objectId | integer (optional) | |
items[].userId | integer (optional) | |
items[].userName | string (optional) | |
items[].hasEditRight | boolean (optional) |
unlink_content_plan_collection
Available on request · Destructive
Unlinks a DAM collection from a content plan, by the plan's integer ID and the collection's GUID, in Aprimo Marketing Operations. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact content plan and collection with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
collectionGuid | string | Yes | The linked DAM collection's GUID. |
confirmed | boolean | No | Must be true to proceed. Omit (or false) to get a confirmation gate error. |
confirmedDestructive | boolean | No | Must also be true (in addition to confirmed) — unlinking removes the collection's association with this content plan. Set only after stating the exact content plan and collection to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
collectionGuid | string (optional) | |
unlinked | boolean |
This tool deletes or irreversibly overwrites data in the live tenant; the change cannot be rolled back through the API. It will not act unless the call sets both confirmed and confirmedDestructive to true.
update_content_plan
Available on request
Updates an existing content plan by its integer ID in Aprimo Marketing Operations. Only include the fields you intend to change (partial update; omitted fields are left as-is). Requires confirmed=true after showing the user the exact changes. Returns the updated content plan.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
body | string | Yes | JSON object with the fields to change (PM wire names). Omit fields you don't want to modify. |
confirmed | boolean | No | Must be true to proceed. Omit (or false) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly approved the change. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
scsId | integer (optional) | PM's internal scs id for this content plan. New field surfaced now that PM's snapshot documents the full ContentPlan schema. |
title | string (optional) | |
description | string (optional) | |
statusId | integer (optional) | [StaticLookupList] field resolved via PmFieldLabelCache (inlined on /metadata/ContentPlan), same mechanism as . |
statusLabel | string (optional) | |
typeId | integer (optional) | [StaticLookupList] field, same resolution mechanism as . |
typeLabel | string (optional) | |
beginDate | string (optional) | |
endDate | string (optional) | |
administratorId | integer (optional) | |
administratorName | string (optional) | |
modifiedUserId | integer (optional) | |
modifiedUserName | string (optional) | |
modifiedDate | string (optional) | |
backgroundTheme | string (optional) | |
canRead | boolean (optional) | |
canModify | boolean (optional) | |
canCreateActivity | boolean (optional) | |
canModifyActivity | boolean (optional) | |
collections | array of ContentPlanCollection (optional) | DAM collections linked to this content plan. Null when the wire object carried none. |
collections[].planId | integer (optional) | |
collections[].collectionId | string (optional) | The linked DAM collection's GUID id. |
collections[].collectionType | integer (optional) |
update_content_plan_collection
Available on request
Updates the DAM collection linked to a content plan, by the plan's integer ID, in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload. Returns the linked collection.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
contentPlanId | string | Yes | The content plan's integer ID. |
body | string | Yes | JSON object with the DAM collection mapping data (PM wire names). |
confirmed | boolean | No | Must be true to proceed. Omit (or false) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly approved the change. |
Returns:
| Field | Type | Description |
|---|---|---|
planId | integer | |
collectionId | string (optional) | |
collectionType | integer (optional) |
Related
- Aprimo MCP Server — configuration, connection details, and authentication
- MCP Tool Permission Map — the Aprimo permissions that make each tool visible to your agent
- REST API vs. MCP — choosing the right integration approach for your agent