Skip to main content

Projects

Tools for projects in Aprimo Productivity Management — searching and reading projects, creating and updating them, and managing project role membership.

This page covers 17 tools, 16 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
cancel_projectDefaultDestructive. Cancels a Project in Aprimo Marketing Operations.
close_projectDefaultDestructive. Closes a Project in Aprimo Marketing Operations.
create_projectDefaultCreates a new Project in Aprimo Marketing Operations.
get_projectDefaultReturns a single Project by its integer ID from Aprimo Marketing Operations.
get_project_dam_collectionOn requestReturns the DAM collections linked to a Project, by the project's integer ID, in Aprimo Marketing Operations.
get_project_role_membersDefaultReturns the members of a project role, by project ID and project-role ID, in Aprimo Marketing Operations.
get_project_role_membershipsDefaultReturns all role memberships for a project, by the project's integer ID, in Aprimo Marketing Operations.
get_projects_for_activityDefaultLists the Projects that belong to an Activity (marketing campaign), by the activity's integer ID, in Aprimo Marketing Operations.
list_projectsDefaultLists Projects in Aprimo Marketing Operations, paged.
list_projects_displayDefaultReturns a paged, sortable display list of Projects for list/grid presentation in Aprimo Marketing Operations, optionally filtered by project statuses, title, and activity ID.
list_projects_for_attachmentDefaultLists the Projects that an attachment (by integer ID) is associated with, in Aprimo Marketing Operations, paged and sortable.
pause_projectDefaultDestructive. Pauses a Project in Aprimo Marketing Operations.
save_project_rolesDefaultAdds a role to a project, by the project's integer ID, in Aprimo Marketing Operations.
search_projectsDefaultSearches Projects in Aprimo Marketing Operations.
start_projectDefaultDestructive. Transitions a Project to started in Aprimo Marketing Operations.
update_projectDefaultUpdates an existing Project by its integer ID in Aprimo Marketing Operations.
update_project_role_membershipsDefaultReplaces the role memberships for a project, by the project's integer ID, in Aprimo Marketing Operations.

cancel_project

In the default tool list · Destructive

Cancels a Project in Aprimo Marketing Operations. This is a state change that terminates the project's workflow. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact Project with the user.

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID to cancel.
confirmedbooleanNoMust be true to proceed. Omit (or false) to get a confirmation gate error.
confirmedDestructivebooleanNoMust also be true (in addition to confirmed) — cancelling a project changes its state. Set only after stating the exact project to the user and getting explicit go-ahead.

Returns:

FieldTypeDescription
projectIdinteger
actionstring (optional)The state-change action performed: "start", "cancel", "pause", or "close".
succeededboolean
deepLinkstring (optional)UI deep link to the affected project.
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.


close_project

In the default tool list · Destructive

Closes a Project in Aprimo Marketing Operations. This is a state change that completes the project's workflow. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact Project with the user.

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID to close.
confirmedbooleanNoMust be true to proceed. Omit (or false) to get a confirmation gate error.
confirmedDestructivebooleanNoMust also be true (in addition to confirmed) — closing a project changes its state. Set only after stating the exact project to the user and getting explicit go-ahead.

Returns:

FieldTypeDescription
projectIdinteger
actionstring (optional)The state-change action performed: "start", "cancel", "pause", or "close".
succeededboolean
deepLinkstring (optional)UI deep link to the affected project.
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.


create_project

In the default tool list

Creates a new Project in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload (title, dates, linked activity, project manager, etc.). Returns the created Project with resolved labels and deep links.

Parameters:

ParameterTypeRequiredDescription
bodystringYesJSON object with the new project's fields (PM wire names, e.g. {"title":"Hero Image Production","activityId":13801,"projectManager":1042}). Pass PM's wire field names; the server sends the object as-is.
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 exact payload.

Returns:

FieldTypeDescription
projectIdinteger
titlestring (optional)
projectStatusIdinteger (optional)
projectStatusLabelstring (optional)
descriptionstring (optional)
beginDatestring (optional)
endDatestring (optional)
projectManagerIdinteger (optional)
projectManagerNamestring (optional)
activityIdinteger
activityNamestring (optional)
activityDeepLinkstring (optional)
deepLinkstring (optional)
workflowIdinteger (optional)PM's workflow id for this project. Nullable per the schema.
projectTypeIdinteger (optional)PM's project-type id. Nullable per the schema.
modifiedDatestring (optional)The project's last-modified timestamp (raw ISO-8601, not locale-formatted -- distinct from /, which route through ).
modifiedUserIdinteger (optional)The user id who last modified the project.
timeZoneIdinteger (optional)PM's time-zone id for the project's dates.
projectScalingTypeIdinteger (optional)PM's project-scaling-type id.
associatedProjectIdinteger (optional)The id of another project this one is associated with, if any.
changeOrderboolean (optional)Whether this project represents a change order.
projectedEndDatestring (optional)Projected end date (distinct from the committed ).
baselineEndDatestring (optional)Baseline end date snapshot.
brandNamestring (optional)The brand name associated with the project, when set.

get_project

In the default tool list

Returns a single Project by its integer ID from Aprimo Marketing Operations. If this tenant renamed the Project object (e.g. 'Workstream', 'Effort', 'Track'), this is still the right tool. Use for Projects — not Activities/campaigns (use get_activity for those). Returns only the base Project record itself — not any Project sub-resource (DAM collection link, role members/memberships, tasks, attachments, chat access, etc.), each of which has its own get_project_* tool. Resolves status, project manager, and the linked Activity to human-readable labels/names and includes clickable deep links.

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:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID.

Returns:

FieldTypeDescription
projectIdinteger
titlestring (optional)
projectStatusIdinteger (optional)
projectStatusLabelstring (optional)
descriptionstring (optional)
beginDatestring (optional)
endDatestring (optional)
projectManagerIdinteger (optional)
projectManagerNamestring (optional)
activityIdinteger
activityNamestring (optional)
activityDeepLinkstring (optional)
deepLinkstring (optional)
workflowIdinteger (optional)PM's workflow id for this project. Nullable per the schema.
projectTypeIdinteger (optional)PM's project-type id. Nullable per the schema.
modifiedDatestring (optional)The project's last-modified timestamp (raw ISO-8601, not locale-formatted -- distinct from /, which route through ).
modifiedUserIdinteger (optional)The user id who last modified the project.
timeZoneIdinteger (optional)PM's time-zone id for the project's dates.
projectScalingTypeIdinteger (optional)PM's project-scaling-type id.
associatedProjectIdinteger (optional)The id of another project this one is associated with, if any.
changeOrderboolean (optional)Whether this project represents a change order.
projectedEndDatestring (optional)Projected end date (distinct from the committed ).
baselineEndDatestring (optional)Baseline end date snapshot.
brandNamestring (optional)The brand name associated with the project, when set.

get_project_dam_collection

Available on request

Returns the DAM collections linked to a Project, by the project's integer ID, in Aprimo Marketing Operations. Each entry carries the DAM collection's GUID id and name.

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID.

Returns:

FieldTypeDescription
projectIdinteger
countinteger
itemsarray of ProjectDamCollectionItem
items[].projectIdinteger
items[].collectionIdstring (optional)The DAM collection's GUID id.
items[].collectionNamestring (optional)

get_project_role_members

In the default tool list

Returns the members of a project role, by project ID and project-role ID, in Aprimo Marketing Operations. Optionally includes each member's first/last name inline.

Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID.
projectRoleIdstringYesThe project role's integer ID.
includeUserNamebooleanNoWhen true, include each member's first/last name inline. Default false.

Returns:

FieldTypeDescription
projectIdinteger
projectRoleIdinteger
countinteger
itemsarray of ProjectRoleMemberItemProjection
items[].projectRoleMemberIdinteger (optional)
items[].projectRoleIdinteger
items[].userIdinteger (optional)
items[].firstNamestring (optional)
items[].lastNamestring (optional)
items[].projectRoleProjectRoleInfoProjection (optional)
items[].projectRole.projectRoleIdinteger
items[].projectRole.projectIdinteger
items[].projectRole.userRoleIdinteger

get_project_role_memberships

In the default tool list

Returns all role memberships for a project, by the project's integer ID, in Aprimo Marketing Operations. Resolves each role member's user name.

Response format: the response carries a pre-rendered markdown block intended to be displayed verbatim.

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID.

Returns:

FieldTypeDescription
activityIdinteger (optional)
projectIdinteger
projectNamestring (optional)
rolesarray of ProjectRoleUserItemProjection
roles[].roleIdinteger (optional)
roles[].userIdinteger (optional)
roles[].userNamestring (optional)
roles[].userTokenIdinteger (optional)
roles[].userTokenstring (optional)
roles[].projectRoleIdinteger (optional)

get_projects_for_activity

In the default tool list

Lists the Projects that belong to an Activity (marketing campaign), by the activity's integer ID, in Aprimo Marketing Operations. Returns totals and human-readable labels for status, project manager, and the linked Activity.

Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim, including (id: N) suffixes and deep-link headings.

Parameters:

ParameterTypeRequiredDescription
activityIdstringYesThe parent activity'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 (e.g. 'ModifiedDate', 'Title'). 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 ProjectProjectionThe items returned in this response.
items[].projectIdinteger
items[].titlestring (optional)
items[].projectStatusIdinteger (optional)
items[].projectStatusLabelstring (optional)
items[].descriptionstring (optional)
items[].beginDatestring (optional)
items[].endDatestring (optional)
items[].projectManagerIdinteger (optional)
items[].projectManagerNamestring (optional)
items[].activityIdinteger
items[].activityNamestring (optional)
items[].activityDeepLinkstring (optional)
items[].deepLinkstring (optional)
items[].workflowIdinteger (optional)PM's workflow id for this project. Nullable per the schema.
items[].projectTypeIdinteger (optional)PM's project-type id. Nullable per the schema.
items[].modifiedDatestring (optional)The project's last-modified timestamp (raw ISO-8601, not locale-formatted -- distinct from /, which route through ).
items[].modifiedUserIdinteger (optional)The user id who last modified the project.
items[].timeZoneIdinteger (optional)PM's time-zone id for the project's dates.
items[].projectScalingTypeIdinteger (optional)PM's project-scaling-type id.
items[].associatedProjectIdinteger (optional)The id of another project this one is associated with, if any.
items[].changeOrderboolean (optional)Whether this project represents a change order.
items[].projectedEndDatestring (optional)Projected end date (distinct from the committed ).
items[].baselineEndDatestring (optional)Baseline end date snapshot.
items[].brandNamestring (optional)The brand name associated with the project, when set.

list_projects

In the default tool list

Lists Projects in Aprimo Marketing Operations, paged. Optionally narrow by title substring and/or status. Use search_projects when you need richer filtering (project manager, linked activity, extended attributes, the query DSL); use this to browse. Returns totals and human-readable labels for status, project manager, and the linked Activity.

Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim, including (id: N) suffixes and deep-link headings.

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 (e.g. 'ModifiedDate', 'Title'). Omit for default ordering.
sortAscendingbooleanNoSort direction. true = ascending (default), false = descending.
titleFilterstringNoOptional case-insensitive title substring filter.
projectStatusLabelstringNoOptional status filter (label, case-insensitive, e.g. 'Active', 'Closed'). Resolved against the PM ProjectStatus lookup list; returns an error if the label doesn't match any known status.

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 ProjectProjectionThe items returned in this response.
items[].projectIdinteger
items[].titlestring (optional)
items[].projectStatusIdinteger (optional)
items[].projectStatusLabelstring (optional)
items[].descriptionstring (optional)
items[].beginDatestring (optional)
items[].endDatestring (optional)
items[].projectManagerIdinteger (optional)
items[].projectManagerNamestring (optional)
items[].activityIdinteger
items[].activityNamestring (optional)
items[].activityDeepLinkstring (optional)
items[].deepLinkstring (optional)
items[].workflowIdinteger (optional)PM's workflow id for this project. Nullable per the schema.
items[].projectTypeIdinteger (optional)PM's project-type id. Nullable per the schema.
items[].modifiedDatestring (optional)The project's last-modified timestamp (raw ISO-8601, not locale-formatted -- distinct from /, which route through ).
items[].modifiedUserIdinteger (optional)The user id who last modified the project.
items[].timeZoneIdinteger (optional)PM's time-zone id for the project's dates.
items[].projectScalingTypeIdinteger (optional)PM's project-scaling-type id.
items[].associatedProjectIdinteger (optional)The id of another project this one is associated with, if any.
items[].changeOrderboolean (optional)Whether this project represents a change order.
items[].projectedEndDatestring (optional)Projected end date (distinct from the committed ).
items[].baselineEndDatestring (optional)Baseline end date snapshot.
items[].brandNamestring (optional)The brand name associated with the project, when set.

list_projects_display

In the default tool list

Returns a paged, sortable display list of Projects for list/grid presentation in Aprimo Marketing Operations, optionally filtered by project statuses, title, and activity ID.

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.
titleFilterstringNoOptional case-insensitive title substring filter.
projectStatusLabelstringNoOptional status filter (label, case-insensitive, e.g. 'Active', 'Closed'). Resolved against the PM ProjectStatus lookup list; returns an error if the label doesn't match any known status.
activityIdstringNoOptional linked activity's integer ID to narrow the display list to.

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 ProjectSummaryProjectionThe items returned in this response.
items[].idstring (optional)
items[].titlestring (optional)
items[].rawobject (optional)The complete wire object, verbatim, for full fidelity beyond the defensively-extracted fields above.

list_projects_for_attachment

In the default tool list

Lists the Projects that an attachment (by integer ID) is associated with, in Aprimo Marketing Operations, paged and sortable.

Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.

Parameters:

ParameterTypeRequiredDescription
attachmentIdstringYesThe attachment'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 ProjectSummaryProjectionThe items returned in this response.
items[].idstring (optional)
items[].titlestring (optional)
items[].rawobject (optional)The complete wire object, verbatim, for full fidelity beyond the defensively-extracted fields above.

pause_project

In the default tool list · Destructive

Pauses a Project in Aprimo Marketing Operations. This is a state change that halts the project's workflow. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact Project with the user.

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID to pause.
confirmedbooleanNoMust be true to proceed. Omit (or false) to get a confirmation gate error.
confirmedDestructivebooleanNoMust also be true (in addition to confirmed) — pausing a project changes its state. Set only after stating the exact project to the user and getting explicit go-ahead.

Returns:

FieldTypeDescription
projectIdinteger
actionstring (optional)The state-change action performed: "start", "cancel", "pause", or "close".
succeededboolean
deepLinkstring (optional)UI deep link to the affected project.
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.


save_project_roles

In the default tool list

Adds a role to a project, by the project's integer ID, in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact payload. Returns the save result (new project role id, or validation errors).

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID.
bodystringYesJSON object with the role to add (PM wire names, e.g. userRoleId). projectId is populated automatically from the projectId parameter above -- do not include it.
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
resultinteger (optional)
isValidboolean
validationErrorsarray of string (optional)
validationMessagesarray of ValidationMessageProjection (optional)
validationMessages[].formatResourceIdstring (optional)
validationMessages[].argumentResourceIdsarray of string (optional)
validationMessages[].formattedMessagestring (optional)

search_projects

In the default tool list

Searches Projects in Aprimo Marketing Operations. If this tenant has renamed the Project object (e.g. to 'Workstream', 'Effort', 'Track'), users will mention it by this tenant's term — use this tool whenever the user means Projects, regardless of the word they say. Returns a paged list with totals and human-readable labels for status, Project manager name, and the linked Activity's name. Each Project carries the linked Activity's id, name, and deep link. Use this tool for Projects — not for Activities/campaigns (use search_activities 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. 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 (projectStatusLabel, projectManagerName) over composing the query DSL. For extended attributes — tenant-configured custom fields beyond the standard set — use attributeFilters to match a specific value, and attributesPresent to match any value or no value. Extended attributes cannot be addressed through query; pass the display name as written.

Query DSL. query takes a structured operator tree using PascalCase FieldName/FieldValue. By partial title: query='{"contains":{"FieldName":"Title","FieldValue":"hero"}}'. By id: query='{"equals":{"FieldName":"ProjectId","FieldValue":67890}}'. To browse without a filter use list_projects instead — an empty query='{}' is rejected.

Parameters:

ParameterTypeRequiredDescription
querystringYesJSON-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 ('ProjectId', 'Title', 'ActivityId', 'ProjectManager', 'ProjectStatus', 'EndDate', 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_projects to browse without a filter. For status/project-manager filtering, prefer the name-keyed parameters below. Examples: by id '{"equals":{"FieldName":"ProjectId","FieldValue":67890}}'; by title (partial) '{"contains":{"FieldName":"Title","FieldValue":"hero"}}'; by end date '{"lessthan":{"FieldName":"EndDate","FieldValue":"2026-07-01"}}'; by linked activity '{"equals":{"FieldName":"ActivityId","FieldValue":13801}}'.
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 (e.g. 'ModifiedDate', 'Title'). Omit for default ordering.
sortAscendingbooleanNoSort direction. true = ascending (default), false = descending.
projectStatusLabelstringNoFilter to projects with this status (label, case-insensitive, e.g. 'Active', 'Closed'). Resolved against the PM ProjectStatus lookup list. Returns an error if the label doesn't match any known status. Combined with query and other filters via and.
projectManagerNamestringNoFilter to projects whose project manager's 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.
attributeFiltersobject (map of string)NoFilter 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, 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. Combined with query and other filters via and.
attributesPresentobject (map of boolean)NoFilter by extended attribute presence — for natural-language patterns like 'projects with any value for Region' or 'projects 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 (isnotnull); False = the EA has no value (isnull). Use this when the user does not specify a particular value to match.

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 ProjectProjectionThe items returned in this response.
items[].projectIdinteger
items[].titlestring (optional)
items[].projectStatusIdinteger (optional)
items[].projectStatusLabelstring (optional)
items[].descriptionstring (optional)
items[].beginDatestring (optional)
items[].endDatestring (optional)
items[].projectManagerIdinteger (optional)
items[].projectManagerNamestring (optional)
items[].activityIdinteger
items[].activityNamestring (optional)
items[].activityDeepLinkstring (optional)
items[].deepLinkstring (optional)
items[].workflowIdinteger (optional)PM's workflow id for this project. Nullable per the schema.
items[].projectTypeIdinteger (optional)PM's project-type id. Nullable per the schema.
items[].modifiedDatestring (optional)The project's last-modified timestamp (raw ISO-8601, not locale-formatted -- distinct from /, which route through ).
items[].modifiedUserIdinteger (optional)The user id who last modified the project.
items[].timeZoneIdinteger (optional)PM's time-zone id for the project's dates.
items[].projectScalingTypeIdinteger (optional)PM's project-scaling-type id.
items[].associatedProjectIdinteger (optional)The id of another project this one is associated with, if any.
items[].changeOrderboolean (optional)Whether this project represents a change order.
items[].projectedEndDatestring (optional)Projected end date (distinct from the committed ).
items[].baselineEndDatestring (optional)Baseline end date snapshot.
items[].brandNamestring (optional)The brand name associated with the project, when set.

start_project

In the default tool list · Destructive

Transitions a Project to started in Aprimo Marketing Operations. This is a state change that kicks off the project's workflow. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact Project with the user.

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID to start.
confirmedbooleanNoMust be true to proceed. Omit (or false) to get a confirmation gate error.
confirmedDestructivebooleanNoMust also be true (in addition to confirmed) — this changes the project's state. Set only after stating the exact project to the user and getting explicit go-ahead.

Returns:

FieldTypeDescription
projectIdinteger
actionstring (optional)The state-change action performed: "start", "cancel", "pause", or "close".
succeededboolean
deepLinkstring (optional)UI deep link to the affected project.
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.


update_project

In the default tool list

Updates an existing Project 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 Project.

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer 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
projectIdinteger
titlestring (optional)
projectStatusIdinteger (optional)
projectStatusLabelstring (optional)
descriptionstring (optional)
beginDatestring (optional)
endDatestring (optional)
projectManagerIdinteger (optional)
projectManagerNamestring (optional)
activityIdinteger
activityNamestring (optional)
activityDeepLinkstring (optional)
deepLinkstring (optional)
workflowIdinteger (optional)PM's workflow id for this project. Nullable per the schema.
projectTypeIdinteger (optional)PM's project-type id. Nullable per the schema.
modifiedDatestring (optional)The project's last-modified timestamp (raw ISO-8601, not locale-formatted -- distinct from /, which route through ).
modifiedUserIdinteger (optional)The user id who last modified the project.
timeZoneIdinteger (optional)PM's time-zone id for the project's dates.
projectScalingTypeIdinteger (optional)PM's project-scaling-type id.
associatedProjectIdinteger (optional)The id of another project this one is associated with, if any.
changeOrderboolean (optional)Whether this project represents a change order.
projectedEndDatestring (optional)Projected end date (distinct from the committed ).
baselineEndDatestring (optional)Baseline end date snapshot.
brandNamestring (optional)The brand name associated with the project, when set.

update_project_role_memberships

In the default tool list

Replaces the role memberships for a project, by the project's integer ID, in Aprimo Marketing Operations. Requires confirmed=true after showing the user the exact new memberships. Returns the updated memberships.

Parameters:

ParameterTypeRequiredDescription
projectIdstringYesThe project's integer ID.
bodystringYesJSON object with the new role memberships (PM wire names, e.g. { "roles": [{ "roleId": 1, "userId": 42 }] }).
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
activityIdinteger (optional)
projectIdinteger
projectNamestring (optional)
rolesarray of ProjectRoleUserItemProjection
roles[].roleIdinteger (optional)
roles[].userIdinteger (optional)
roles[].userNamestring (optional)
roles[].userTokenIdinteger (optional)
roles[].userTokenstring (optional)
roles[].projectRoleIdinteger (optional)