Skip to main content

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.

How to read this page
  • 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 confirmed and confirmedDestructive to true.
  • Activity and Project labels vary by tenant. Where this page says Activity or Project, your tenant's own configured terminology is substituted at runtime.
Why isn't every tool in the default list?

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

ToolStatusWhat it does
create_pm_groupDefaultCreates a new group in Aprimo Marketing Operations.
create_pm_userDefaultCreates a new user in Aprimo Marketing Operations.
create_user_roleOn requestCreates a new user role in Aprimo Marketing Operations.
delete_pm_groupDefaultDestructive. Permanently deletes a group by id in Aprimo Marketing Operations.
delete_pm_userDefaultDestructive. Permanently deletes a user by id in Aprimo Marketing Operations.
delete_user_roleDefaultDestructive. Permanently deletes a user role by id in Aprimo Marketing Operations.
get_current_pm_userDefaultReturns the calling user's own profile in Aprimo Marketing Operations.
get_my_region_preferencesDefaultReturns 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_groupDefaultReturns a single group by id in Aprimo Marketing Operations.
get_pm_group_membershipOn requestLists the member users of a group by its integer ID in Aprimo Marketing Operations, paged.
get_pm_userDefaultReturns a single user by id in Aprimo Marketing Operations.
get_user_roleDefaultReturns a single user role by id in Aprimo Marketing Operations, including who last modified it.
list_domain_rightsDefaultLists domain rights configured in Aprimo Marketing Operations, paged.
list_pm_groupsDefaultLists groups in Aprimo Marketing Operations, paged and unfiltered.
list_user_rolesDefaultLists user roles in Aprimo Marketing Operations, paged.
reset_user_pinDefaultDestructive. Permanently resets a user's pin in Aprimo Marketing Operations, invalidating their existing authentication credential.
search_pm_groupsDefaultSearches groups in Aprimo Marketing Operations by name, paged.
search_pm_usersDefaultSearches users in Aprimo Marketing Operations by name, paged.
update_my_region_preferencesDefaultUpdates the calling user's region and language preferences in Aprimo Marketing Operations.
update_pm_groupDefaultUpdates an existing group by id in Aprimo Marketing Operations.
update_pm_userDefaultUpdates an existing user by id in Aprimo Marketing Operations.
update_user_roleDefaultUpdates 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:

ParameterTypeRequiredDescription
bodystringYesJSON object with the new group's data (PM wire names).
confirmedbooleanNoMust 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:

FieldTypeDescription
idstring (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.
namestring (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).
rawobject (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:

ParameterTypeRequiredDescription
bodystringYesJSON object with the new user's data (PM wire names).
confirmedbooleanNoMust 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:

FieldTypeDescription
idstring (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.
namestring (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.
rightsarray 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[].functionIdintegerSame numbering space as api's UserRightsEnum (e.g. ProgramView = 15).
rights[].functionNamestring (optional)
rights[].domainIdinteger
rawobject (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:

ParameterTypeRequiredDescription
bodystringYesJSON object with the new role's data (PM wire names).
confirmedbooleanNoMust 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:

FieldTypeDescription
roleIdinteger
namestring (optional)
descriptionstring (optional)
activeFlagboolean (optional)
colorstring (optional)
currencyCodeinteger (optional)
usedInAnnotationsboolean (optional)
modifiedUserIdinteger (optional)
modifiedUserNamestring (optional)
modifiedDatestring (optional)
laborRateEnterednumber (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.
laborRateBasenumber (optional)Gets or sets the LaborRateBase. Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely.
excludeFromChatboardsboolean (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:

ParameterTypeRequiredDescription
groupIdstringNoThe group's id to delete. Provide either groupId or name, not both.
namestringNoThe group's name. Provide either groupId or name, not both.
confirmedbooleanNoMust be true to proceed. Omit (or false) to get a confirmation gate error.
confirmedDestructivebooleanNoMust 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:

FieldTypeDescription
idstring (optional)
deletedboolean
Destructive operation

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:

ParameterTypeRequiredDescription
userIdstringYesThe user's id to delete.
confirmedbooleanNoMust be true to proceed. Omit (or false) to get a confirmation gate error.
confirmedDestructivebooleanNoMust 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:

FieldTypeDescription
idstring (optional)
deletedboolean
Destructive operation

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:

ParameterTypeRequiredDescription
roleIdstringNoThe role's id to delete. Provide either roleId or name, not both.
namestringNoThe role's name. Provide either roleId or name, not both.
confirmedbooleanNoMust be true to proceed. Omit (or false) to get a confirmation gate error.
confirmedDestructivebooleanNoMust 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:

FieldTypeDescription
idstring (optional)
deletedboolean
Destructive operation

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:

FieldTypeDescription
idstring (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.
namestring (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.
rightsarray 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[].functionIdintegerSame numbering space as api's UserRightsEnum (e.g. ProgramView = 15).
rights[].functionNamestring (optional)
rights[].domainIdinteger
rawobject (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:

FieldTypeDescription
localeIdinteger
languageIdinteger
dateFormatinteger
adamUiLanguagestring (optional)
timeFormatinteger
adamContentLanguagestring (optional)
numberFormatIdinteger
timezoneIdinteger (optional)
currencyCodeinteger
paperSizeinteger
autoSaveinteger (optional)
themeIdinteger (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:

ParameterTypeRequiredDescription
groupIdstringNoThe group's id. Provide either groupId or name, not both.
namestringNoThe group's name. Provide either groupId or name, not both.

Returns:

FieldTypeDescription
idstring (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.
namestring (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).
rawobject (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:

ParameterTypeRequiredDescription
groupIdstringYesThe group's integer ID.
limitintegerNoMaximum number of results to return (1–50, default 20).
offsetintegerNoNumber of results to skip for pagination (default 0).
sortFieldstringNoOptional field name to sort by. Omit for default ordering.
sortAscendingbooleanNoSort direction. true = ascending (default), false = descending.

Returns:

FieldTypeDescription
collectionNamestring (optional)Resource-name key the wire's _embedded used (e.g. "Activity", "Project"). Informational; may be null when the response isn't HAL-shaped.
totalRecordsintegerTotal record count across all pages — from the wire's _total.
countintegerNumber of items returned in this response (i.e. Items.Count; precomputed for the llm).
offsetintegerThe offset that was used to produce this page (echoes the caller's offset, clamped to ≥0).
hasMorebooleanTrue when there are more results past this page. Tools should prompt the llm to ask the user about fetching the next page.
nextOffsetinteger (optional)Offset to pass on the next request to continue. Null when is false.
itemsarray of GroupMembershipItemProjectionThe items returned in this response.
items[].userIdinteger
items[].userNamestring (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:

ParameterTypeRequiredDescription
userIdstringYesThe user's id.

Returns:

FieldTypeDescription
idstring (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.
namestring (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.
rightsarray 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[].functionIdintegerSame numbering space as api's UserRightsEnum (e.g. ProgramView = 15).
rights[].functionNamestring (optional)
rights[].domainIdinteger
rawobject (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:

ParameterTypeRequiredDescription
roleIdstringNoThe role's id. Provide either roleId or name, not both.
namestringNoThe role's name. Provide either roleId or name, not both.
excludeInactiveUserbooleanNoIf true, excludes inactive users from the role's membership count. Defaults to false.

Returns:

FieldTypeDescription
roleIdinteger
namestring (optional)
descriptionstring (optional)
activeFlagboolean (optional)
colorstring (optional)
currencyCodeinteger (optional)
usedInAnnotationsboolean (optional)
modifiedUserIdinteger (optional)
modifiedUserNamestring (optional)
modifiedDatestring (optional)
laborRateEnterednumber (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.
laborRateBasenumber (optional)Gets or sets the LaborRateBase. Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely.
excludeFromChatboardsboolean (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:

ParameterTypeRequiredDescription
limitintegerNoMaximum number of results to return (1–50, default 20).
offsetintegerNoNumber of results to skip for pagination (default 0).
sortFieldstringNoOptional field name to sort by. Omit for default ordering.
sortAscendingbooleanNoSort direction. true = ascending (default), false = descending.

Returns:

FieldTypeDescription
collectionNamestring (optional)Resource-name key the wire's _embedded used (e.g. "Activity", "Project"). Informational; may be null when the response isn't HAL-shaped.
totalRecordsintegerTotal record count across all pages — from the wire's _total.
countintegerNumber of items returned in this response (i.e. Items.Count; precomputed for the llm).
offsetintegerThe offset that was used to produce this page (echoes the caller's offset, clamped to ≥0).
hasMorebooleanTrue when there are more results past this page. Tools should prompt the llm to ask the user about fetching the next page.
nextOffsetinteger (optional)Offset to pass on the next request to continue. Null when is false.
itemsarray of RightProjectionThe items returned in this response.
items[].functionIDintegerThe 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[].namestring (optional)
items[].descriptionstring (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:

ParameterTypeRequiredDescription
limitintegerNoMaximum number of results to return (1–50, default 20).
offsetintegerNoNumber of results to skip for pagination (default 0).
sortFieldstringNoOptional field name to sort by. Omit for default ordering.
sortAscendingbooleanNoSort direction. true = ascending (default), false = descending.

Returns:

FieldTypeDescription
collectionNamestring (optional)Resource-name key the wire's _embedded used (e.g. "Activity", "Project"). Informational; may be null when the response isn't HAL-shaped.
totalRecordsintegerTotal record count across all pages — from the wire's _total.
countintegerNumber of items returned in this response (i.e. Items.Count; precomputed for the llm).
offsetintegerThe offset that was used to produce this page (echoes the caller's offset, clamped to ≥0).
hasMorebooleanTrue when there are more results past this page. Tools should prompt the llm to ask the user about fetching the next page.
nextOffsetinteger (optional)Offset to pass on the next request to continue. Null when is false.
itemsarray of GroupProjectionThe items returned in this response.
items[].idstring (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[].namestring (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[].rawobject (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:

ParameterTypeRequiredDescription
limitintegerNoMaximum number of results to return (1–50, default 20).
offsetintegerNoNumber of results to skip for pagination (default 0).
sortFieldstringNoOptional field name to sort by (default 'RoleId'). Omit for default ordering.
sortAscendingbooleanNoSort direction. true = ascending (default), false = descending.

Returns:

FieldTypeDescription
collectionNamestring (optional)Resource-name key the wire's _embedded used (e.g. "Activity", "Project"). Informational; may be null when the response isn't HAL-shaped.
totalRecordsintegerTotal record count across all pages — from the wire's _total.
countintegerNumber of items returned in this response (i.e. Items.Count; precomputed for the llm).
offsetintegerThe offset that was used to produce this page (echoes the caller's offset, clamped to ≥0).
hasMorebooleanTrue when there are more results past this page. Tools should prompt the llm to ask the user about fetching the next page.
nextOffsetinteger (optional)Offset to pass on the next request to continue. Null when is false.
itemsarray of UserRoleProjectionThe items returned in this response.
items[].roleIdinteger
items[].namestring (optional)
items[].descriptionstring (optional)
items[].activeFlagboolean (optional)
items[].colorstring (optional)
items[].currencyCodeinteger (optional)
items[].usedInAnnotationsboolean (optional)
items[].modifiedUserIdinteger (optional)
items[].modifiedUserNamestring (optional)
items[].modifiedDatestring (optional)
items[].laborRateEnterednumber (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[].laborRateBasenumber (optional)Gets or sets the LaborRateBase. Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely.
items[].excludeFromChatboardsboolean (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:

ParameterTypeRequiredDescription
userIdstringYesThe user's integer id whose pin to reset.
confirmedbooleanNoMust be true to proceed. Omit (or false) to get a confirmation gate error.
confirmedDestructivebooleanNoMust 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:

FieldTypeDescription
userIdinteger
successboolean
Destructive operation

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:

ParameterTypeRequiredDescription
nameFilterstringNoOptional case-insensitive substring filter on the group's name. Omit to match all groups.
limitintegerNoMaximum number of results to return (1–50, default 20).
offsetintegerNoNumber of results to skip for pagination (default 0).
sortFieldstringNoOptional field name to sort by. Omit for default ordering.
sortAscendingbooleanNoSort direction. true = ascending (default), false = descending.

Returns:

FieldTypeDescription
collectionNamestring (optional)Resource-name key the wire's _embedded used (e.g. "Activity", "Project"). Informational; may be null when the response isn't HAL-shaped.
totalRecordsintegerTotal record count across all pages — from the wire's _total.
countintegerNumber of items returned in this response (i.e. Items.Count; precomputed for the llm).
offsetintegerThe offset that was used to produce this page (echoes the caller's offset, clamped to ≥0).
hasMorebooleanTrue when there are more results past this page. Tools should prompt the llm to ask the user about fetching the next page.
nextOffsetinteger (optional)Offset to pass on the next request to continue. Null when is false.
itemsarray of GroupProjectionThe items returned in this response.
items[].idstring (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[].namestring (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[].rawobject (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:

ParameterTypeRequiredDescription
nameFilterstringNoRequired case-insensitive substring filter on the user's name -- PM has no match-all query for this endpoint, so this cannot be omitted.
limitintegerNoMaximum number of results to return (1–50, default 20).
offsetintegerNoNumber of results to skip for pagination (default 0).
sortFieldstringNoOptional field name to sort by. Omit for default ordering.
sortAscendingbooleanNoSort direction. true = ascending (default), false = descending.

Returns:

FieldTypeDescription
collectionNamestring (optional)Resource-name key the wire's _embedded used (e.g. "Activity", "Project"). Informational; may be null when the response isn't HAL-shaped.
totalRecordsintegerTotal record count across all pages — from the wire's _total.
countintegerNumber of items returned in this response (i.e. Items.Count; precomputed for the llm).
offsetintegerThe offset that was used to produce this page (echoes the caller's offset, clamped to ≥0).
hasMorebooleanTrue when there are more results past this page. Tools should prompt the llm to ask the user about fetching the next page.
nextOffsetinteger (optional)Offset to pass on the next request to continue. Null when is false.
itemsarray of UserProjectionThe items returned in this response.
items[].idstring (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[].namestring (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[].rightsarray 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[].functionIdintegerSame numbering space as api's UserRightsEnum (e.g. ProgramView = 15).
items[].rights[].functionNamestring (optional)
items[].rights[].domainIdinteger
items[].rawobject (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:

ParameterTypeRequiredDescription
bodystringYesJSON object with the fields to change (PM wire names, e.g. localeId/languageId/timezoneId/currencyCode). Omit fields you don't want to modify.
confirmedbooleanNoMust 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:

FieldTypeDescription
localeIdinteger
languageIdinteger
dateFormatinteger
adamUiLanguagestring (optional)
timeFormatinteger
adamContentLanguagestring (optional)
numberFormatIdinteger
timezoneIdinteger (optional)
currencyCodeinteger
paperSizeinteger
autoSaveinteger (optional)
themeIdinteger (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:

ParameterTypeRequiredDescription
groupIdstringNoThe group's id. Provide either groupId or name, not both.
namestringNoThe group's name. Provide either groupId or name, not both.
bodystringNoJSON object with the fields to change (PM wire names). Omit fields you don't want to modify.
confirmedbooleanNoMust 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:

FieldTypeDescription
idstring (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.
namestring (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).
rawobject (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:

ParameterTypeRequiredDescription
userIdstringYesThe user's id.
bodystringYesJSON object with the fields to change (PM wire names). Omit fields you don't want to modify.
confirmedbooleanNoMust 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:

FieldTypeDescription
idstring (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.
namestring (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.
rightsarray 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[].functionIdintegerSame numbering space as api's UserRightsEnum (e.g. ProgramView = 15).
rights[].functionNamestring (optional)
rights[].domainIdinteger
rawobject (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:

ParameterTypeRequiredDescription
roleIdstringNoThe role's integer ID. Provide either roleId or name, not both.
namestringNoThe role's name. Provide either roleId or name, not both.
bodystringNoJSON object with the fields to change (PM wire names). Omit fields you don't want to modify.
confirmedbooleanNoMust 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:

FieldTypeDescription
roleIdinteger
namestring (optional)
descriptionstring (optional)
activeFlagboolean (optional)
colorstring (optional)
currencyCodeinteger (optional)
usedInAnnotationsboolean (optional)
modifiedUserIdinteger (optional)
modifiedUserNamestring (optional)
modifiedDatestring (optional)
laborRateEnterednumber (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.
laborRateBasenumber (optional)Gets or sets the LaborRateBase. Confirmed against the now-real UserRole component schema -- added here, was previously missing entirely.
excludeFromChatboardsboolean (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.