Users, Groups & Roles
Tools for Productivity Management users, groups, and roles — reading and editing them, group membership, user rights, and regional preferences.
This page covers 22 tools, 20 of them in the default tool list, and 4 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 |
|---|---|---|
create_pm_group | Default | Creates a new group in Aprimo Marketing Operations. |
create_pm_user | Default | Creates a new user in Aprimo Marketing Operations. |
create_user_role | On request | Creates a new user role in Aprimo Marketing Operations. |
delete_pm_group | Default | Destructive. Permanently deletes a group by id in Aprimo Marketing Operations. |
delete_pm_user | Default | Destructive. Permanently deletes a user by id in Aprimo Marketing Operations. |
delete_user_role | Default | Destructive. Permanently deletes a user role by id in Aprimo Marketing Operations. |
get_current_pm_user | Default | Returns the calling user's own profile in Aprimo Marketing Operations. |
get_my_region_preferences | Default | Returns the calling user's region and language preferences (locale, language, date/time/number formats, timezone, currency, paper size, theme) in Aprimo Marketing Operations. |
get_pm_group | Default | Returns a single group by id in Aprimo Marketing Operations. |
get_pm_group_membership | On request | Lists the member users of a group by its integer ID in Aprimo Marketing Operations, paged. |
get_pm_user | Default | Returns a single user by id in Aprimo Marketing Operations. |
get_user_role | Default | Returns a single user role by id in Aprimo Marketing Operations, including who last modified it. |
list_domain_rights | Default | Lists domain rights configured in Aprimo Marketing Operations, paged. |
list_pm_groups | Default | Lists groups in Aprimo Marketing Operations, paged and unfiltered. |
list_user_roles | Default | Lists user roles in Aprimo Marketing Operations, paged. |
reset_user_pin | Default | Destructive. Permanently resets a user's pin in Aprimo Marketing Operations, invalidating their existing authentication credential. |
search_pm_groups | Default | Searches groups in Aprimo Marketing Operations by name, paged. |
search_pm_users | Default | Searches users in Aprimo Marketing Operations by name, paged. |
update_my_region_preferences | Default | Updates the calling user's region and language preferences in Aprimo Marketing Operations. |
update_pm_group | Default | Updates an existing group by id in Aprimo Marketing Operations. |
update_pm_user | Default | Updates an existing user by id in Aprimo Marketing Operations. |
update_user_role | Default | Updates an existing user role by its integer ID in Aprimo Marketing Operations. |
create_pm_group
In the default tool list
Creates a new group in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload. Returns the created group.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
body | string | Yes | JSON object with the new group'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 |
|---|---|---|
id | string (optional) | The group's id. String because Groups_GetById/Groups_UpdateItem/Groups_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed GroupProjection.groupId wire field is declared as an ambiguous int32-or-string, same as : kept as a dual-type-tolerant extraction (single confirmed key) rather than a blind strict deserialize. |
name | string (optional) | From the confirmed name wire field (the old guess happened to be right, but was hedging against a PascalCase variant that the hardened schema confirms never occurs). |
raw | object (optional) |
create_pm_user
In the default tool list
Creates a new user in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload. Returns the created user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
body | string | Yes | JSON object with the new user'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 |
|---|---|---|
id | string (optional) | The user's id. String because Users_GetById/Users_UpdateItem/Users_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed UserGroupProjection.userId wire field is declared as an ambiguous int32-or-string ("type": ["integer", "string"], ditto every other id/flag field in this hardened schema): kept as a dual-type-tolerant extraction (single confirmed key, not a casing guess) rather than a blind strict deserialize, since that ambiguity is genuine per the schema itself, not a guess. |
name | string (optional) | Composed from the confirmed firstName/lastName wire fields. UserGroupProjection has no name/userName field at all -- the old code's guess at those key names was wrong; corrected here now that the real field list is known. |
rights | array of UserRightProjection (optional) | /// The PM functional rights this user holds, resolved from the api repo's own UserGroupProjection.Rights (ICollection<UserGroupRightsProjection>) -- confirmed via the PM OpenAPI hardening pass (features/pm-openapi-hardening) that this field is genuinely returned by Users_GetById/Users_GetUser (get_pm_user/get_current_pm_user), just never previously surfaced. Each is the same numbering space as api's UserRightsEnum (e.g. ProgramView = 15) -- the primitive a PM tool-visibility permission check would probe. Null if the raw response predates this field or omits it. |
rights[].functionId | integer | Same numbering space as api's UserRightsEnum (e.g. ProgramView = 15). |
rights[].functionName | string (optional) | |
rights[].domainId | integer | |
raw | object (optional) | The complete wire object, verbatim -- see the class remarks. |
create_user_role
Available on request
Creates a new user role in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload. Returns the created role.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
body | string | Yes | JSON object with the new role'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 |
|---|---|---|
roleId | integer | |
name | string (optional) | |
description | string (optional) | |
activeFlag | boolean (optional) | |
color | string (optional) | |
currencyCode | integer (optional) | |
usedInAnnotations | boolean (optional) | |
modifiedUserId | integer (optional) | |
modifiedUserName | string (optional) | |
modifiedDate | string (optional) | |
laborRateEntered | number (optional) | Gets or sets the LaborRateEntered. Confirmed against the now-real UserRole component schema (wave-10 field list was incomplete) -- added here, was previously missing entirely. |
laborRateBase | number (optional) | Gets or sets the LaborRateBase. Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely. |
excludeFromChatboards | boolean (optional) | Flag indicating whether the role excludes its users from the chatboard, wired as a 0/1 int (same convention as /). Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely. |
delete_pm_group
In the default tool list · Destructive
Permanently deletes a group by id in Aprimo Marketing Operations. This cannot be undone. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact group with the user. Alternatively, identify the group by name instead of groupId.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
groupId | string | No | The group's id to delete. Provide either groupId or name, not both. |
name | string | No | The group's name. Provide either groupId or name, not both. |
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 group is permanent and cannot be undone. Set only after stating the exact group to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
id | string (optional) | |
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_pm_user
In the default tool list · Destructive
Permanently deletes a user by id in Aprimo Marketing Operations. This cannot be undone. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact user with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The user's 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 user is permanent and cannot be undone. Set only after stating the exact user to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
id | string (optional) | |
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_user_role
In the default tool list · Destructive
Permanently deletes a user role by id in Aprimo Marketing Operations. This cannot be undone. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact role with the user. Alternatively, identify the role by name instead of roleId. Note: resolving by name scans the full role list.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
roleId | string | No | The role's id to delete. Provide either roleId or name, not both. |
name | string | No | The role's name. Provide either roleId or name, not both. |
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 user 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 |
|---|---|---|
id | string (optional) | |
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_current_pm_user
In the default tool list
Returns the calling user's own profile in Aprimo Marketing Operations. Use when the user asks about "my account"/"my profile"/"who am I".
Response format: the response carries a pre-rendered markdown block intended to be displayed verbatim.
Parameters: none.
Returns:
| Field | Type | Description |
|---|---|---|
id | string (optional) | The user's id. String because Users_GetById/Users_UpdateItem/Users_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed UserGroupProjection.userId wire field is declared as an ambiguous int32-or-string ("type": ["integer", "string"], ditto every other id/flag field in this hardened schema): kept as a dual-type-tolerant extraction (single confirmed key, not a casing guess) rather than a blind strict deserialize, since that ambiguity is genuine per the schema itself, not a guess. |
name | string (optional) | Composed from the confirmed firstName/lastName wire fields. UserGroupProjection has no name/userName field at all -- the old code's guess at those key names was wrong; corrected here now that the real field list is known. |
rights | array of UserRightProjection (optional) | /// The PM functional rights this user holds, resolved from the api repo's own UserGroupProjection.Rights (ICollection<UserGroupRightsProjection>) -- confirmed via the PM OpenAPI hardening pass (features/pm-openapi-hardening) that this field is genuinely returned by Users_GetById/Users_GetUser (get_pm_user/get_current_pm_user), just never previously surfaced. Each is the same numbering space as api's UserRightsEnum (e.g. ProgramView = 15) -- the primitive a PM tool-visibility permission check would probe. Null if the raw response predates this field or omits it. |
rights[].functionId | integer | Same numbering space as api's UserRightsEnum (e.g. ProgramView = 15). |
rights[].functionName | string (optional) | |
rights[].domainId | integer | |
raw | object (optional) | The complete wire object, verbatim -- see the class remarks. |
get_my_region_preferences
In the default tool list
Returns the calling user's region and language preferences (locale, language, date/time/number formats, timezone, currency, paper size, theme) 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 |
|---|---|---|
localeId | integer | |
languageId | integer | |
dateFormat | integer | |
adamUiLanguage | string (optional) | |
timeFormat | integer | |
adamContentLanguage | string (optional) | |
numberFormatId | integer | |
timezoneId | integer (optional) | |
currencyCode | integer | |
paperSize | integer | |
autoSave | integer (optional) | |
themeId | integer (optional) |
get_pm_group
In the default tool list
Returns a single group by id in Aprimo Marketing Operations. Not a specific membership (use get_pm_group_membership for that).
Response format: the response carries a pre-rendered markdown block intended to be displayed verbatim.
Alternatively, identify the group by name instead of groupId.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
groupId | string | No | The group's id. Provide either groupId or name, not both. |
name | string | No | The group's name. Provide either groupId or name, not both. |
Returns:
| Field | Type | Description |
|---|---|---|
id | string (optional) | The group's id. String because Groups_GetById/Groups_UpdateItem/Groups_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed GroupProjection.groupId wire field is declared as an ambiguous int32-or-string, same as : kept as a dual-type-tolerant extraction (single confirmed key) rather than a blind strict deserialize. |
name | string (optional) | From the confirmed name wire field (the old guess happened to be right, but was hedging against a PascalCase variant that the hardened schema confirms never occurs). |
raw | object (optional) |
get_pm_group_membership
Available on request
Lists the member users of a group by its integer ID in Aprimo Marketing Operations, paged. Resolves each member's user name.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
groupId | string | Yes | The group'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 GroupMembershipItemProjection | The items returned in this response. |
items[].userId | integer | |
items[].userName | string (optional) |
get_pm_user
In the default tool list
Returns a single user by id in Aprimo Marketing Operations.
Response format: the response carries a pre-rendered markdown block intended to be displayed verbatim.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The user's id. |
Returns:
| Field | Type | Description |
|---|---|---|
id | string (optional) | The user's id. String because Users_GetById/Users_UpdateItem/Users_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed UserGroupProjection.userId wire field is declared as an ambiguous int32-or-string ("type": ["integer", "string"], ditto every other id/flag field in this hardened schema): kept as a dual-type-tolerant extraction (single confirmed key, not a casing guess) rather than a blind strict deserialize, since that ambiguity is genuine per the schema itself, not a guess. |
name | string (optional) | Composed from the confirmed firstName/lastName wire fields. UserGroupProjection has no name/userName field at all -- the old code's guess at those key names was wrong; corrected here now that the real field list is known. |
rights | array of UserRightProjection (optional) | /// The PM functional rights this user holds, resolved from the api repo's own UserGroupProjection.Rights (ICollection<UserGroupRightsProjection>) -- confirmed via the PM OpenAPI hardening pass (features/pm-openapi-hardening) that this field is genuinely returned by Users_GetById/Users_GetUser (get_pm_user/get_current_pm_user), just never previously surfaced. Each is the same numbering space as api's UserRightsEnum (e.g. ProgramView = 15) -- the primitive a PM tool-visibility permission check would probe. Null if the raw response predates this field or omits it. |
rights[].functionId | integer | Same numbering space as api's UserRightsEnum (e.g. ProgramView = 15). |
rights[].functionName | string (optional) | |
rights[].domainId | integer | |
raw | object (optional) | The complete wire object, verbatim -- see the class remarks. |
get_user_role
In the default tool list
Returns a single user role by id in Aprimo Marketing Operations, including who last modified it.
Response format: the response carries a pre-rendered markdown block intended to be displayed verbatim.
Alternatively, identify the role by name instead of roleId. Note: resolving by name scans the full role list.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
roleId | string | No | The role's id. Provide either roleId or name, not both. |
name | string | No | The role's name. Provide either roleId or name, not both. |
excludeInactiveUser | boolean | No | If true, excludes inactive users from the role's membership count. Defaults to false. |
Returns:
| Field | Type | Description |
|---|---|---|
roleId | integer | |
name | string (optional) | |
description | string (optional) | |
activeFlag | boolean (optional) | |
color | string (optional) | |
currencyCode | integer (optional) | |
usedInAnnotations | boolean (optional) | |
modifiedUserId | integer (optional) | |
modifiedUserName | string (optional) | |
modifiedDate | string (optional) | |
laborRateEntered | number (optional) | Gets or sets the LaborRateEntered. Confirmed against the now-real UserRole component schema (wave-10 field list was incomplete) -- added here, was previously missing entirely. |
laborRateBase | number (optional) | Gets or sets the LaborRateBase. Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely. |
excludeFromChatboards | boolean (optional) | Flag indicating whether the role excludes its users from the chatboard, wired as a 0/1 int (same convention as /). Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely. |
list_domain_rights
In the default tool list
Lists domain rights configured in Aprimo Marketing Operations, paged.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.
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 |
|---|---|---|
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 RightProjection | The items returned in this response. |
items[].functionID | integer | The function id -- same numbering space as api's UserRightsEnum/ (e.g. ProgramView = 15). Wire key is functionID (capitalized "ID", not the camelCase-policy-default functionId). |
items[].name | string (optional) | |
items[].description | string (optional) |
list_pm_groups
In the default tool list
Lists groups in Aprimo Marketing Operations, paged and unfiltered. Use search_pm_groups when you need to filter by name; use this to browse.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.
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 |
|---|---|---|
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 GroupProjection | The items returned in this response. |
items[].id | string (optional) | The group's id. String because Groups_GetById/Groups_UpdateItem/Groups_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed GroupProjection.groupId wire field is declared as an ambiguous int32-or-string, same as : kept as a dual-type-tolerant extraction (single confirmed key) rather than a blind strict deserialize. |
items[].name | string (optional) | From the confirmed name wire field (the old guess happened to be right, but was hedging against a PascalCase variant that the hardened schema confirms never occurs). |
items[].raw | object (optional) |
list_user_roles
In the default tool list
Lists user roles in Aprimo Marketing Operations, paged. Resolves who last modified each role.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.
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 (default 'RoleId'). 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 UserRoleProjection | The items returned in this response. |
items[].roleId | integer | |
items[].name | string (optional) | |
items[].description | string (optional) | |
items[].activeFlag | boolean (optional) | |
items[].color | string (optional) | |
items[].currencyCode | integer (optional) | |
items[].usedInAnnotations | boolean (optional) | |
items[].modifiedUserId | integer (optional) | |
items[].modifiedUserName | string (optional) | |
items[].modifiedDate | string (optional) | |
items[].laborRateEntered | number (optional) | Gets or sets the LaborRateEntered. Confirmed against the now-real UserRole component schema (wave-10 field list was incomplete) -- added here, was previously missing entirely. |
items[].laborRateBase | number (optional) | Gets or sets the LaborRateBase. Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely. |
items[].excludeFromChatboards | boolean (optional) | Flag indicating whether the role excludes its users from the chatboard, wired as a 0/1 int (same convention as /). Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely. |
reset_user_pin
In the default tool list · Destructive
Permanently resets a user's pin in Aprimo Marketing Operations, invalidating their existing authentication credential. This cannot be undone. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact user with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The user's integer id whose pin to reset. |
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) — resetting a user's pin invalidates their existing credential and cannot be undone. Set only after stating the exact user to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
userId | integer | |
success | 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_pm_groups
In the default tool list
Searches groups in Aprimo Marketing Operations by name, paged.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
nameFilter | string | No | Optional case-insensitive substring filter on the group's name. Omit to match all groups. |
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 GroupProjection | The items returned in this response. |
items[].id | string (optional) | The group's id. String because Groups_GetById/Groups_UpdateItem/Groups_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed GroupProjection.groupId wire field is declared as an ambiguous int32-or-string, same as : kept as a dual-type-tolerant extraction (single confirmed key) rather than a blind strict deserialize. |
items[].name | string (optional) | From the confirmed name wire field (the old guess happened to be right, but was hedging against a PascalCase variant that the hardened schema confirms never occurs). |
items[].raw | object (optional) |
search_pm_users
In the default tool list
Searches users in Aprimo Marketing Operations by name, paged. A nameFilter is required -- PM has no match-all query for this endpoint.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
nameFilter | string | No | Required case-insensitive substring filter on the user's name -- PM has no match-all query for this endpoint, so this cannot be omitted. |
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 UserProjection | The items returned in this response. |
items[].id | string (optional) | The user's id. String because Users_GetById/Users_UpdateItem/Users_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed UserGroupProjection.userId wire field is declared as an ambiguous int32-or-string ("type": ["integer", "string"], ditto every other id/flag field in this hardened schema): kept as a dual-type-tolerant extraction (single confirmed key, not a casing guess) rather than a blind strict deserialize, since that ambiguity is genuine per the schema itself, not a guess. |
items[].name | string (optional) | Composed from the confirmed firstName/lastName wire fields. UserGroupProjection has no name/userName field at all -- the old code's guess at those key names was wrong; corrected here now that the real field list is known. |
items[].rights | array of UserRightProjection (optional) | /// The PM functional rights this user holds, resolved from the api repo's own UserGroupProjection.Rights (ICollection<UserGroupRightsProjection>) -- confirmed via the PM OpenAPI hardening pass (features/pm-openapi-hardening) that this field is genuinely returned by Users_GetById/Users_GetUser (get_pm_user/get_current_pm_user), just never previously surfaced. Each is the same numbering space as api's UserRightsEnum (e.g. ProgramView = 15) -- the primitive a PM tool-visibility permission check would probe. Null if the raw response predates this field or omits it. |
items[].rights[].functionId | integer | Same numbering space as api's UserRightsEnum (e.g. ProgramView = 15). |
items[].rights[].functionName | string (optional) | |
items[].rights[].domainId | integer | |
items[].raw | object (optional) | The complete wire object, verbatim -- see the class remarks. |
update_my_region_preferences
In the default tool list
Updates the calling user's region and language preferences 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 preferences.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
body | string | Yes | JSON object with the fields to change (PM wire names, e.g. localeId/languageId/timezoneId/currencyCode). 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 |
|---|---|---|
localeId | integer | |
languageId | integer | |
dateFormat | integer | |
adamUiLanguage | string (optional) | |
timeFormat | integer | |
adamContentLanguage | string (optional) | |
numberFormatId | integer | |
timezoneId | integer (optional) | |
currencyCode | integer | |
paperSize | integer | |
autoSave | integer (optional) | |
themeId | integer (optional) |
update_pm_group
In the default tool list
Updates an existing group by 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 group. Alternatively, identify the group by name instead of groupId.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
groupId | string | No | The group's id. Provide either groupId or name, not both. |
name | string | No | The group's name. Provide either groupId or name, not both. |
body | string | No | 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 |
|---|---|---|
id | string (optional) | The group's id. String because Groups_GetById/Groups_UpdateItem/Groups_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed GroupProjection.groupId wire field is declared as an ambiguous int32-or-string, same as : kept as a dual-type-tolerant extraction (single confirmed key) rather than a blind strict deserialize. |
name | string (optional) | From the confirmed name wire field (the old guess happened to be right, but was hedging against a PascalCase variant that the hardened schema confirms never occurs). |
raw | object (optional) |
update_pm_user
In the default tool list
Updates an existing user by 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 user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The user's 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 |
|---|---|---|
id | string (optional) | The user's id. String because Users_GetById/Users_UpdateItem/Users_DeleteItem declare id as a bare string path parameter (no numeric route constraint) per the snapshot -- but the confirmed UserGroupProjection.userId wire field is declared as an ambiguous int32-or-string ("type": ["integer", "string"], ditto every other id/flag field in this hardened schema): kept as a dual-type-tolerant extraction (single confirmed key, not a casing guess) rather than a blind strict deserialize, since that ambiguity is genuine per the schema itself, not a guess. |
name | string (optional) | Composed from the confirmed firstName/lastName wire fields. UserGroupProjection has no name/userName field at all -- the old code's guess at those key names was wrong; corrected here now that the real field list is known. |
rights | array of UserRightProjection (optional) | /// The PM functional rights this user holds, resolved from the api repo's own UserGroupProjection.Rights (ICollection<UserGroupRightsProjection>) -- confirmed via the PM OpenAPI hardening pass (features/pm-openapi-hardening) that this field is genuinely returned by Users_GetById/Users_GetUser (get_pm_user/get_current_pm_user), just never previously surfaced. Each is the same numbering space as api's UserRightsEnum (e.g. ProgramView = 15) -- the primitive a PM tool-visibility permission check would probe. Null if the raw response predates this field or omits it. |
rights[].functionId | integer | Same numbering space as api's UserRightsEnum (e.g. ProgramView = 15). |
rights[].functionName | string (optional) | |
rights[].domainId | integer | |
raw | object (optional) | The complete wire object, verbatim -- see the class remarks. |
update_user_role
In the default tool list
Updates an existing user role 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 role. Alternatively, identify the role by name instead of roleId. Note: resolving by name scans the full role list.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
roleId | string | No | The role's integer ID. Provide either roleId or name, not both. |
name | string | No | The role's name. Provide either roleId or name, not both. |
body | string | No | 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 |
|---|---|---|
roleId | integer | |
name | string (optional) | |
description | string (optional) | |
activeFlag | boolean (optional) | |
color | string (optional) | |
currencyCode | integer (optional) | |
usedInAnnotations | boolean (optional) | |
modifiedUserId | integer (optional) | |
modifiedUserName | string (optional) | |
modifiedDate | string (optional) | |
laborRateEntered | number (optional) | Gets or sets the LaborRateEntered. Confirmed against the now-real UserRole component schema (wave-10 field list was incomplete) -- added here, was previously missing entirely. |
laborRateBase | number (optional) | Gets or sets the LaborRateBase. Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely. |
excludeFromChatboards | boolean (optional) | Flag indicating whether the role excludes its users from the chatboard, wired as a 0/1 int (same convention as /). Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely. |
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