Activities
Tools for marketing activities in Aprimo Productivity Management — searching and reading activities, creating and updating them, and managing the roles assigned to them.
This page covers 17 tools, 16 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 |
|---|---|---|
add_activity_role_members | Default | Adds one or more user or user-token members to an activity role, merging with existing members and skipping duplicates, in Aprimo Marketing Operations. |
create_activity | Default | Creates a new Activity (marketing campaign) in Aprimo Marketing Operations. |
create_activity_milestone | On request | Creates a milestone under an Activity (marketing campaign), by the parent activity's integer ID, in Aprimo Marketing Operations. |
create_activity_role | Default | Creates a role on an activity from the supplied user role and members, in Aprimo Marketing Operations. |
delete_activity | Default | Destructive. Permanently deletes an Activity (marketing campaign) by its integer ID in Aprimo Marketing Operations. |
delete_activity_role | Default | Destructive. Permanently deletes a role from an activity in Aprimo Marketing Operations. |
get_activity | Default | Returns a single Activity (marketing campaign) by its integer ID from Aprimo Marketing Operations. |
get_activity_for_attachment | Default | Returns the Activities (marketing campaign) an attachment belongs to, by the attachment's integer ID, in Aprimo Marketing Operations. |
get_activity_role | Default | Returns a single activity role, including its resolved member users and user tokens, in Aprimo Marketing Operations. |
get_associated_activities | Default | Returns the Activities (marketing campaigns) associated with a DAM record, by the record's ID, in Aprimo Marketing Operations. |
list_activities | Default | Lists Activities (marketing campaigns) in Aprimo Marketing Operations, paged and unfiltered. |
list_activity_roles | Default | Lists the roles assigned to an activity, by the activity's integer ID, in Aprimo Marketing Operations. |
list_recent_activities | Default | Lists Activities (marketing campaigns) recently accessed by the current user, in Aprimo Marketing Operations. |
remove_activity_role_member | Default | Destructive. Permanently removes a single member from an activity role in Aprimo Marketing Operations. |
search_activities | Default | Searches Activities (marketing campaigns) in Aprimo Marketing Operations. |
update_activity | Default | Updates an existing Activity (marketing campaign) by its integer ID in Aprimo Marketing Operations. |
update_activity_role | Default | Replaces an activity role's user role and member set with the supplied values, in Aprimo Marketing Operations. |
add_activity_role_members
In the default tool list
Adds one or more user or user-token members to an activity role, merging with existing members and skipping duplicates, in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact members being added. Returns the updated role.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity's integer ID. |
roleId | string | Yes | The role's integer ID. |
body | string | Yes | JSON object with the members to add (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 |
|---|---|---|
id | string (optional) | |
roleName | string (optional) | |
raw | object (optional) | The complete wire object, verbatim -- including its member/user-token list under whatever field name PM actually uses -- for full fidelity beyond the defensively-extracted fields above. |
create_activity
In the default tool list
Creates a new Activity (marketing campaign) in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload (title, dates, type, owner, etc.). Returns the created Activity with resolved labels and a deep link.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
body | string | Yes | JSON object with the new activity's fields (PM wire names, e.g. {"name":"Q4 Launch","activityTypeId":7,"beginDate":"2026-01-15T00:00:00Z"}). Pass PM's wire field names; the server sends the object as-is. |
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 payload. |
Returns:
| Field | Type | Description |
|---|---|---|
activityId | integer | |
title | string (optional) | |
description | string (optional) | |
activityTypeId | integer (optional) | |
activityTypeLabel | string (optional) | |
activityStateId | integer (optional) | |
activityStateLabel | string (optional) | |
timeZoneId | integer (optional) | |
timeZoneLabel | string (optional) | |
beginDate | string (optional) | |
endDate | string (optional) | |
projectAnchorDate | string (optional) | |
ownerId | integer (optional) | |
ownerName | string (optional) | |
administratorId | integer (optional) | |
administratorName | string (optional) | |
creatorId | integer (optional) | The user who created the activity. New field surfaced now that PM's OpenAPI snapshot documents the Activity schema in full -- no existing resolver maps it to a name, so it stays a raw id. |
modifiedDate | string (optional) | The activity's last-modified timestamp, PM's raw ISO-8601 string reformatted for the tenant's locale (same treatment as ). |
proposalId | integer (optional) | The activity proposal this activity was created from, if any. |
deepLink | string (optional) |
create_activity_milestone
Available on request
Creates a milestone under an Activity (marketing campaign), by the parent activity's integer ID, in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload. Returns the created milestone (PM's ActivityDates schema -- a distinct resource from the parent activity).
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The parent activity's integer ID. |
body | string | Yes | JSON object with the milestone's fields (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 |
|---|---|---|
activityDateId | integer | |
activityId | integer | |
title | string (optional) | |
description | string (optional) | |
startDate | string (optional) | |
endDate | string (optional) | |
scheduleType | integer (optional) | |
timeZone | integer (optional) | |
milestoneEaId | integer (optional) | |
raw | object (optional) | The full raw wire object, always included -- some fields the documented schema declares as present (activityDateId/activityId/startDate) have been observed absent on a real, successful create, so this is never asserted as fact beyond what's extracted above. |
create_activity_role
In the default tool list
Creates a role on an activity from the supplied user role and members, in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload. Returns the created role.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity's integer ID. |
body | string | Yes | JSON object with the new role's data (PM wire names), including the user role and its members. |
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 |
|---|---|---|
id | string (optional) | |
roleName | string (optional) | |
raw | object (optional) | The complete wire object, verbatim -- including its member/user-token list under whatever field name PM actually uses -- for full fidelity beyond the defensively-extracted fields above. |
delete_activity
In the default tool list · Destructive
Permanently deletes an Activity (marketing campaign) by its integer ID in Aprimo Marketing Operations. This cannot be undone. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact Activity with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity'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 activity. |
confirmedDestructive | boolean | No | Must also be true (in addition to confirmed) — deleting an activity is permanent and cannot be undone. Set only after stating the exact activity to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
activityId | 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.
delete_activity_role
In the default tool list · Destructive
Permanently deletes a role from an activity in Aprimo Marketing Operations. This cannot be undone. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact role with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity's integer ID. |
roleId | string | Yes | The role's integer ID to delete. |
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) — deleting a role is permanent and cannot be undone. Set only after stating the exact role to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
activityId | integer | |
roleId | 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_activity
In the default tool list
Returns a single Activity (marketing campaign) by its integer ID from Aprimo Marketing Operations. If this tenant renamed the Activity object (e.g. 'Plan', 'Campaign', 'Initiative'), this is still the right tool. Use for Activities/campaigns — not Projects (use get_project for those). Returns only the base Activity record itself — not any Activity sub-resource (activity cells, offers, proposals, roles, treatments, forecasts, etc.), each of which has its own get_activity_* tool. Resolves type, status, timezone, and owner/administrator to human-readable labels/names and includes a clickable deep link.
Response format: the markdown block is pre-rendered with the tenant's own terminology, locale-formatted dates, and resolved labels, and is intended to be displayed verbatim, including every (id: N) suffix and the deep-link heading.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity's integer ID. |
Returns:
| Field | Type | Description |
|---|---|---|
activityId | integer | |
title | string (optional) | |
description | string (optional) | |
activityTypeId | integer (optional) | |
activityTypeLabel | string (optional) | |
activityStateId | integer (optional) | |
activityStateLabel | string (optional) | |
timeZoneId | integer (optional) | |
timeZoneLabel | string (optional) | |
beginDate | string (optional) | |
endDate | string (optional) | |
projectAnchorDate | string (optional) | |
ownerId | integer (optional) | |
ownerName | string (optional) | |
administratorId | integer (optional) | |
administratorName | string (optional) | |
creatorId | integer (optional) | The user who created the activity. New field surfaced now that PM's OpenAPI snapshot documents the Activity schema in full -- no existing resolver maps it to a name, so it stays a raw id. |
modifiedDate | string (optional) | The activity's last-modified timestamp, PM's raw ISO-8601 string reformatted for the tenant's locale (same treatment as ). |
proposalId | integer (optional) | The activity proposal this activity was created from, if any. |
deepLink | string (optional) |
get_activity_for_attachment
In the default tool list
Returns the Activities (marketing campaign) an attachment belongs to, by the attachment's integer ID, in Aprimo Marketing Operations.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
attachmentId | string | Yes | The attachment's integer ID. |
Returns:
| Field | Type | Description |
|---|---|---|
id | string (optional) | |
name | string (optional) | |
raw | object (optional) |
get_activity_role
In the default tool list
Returns a single activity role, including its resolved member users and user tokens, in Aprimo Marketing Operations.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity's integer ID. |
roleId | string | Yes | The role's integer ID. |
Returns:
| Field | Type | Description |
|---|---|---|
id | string (optional) | |
roleName | string (optional) | |
raw | object (optional) | The complete wire object, verbatim -- including its member/user-token list under whatever field name PM actually uses -- for full fidelity beyond the defensively-extracted fields above. |
get_associated_activities
In the default tool list
Returns the Activities (marketing campaigns) associated with a DAM record, by the record's ID, in Aprimo Marketing Operations. Any recognizable activity entries are returned as resolved items with deep links; the raw response is preserved for shapes the parser doesn't recognize.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
adamRecordId | string | Yes | The DAM record ID the activities are associated with. |
Returns:
| Field | Type | Description |
|---|---|---|
adamRecordId | string (optional) | |
count | integer | |
items | array of ActivityProjection | |
items[].activityId | integer | |
items[].title | string (optional) | |
items[].description | string (optional) | |
items[].activityTypeId | integer (optional) | |
items[].activityTypeLabel | string (optional) | |
items[].activityStateId | integer (optional) | |
items[].activityStateLabel | string (optional) | |
items[].timeZoneId | integer (optional) | |
items[].timeZoneLabel | string (optional) | |
items[].beginDate | string (optional) | |
items[].endDate | string (optional) | |
items[].projectAnchorDate | string (optional) | |
items[].ownerId | integer (optional) | |
items[].ownerName | string (optional) | |
items[].administratorId | integer (optional) | |
items[].administratorName | string (optional) | |
items[].creatorId | integer (optional) | The user who created the activity. New field surfaced now that PM's OpenAPI snapshot documents the Activity schema in full -- no existing resolver maps it to a name, so it stays a raw id. |
items[].modifiedDate | string (optional) | The activity's last-modified timestamp, PM's raw ISO-8601 string reformatted for the tenant's locale (same treatment as ). |
items[].proposalId | integer (optional) | The activity proposal this activity was created from, if any. |
items[].deepLink | string (optional) | |
raw | object (optional) |
list_activities
In the default tool list
Lists Activities (marketing campaigns) in Aprimo Marketing Operations, paged and unfiltered. Use search_activities when you need to filter by name, type, status, owner, or extended attributes; use this to browse all Activities. Returns totals and human-readable labels for type, status, timezone, and owner/administrator.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim, including (id: N) suffixes and deep-link headings.
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 (e.g. 'ModifiedDate', 'Name'). 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 ActivityProjection | The items returned in this response. |
items[].activityId | integer | |
items[].title | string (optional) | |
items[].description | string (optional) | |
items[].activityTypeId | integer (optional) | |
items[].activityTypeLabel | string (optional) | |
items[].activityStateId | integer (optional) | |
items[].activityStateLabel | string (optional) | |
items[].timeZoneId | integer (optional) | |
items[].timeZoneLabel | string (optional) | |
items[].beginDate | string (optional) | |
items[].endDate | string (optional) | |
items[].projectAnchorDate | string (optional) | |
items[].ownerId | integer (optional) | |
items[].ownerName | string (optional) | |
items[].administratorId | integer (optional) | |
items[].administratorName | string (optional) | |
items[].creatorId | integer (optional) | The user who created the activity. New field surfaced now that PM's OpenAPI snapshot documents the Activity schema in full -- no existing resolver maps it to a name, so it stays a raw id. |
items[].modifiedDate | string (optional) | The activity's last-modified timestamp, PM's raw ISO-8601 string reformatted for the tenant's locale (same treatment as ). |
items[].proposalId | integer (optional) | The activity proposal this activity was created from, if any. |
items[].deepLink | string (optional) |
list_activity_roles
In the default tool list
Lists the roles assigned to an activity, by the activity's integer ID, in Aprimo Marketing Operations. Each role's member users and user tokens are resolved.
Response format: the response carries a pre-rendered markdown block intended to be displayed verbatim.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity's integer ID. |
Returns:
| Field | Type | Description |
|---|---|---|
count | integer (optional) | |
raw | object (optional) |
list_recent_activities
In the default tool list
Lists Activities (marketing campaigns) recently accessed by the current user, in Aprimo Marketing Operations.
Response format: the response carries a pre-rendered markdown block intended to be displayed verbatim.
Parameters: none.
Returns:
| Field | Type | Description |
|---|---|---|
count | integer (optional) | |
raw | object (optional) |
remove_activity_role_member
In the default tool list · Destructive
Permanently removes a single member from an activity role in Aprimo Marketing Operations. This cannot be undone. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact member with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity's integer ID. |
roleId | string | Yes | The role's integer ID. |
memberId | string | Yes | The member's integer ID to remove. |
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 a member is permanent and cannot be undone. Set only after stating the exact member to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
activityId | integer | |
roleId | integer | |
memberId | integer | |
removed | 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.
search_activities
In the default tool list
Searches Activities (marketing campaigns) in Aprimo Marketing Operations. If this tenant has renamed the Activity object (e.g. to 'Plan', 'Campaign', 'Initiative'), users will mention it by this tenant's term — use this tool whenever the user means Activities, regardless of the word they say. Returns a paged list with totals and human-readable labels for Activity type, status, timezone, and owner/administrator names. Use this tool for Activities/campaigns — not for Projects (use search_projects for those).
Response format. Each item comes back as a markdown block pre-rendered server-side using the tenant's own terminology: labels reflect tenant configuration, dates are locale-formatted, lookup values are resolved to display strings, and the heading is a clickable deep link. The block is intended to be displayed verbatim rather than re-rendered from the structured payload, since the markdown already carries the tenant's vocabulary. If you do re-render it, preserve the tenant-localized labels, the (id: N) suffixes (which enable follow-up filters), the date formatting, and the deep-link heading.
Filtering. Prefer the name-keyed filter parameters (activityTypeLabel, activityStateLabel, ownerName, administratorName) over composing the query DSL. For extended attributes — tenant-configured custom fields beyond the standard set, such as 'Phase Gate' or 'Region' — use attributeFilters to match a specific value, and attributesPresent to match any value or no value. Extended attributes cannot be addressed through query, because the server does not expose their underlying field slugs; pass the display name as written.
Query DSL. query takes a structured operator tree using PascalCase FieldName/FieldValue. By partial name: query='{"contains":{"FieldName":"Name","FieldValue":"launch"}}'. By id: query='{"equals":{"FieldName":"ActivityId","FieldValue":13801}}'. To browse without a filter use list_activities instead — an empty query='{}' is rejected.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | JSON-encoded search body using PM's operator-tree DSL — not a flat {field: value} object. The body must have exactly one top-level operator. Operators (all lowercase, no separators): 'equals', 'contains', 'lessthan', 'lessthanorequalto', 'greaterthan', 'greaterthanorequalto', 'isnull', 'isnotnull', 'and', 'or', 'not'. Leaf operators take {FieldName, FieldValue} (pascal case) where FieldName is PM's wire field name ('ActivityId', 'Name', 'OwnerId', 'ActivityStateId', etc.) and FieldValue is a native JSON value matching the field's type (integer for IDs, ISO 8601 string for dates, string for text). Composite 'and'/'or' take an array of operations; 'not' takes a single operation object. PM rejects an empty '{}' (throws 'Couldn't find any operator') — it is not a match-all query; use list_activities to browse without a filter. For status/type/owner/administrator filtering, prefer the name-keyed parameters below instead — they're simpler. Use query for ID lookups, partial-name searches on Name, date range filters, or compound filters. Date field names (two date fields share confusing wire names — use exactly these): 'VisualEndDate' = the user-visible End Date (what users mean when they say 'end date'); 'EndDate' = the Project Anchor Date (what users mean when they say 'project anchor date', 'Project anchor date', or 'anchor date' — the word 'Project' in that label is this tenant's term for the project object). Examples: by id '{"equals":{"FieldName":"ActivityId","FieldValue":13801}}'; by name (partial) '{"contains":{"FieldName":"Name","FieldValue":"launch"}}'; by end date '{"lessthan":{"FieldName":"VisualEndDate","FieldValue":"2026-07-01"}}'; by anchor date '{"equals":{"FieldName":"EndDate","FieldValue":"2026-06-15"}}'; compound '{"and":[{"equals":{"FieldName":"OwnerId","FieldValue":998}},{"contains":{"FieldName":"Name","FieldValue":"Q4"}}]}'. |
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 (e.g. 'ModifiedDate', 'Name'). Omit for default ordering. |
sortAscending | boolean | No | Sort direction. true = ascending (default), false = descending. |
activityTypeLabel | string | No | Filter to activities with this activity type (label, case-insensitive, e.g. 'Initiative'). Resolved against the PM ActivityType lookup list. Returns an error if the label doesn't match any known activity type. Combined with query and other filters via and. |
activityStateLabel | string | No | Filter to activities in this state (label, case-insensitive, e.g. 'Active'). Resolved against the PM ActivityTypeStatus lookup list. Returns an error if the label doesn't match any known state. Combined with query and other filters via and. |
ownerName | string | No | Filter to activities owned by users whose first or last name matches this string (case-insensitive substring). Examples: 'Alice', 'Adams', 'alice ad'. If multiple users match, all are included (or). If no users match, returns an empty result set with a message — not an error. |
administratorName | string | No | Filter to activities whose administrator's first or last name matches this string (case-insensitive substring). Same matching semantics as ownerName. |
attributeFilters | object (map of string) | No | Filter by extended attributes with a specific value. Tenant-configured custom fields beyond the standard set. Pass a dictionary keyed by the attribute's display name exactly as the user/admin sees it (e.g. 'Phase Gate', 'Act Multi Select', 'Region'), with the desired value as a string. For lookup-type EAs (picklists), pass the option's display label — the server translates to the underlying itemId. For text/number/date EAs, pass the value as a string — the server passes it through. Returns BadRequest with the valid attribute set if a key doesn't match any EA. Returns BadRequest with the valid value set if a value doesn't match any option for a lookup EA. Combined with query and other filters via and. |
attributesPresent | object (map of boolean) | No | Filter by extended attribute presence — for natural-language patterns like 'activities with any value for Act Multi Select' or 'activities missing a Phase Gate tag'. Pass a dictionary keyed by the attribute's display name, with a boolean value: True = the EA has any value (PM operator isnotnull); False = the EA has no value (isnull). Use this when the user does not specify a particular value to match. Returns BadRequest if a key doesn't match any EA. Combined with other filters via and. |
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 ActivityProjection | The items returned in this response. |
items[].activityId | integer | |
items[].title | string (optional) | |
items[].description | string (optional) | |
items[].activityTypeId | integer (optional) | |
items[].activityTypeLabel | string (optional) | |
items[].activityStateId | integer (optional) | |
items[].activityStateLabel | string (optional) | |
items[].timeZoneId | integer (optional) | |
items[].timeZoneLabel | string (optional) | |
items[].beginDate | string (optional) | |
items[].endDate | string (optional) | |
items[].projectAnchorDate | string (optional) | |
items[].ownerId | integer (optional) | |
items[].ownerName | string (optional) | |
items[].administratorId | integer (optional) | |
items[].administratorName | string (optional) | |
items[].creatorId | integer (optional) | The user who created the activity. New field surfaced now that PM's OpenAPI snapshot documents the Activity schema in full -- no existing resolver maps it to a name, so it stays a raw id. |
items[].modifiedDate | string (optional) | The activity's last-modified timestamp, PM's raw ISO-8601 string reformatted for the tenant's locale (same treatment as ). |
items[].proposalId | integer (optional) | The activity proposal this activity was created from, if any. |
items[].deepLink | string (optional) |
update_activity
In the default tool list
Updates an existing Activity (marketing campaign) 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 Activity.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity'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 |
|---|---|---|
activityId | integer | |
title | string (optional) | |
description | string (optional) | |
activityTypeId | integer (optional) | |
activityTypeLabel | string (optional) | |
activityStateId | integer (optional) | |
activityStateLabel | string (optional) | |
timeZoneId | integer (optional) | |
timeZoneLabel | string (optional) | |
beginDate | string (optional) | |
endDate | string (optional) | |
projectAnchorDate | string (optional) | |
ownerId | integer (optional) | |
ownerName | string (optional) | |
administratorId | integer (optional) | |
administratorName | string (optional) | |
creatorId | integer (optional) | The user who created the activity. New field surfaced now that PM's OpenAPI snapshot documents the Activity schema in full -- no existing resolver maps it to a name, so it stays a raw id. |
modifiedDate | string (optional) | The activity's last-modified timestamp, PM's raw ISO-8601 string reformatted for the tenant's locale (same treatment as ). |
proposalId | integer (optional) | The activity proposal this activity was created from, if any. |
deepLink | string (optional) |
update_activity_role
In the default tool list
Replaces an activity role's user role and member set with the supplied values, in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact changes. Returns the updated role.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId | string | Yes | The activity's integer ID. |
roleId | string | Yes | The role's integer ID to update. |
body | string | Yes | JSON object with the full replacement role data (PM wire names), including the user role and its members. |
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 |
|---|---|---|
id | string (optional) | |
roleName | string (optional) | |
raw | object (optional) | The complete wire object, verbatim -- including its member/user-token list under whatever field name PM actually uses -- for full fidelity beyond the defensively-extracted fields above. |
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