System Administration & Maintenance
Tools for tenant-level operations — version and platform information, content security policy, search index status, maintenance jobs, integration logs, and licensed solution sets.
This page covers 20 tools, all of them available on request rather than in the default tool list, and 2 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 |
|---|---|---|
check_maintenance_job | On request | Checks the status of a maintenance job created by create_maintenance_job. |
create_maintenance_job | On request | Destructive. Creates an Aprimo maintenance job that bulk-applies one or more actions (e.g. append/replace/overwrite a field, change classification, change record/collection status, delete) across one or more record or collection targets. |
fill_fda_form | On request | Fills the FDA 2253 form from submitted field data in Aprimo Marketing Operations. |
get_content_security_policy | On request | Gets the Content Security Policy domain allowlist for this Aprimo DAM location. |
get_dam_version_info | On request | Gets the currently active Aprimo DAM release/version number. |
get_integration_log | On request | Returns a single integration log by its integer ID in Aprimo Marketing Operations. |
get_maintenance_job_target | On request | Gets one target of an Aprimo maintenance job by maintenance job id and maintenance target id — the record/classification/rule/order it targets and its per-target status. |
get_search_index_status | On request | Gets the status of Aprimo's record/classification search index: whether a rebuild is required/currently scheduled, indexed record/classification counts, pending changes, and the last rebuild time. |
get_supported_version | On request | Gets detail (documentation URI) for one supported Aprimo API version, by its exact version number. |
get_unique_key_index_status | On request | Gets the status of Aprimo's unique-key index (enforces uniqueness for fields configured as unique keys across records and classifications): processed record/classification counts, whether reindexing is running, whether duplicates were found, and whether a rebuild is required. |
list_counters | On request | Lists every named counter configured in Aprimo (persistent, atomically-incrementing integer sequences typically used to generate unique values, e.g. an invoice number or SKU, for a custom field): name and current value. |
list_integration_logs | On request | Lists integration logs in Aprimo Marketing Operations, paged and sortable. |
list_maintenance_job_targets | On request | Lists every target of an Aprimo maintenance job by maintenance job id — the records/classifications/rules/orders it targets and each one's per-target status. |
list_maintenance_jobs | On request | Lists Aprimo maintenance jobs: id, job type, status, targets count, priority, and dates. |
list_solution_sets | On request | Lists the solution sets (licensed solution modules) installed for the current tenant in Aprimo Marketing Operations. |
list_supported_versions | On request | Lists every API version Aprimo currently supports (version number + documentation URI). |
rebuild_search_index | On request | Triggers a rebuild of Aprimo's record/classification search index. |
rebuild_unique_key_index | On request | Triggers a rebuild of Aprimo's unique-key index. |
search_integration_logs | On request | Searches integration logs in Aprimo Marketing Operations with a JSON query body, paged and sortable. |
update_counter | On request | Destructive. Sets an Aprimo counter's value, by its exact name -- DAM upserts, so a name that doesn't already exist gets created with this value. |
check_maintenance_job
Available on request
Checks the status of a maintenance job created by create_maintenance_job. Pending/Queued/Executing/Scheduled/AsyncPending/AsyncExecuting are normal in-progress states, not errors — tell the user it's still processing and offer to check again shortly. PartiallyFailed is a warning (not an error): some targets failed while others succeeded; failedTargetsCount shows how many failed. Failed is a tool error.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
maintenanceJobId | string | Yes | The maintenance job id returned by create_maintenance_job. |
Returns:
| Field | Type | Description |
|---|---|---|
maintenanceJobId | string | |
status | string | |
failedTargetsCount | integer | |
warning | string (optional) | |
message | string (optional) |
create_maintenance_job
Available on request · Destructive
Creates an Aprimo maintenance job that bulk-applies one or more actions (e.g. append/replace/overwrite a field, change classification, change record/collection status, delete) across one or more record or collection targets. This modifies data; async — poll with check_maintenance_job; can be scheduled via earliestStartDate so not necessarily immediate. Always confirm the exact targets and action(s) with the user before calling this tool. Some actions (Delete, ClassificationMove, UnclassifyRecord, or a status change to Delete) are destructive and require an additional explicit confirmation beyond the routine write confirmation.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Job type: "Record" (one target per id), "BulkRecord" (many record ids in one target), or "BulkCollection" (many collection ids in one target). |
targetIds | array of string | Yes | The record or collection ids (32-char hex) this job targets, matching the chosen type. |
actions | array of DamModels.MaintenanceActionRequest | Yes | The action(s) to apply, each as { action, parameters }. Allowed action values (record targets): AppendTextField, AppendToField, ClassificationCopy, ClassificationMove, ClassifyRecord, Delete, OverwriteField, RefreshFileRecord, RemoveFromField, ReplaceTextField, UnclassifyRecord, ChangeContentType, ChangeRecordStatus, RefreshUrlToPdf. Allowed action values (collection targets): ChangeCollectionOwner, ChangeCollectionStatus. Any other action value is rejected. |
priority | string | No | Optional job priority: "Medium" or "High". |
earliestStartDate | string | No | Optional ISO-8601 timestamp; the job will not start executing before this time. |
disableNotification | boolean | No | Optional; when true, suppresses the job-completion notification email. |
confirmed | boolean | No | Must be true to proceed. Set to false (or omit) to get a confirmation gate error, then call again with confirmed=true after the user explicitly confirms the exact targets and action(s). |
confirmedDestructive | boolean | No | Must also be true (in addition to confirmed) when the job includes a destructive action (Delete, ClassificationMove, UnclassifyRecord, or a status change to Delete). Set only after stating the destructive action and target count to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
maintenanceJobId | string |
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.
fill_fda_form
Available on request
Fills the FDA 2253 form from submitted field data in Aprimo Marketing Operations. Read-only despite the POST verb -- filling/generating a form from submitted data is a query/transform operation, no PM resource is created, updated, or deleted as a side effect (same precedent as retrieve_digital_asset_dam_mapping). The request body is a raw, undocumented map of form-field names to arrays-of-arrays of values -- pass it through verbatim as a JSON object; PM declares no typed schema for this data. PM's response has no documented schema either -- the real API almost certainly streams back a filled PDF binary, which this tool cannot surface as text; it reports success and the response's byte length instead.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
body | string | Yes | JSON object mapping form-field names to arrays-of-arrays of values -- opaque, undocumented FDA form-field data (PM wire names). Pass through verbatim. |
flatten | boolean | No | Whether to flatten the resulting form (bakes filled-in field values into the page content so they can no longer be edited). Default false. |
Returns:
| Field | Type | Description |
|---|---|---|
flatten | boolean | |
succeeded | boolean | |
responseByteLength | integer | Length, in utf-8 bytes, of the raw response body PM returned. A non-zero value alongside Succeeded=true typically indicates a filled PDF was streamed back. |
get_content_security_policy
Available on request
Gets the Content Security Policy domain allowlist for this Aprimo DAM location. Tenant-wide singleton -- no parameters.
Parameters: none.
Returns:
| Field | Type | Description |
|---|---|---|
domains | array of string |
get_dam_version_info
Available on request
Gets the currently active Aprimo DAM release/version number. Tenant-wide singleton -- no parameters.
Parameters: none.
Returns:
| Field | Type | Description |
|---|---|---|
releaseNumber | string (optional) |
get_integration_log
Available on request
Returns a single integration log by its integer 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 |
|---|---|---|---|
id | string | Yes | The integration log's integer ID. |
Returns:
| Field | Type | Description |
|---|---|---|
id | string (optional) | |
name | string (optional) | |
raw | object (optional) | The complete wire object, verbatim, for full fidelity beyond the defensively-extracted fields above. |
get_maintenance_job_target
Available on request
Gets one target of an Aprimo maintenance job by maintenance job id and maintenance target id — the record/classification/rule/order it targets and its per-target status. Use after list_maintenance_job_targets, or when you already have both ids.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
maintenanceJobId | string | Yes | The maintenance job id (GUID). |
maintenanceTargetId | string | Yes | The maintenance target id (GUID), from list_maintenance_job_targets. |
Returns:
| Field | Type | Description |
|---|---|---|
id | string | |
recordId | string (optional) | |
classificationId | string (optional) | |
objectId | string (optional) | |
ruleTarget | string (optional) | |
status | string (optional) | |
message | string (optional) | |
errorDetails | string (optional) | |
attempt | integer (optional) |
get_search_index_status
Available on request
Gets the status of Aprimo's record/classification search index: whether a rebuild is required/currently scheduled, indexed record/classification counts, pending changes, and the last rebuild time. Tenant-wide singleton -- no parameters. Use before deciding whether to call rebuild_search_index.
Parameters: none.
Returns:
| Field | Type | Description |
|---|---|---|
rebuildRequired | boolean | |
rebuildScheduled | boolean | |
indexedRecords | integer | |
indexedClassifications | integer | |
pendingChanges | integer | |
lastChangeId | integer | |
lastChangeDateTime | string (optional) | |
lastIndexRebuild | string (optional) |
get_supported_version
Available on request
Gets detail (documentation URI) for one supported Aprimo API version, by its exact version number. Use after list_supported_versions.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
version | string | Yes | The API version number to look up, e.g. "1", from list_supported_versions. |
Returns:
| Field | Type | Description |
|---|---|---|
version | string (optional) | |
documentationUri | string (optional) |
get_unique_key_index_status
Available on request
Gets the status of Aprimo's unique-key index (enforces uniqueness for fields configured as unique keys across records and classifications): processed record/classification counts, whether reindexing is running, whether duplicates were found, and whether a rebuild is required. Tenant-wide singleton -- no parameters. Use before deciding whether to call rebuild_unique_key_index.
Parameters: none.
Returns:
| Field | Type | Description |
|---|---|---|
totalProcessedRecords | integer | |
totalProcessedClassifications | integer | |
isReindexing | boolean | |
hasDuplicates | boolean | |
indexBuildRequired | boolean | |
lastTimeIndexed | string (optional) |
list_counters
Available on request
Lists every named counter configured in Aprimo (persistent, atomically-incrementing integer sequences typically used to generate unique values, e.g. an invoice number or SKU, for a custom field): name and current value. Use to look up a counter's exact name before calling update_counter.
Parameters: none.
Returns:
| Field | Type | Description |
|---|---|---|
count | integer | |
items | array of CounterPayload | |
items[].name | string (optional) | |
items[].value | integer |
list_integration_logs
Available on request
Lists integration logs in Aprimo Marketing Operations, paged and sortable.
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 IntegrationLogProjection | The items returned in this response. |
items[].id | string (optional) | |
items[].name | string (optional) | |
items[].raw | object (optional) | The complete wire object, verbatim, for full fidelity beyond the defensively-extracted fields above. |
list_maintenance_job_targets
Available on request
Lists every target of an Aprimo maintenance job by maintenance job id — the records/classifications/rules/orders it targets and each one's per-target status. Use to look up a maintenance target's id before calling get_maintenance_job_target.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
maintenanceJobId | string | Yes | The maintenance job id (GUID) whose targets to list. |
Returns:
| Field | Type | Description |
|---|---|---|
maintenanceJobId | string | |
count | integer | |
items | array of MaintenanceJobTargetPayload | |
items[].id | string | |
items[].recordId | string (optional) | |
items[].classificationId | string (optional) | |
items[].objectId | string (optional) | |
items[].ruleTarget | string (optional) | |
items[].status | string (optional) | |
items[].message | string (optional) | |
items[].errorDetails | string (optional) | |
items[].attempt | integer (optional) |
list_maintenance_jobs
Available on request
Lists Aprimo maintenance jobs: id, job type, status, targets count, priority, and dates. Use when the user asks what maintenance jobs exist or their status, or to look up a maintenance job id before calling check_maintenance_job, get_maintenance_job_target, or list_maintenance_job_targets.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
filter | string | No | Optional filter expression (DAM query syntax), e.g. "CreatedOn in today". Omit to list every maintenance job. |
sort | string | No | Optional sort expression, e.g. "createdon desc". Omit for the endpoint's default order. |
skip | integer | No | Number of items to skip, for paging. Defaults to 0. |
take | integer | No | Maximum number of items to return. Omit for the endpoint's default page size. |
Returns:
| Field | Type | Description |
|---|---|---|
count | integer | |
items | array of MaintenanceJobSummaryPayload | |
items[].maintenanceJobId | string | |
items[].type | string (optional) | |
items[].status | string | |
items[].targetsCount | integer (optional) | |
items[].failedTargetsCount | integer | |
items[].priority | integer (optional) | /// DAM's MaintenancePriority enum value (0 = High, 1 = Medium, 2 = AuditArchiving, 3 = BuildSearchIndex) — see 's remarks for why this is a number, not the string other DAM status-style fields use. |
items[].createdOn | string (optional) | |
items[].startedOn | string (optional) | |
items[].creatorEmail | string (optional) | |
items[].message | string (optional) |
list_solution_sets
Available on request
Lists the solution sets (licensed solution modules) installed for the current tenant in Aprimo Marketing Operations.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.
Parameters: none.
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 SolutionSetProjection | The items returned in this response. |
items[].id | string (optional) | |
items[].name | string (optional) | |
items[].raw | object (optional) | The complete wire object, verbatim, for full fidelity beyond the defensively-extracted fields above. |
list_supported_versions
Available on request
Lists every API version Aprimo currently supports (version number + documentation URI). Use to look up a version's exact number before calling get_supported_version.
Parameters: none.
Returns:
| Field | Type | Description |
|---|---|---|
count | integer | |
items | array of SupportedVersionPayload | |
items[].version | string (optional) | |
items[].documentationUri | string (optional) |
rebuild_search_index
Available on request
Triggers a rebuild of Aprimo's record/classification search index. This modifies data (queues a resource-intensive reindex). Requires confirmed=true after confirming with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
rebuildScheduled | boolean | No | Whether to schedule the rebuild instead of running it immediately. Required -- DAM has no default for this. |
rebuildTarget | string | No | Which resource type to rebuild the index for: "Classification" or "Record". Omit to rebuild DAM's default target. |
confirmed | boolean | No | Must be true to proceed. Set to false (or omit) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly confirmed. |
Returns:
| Field | Type | Description |
|---|---|---|
triggered | boolean | |
rebuildScheduled | boolean (optional) | |
rebuildTarget | string (optional) |
rebuild_unique_key_index
Available on request
Triggers a rebuild of Aprimo's unique-key index. This modifies data (queues a resource-intensive reindex). Requires confirmed=true after confirming with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
confirmed | boolean | No | Must be true to proceed. Set to false (or omit) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly confirmed. |
Returns:
| Field | Type | Description |
|---|---|---|
triggered | boolean |
search_integration_logs
Available on request
Searches integration logs in Aprimo Marketing Operations with a JSON query body, paged and sortable. No resource is created or changed by this call.
Response format: the response carries pre-rendered markdown blocks intended to be displayed verbatim.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | JSON object with the search query PM expects (PM query DSL). Pass "{}" for an unfiltered search. |
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 IntegrationLogProjection | The items returned in this response. |
items[].id | string (optional) | |
items[].name | string (optional) | |
items[].raw | object (optional) | The complete wire object, verbatim, for full fidelity beyond the defensively-extracted fields above. |
update_counter
Available on request · Destructive
Sets an Aprimo counter's value, by its exact name -- DAM upserts, so a name that doesn't already exist gets created with this value. This modifies data and there is no way to delete a counter afterward. Requires both confirmed=true and confirmedDestructive=true, after explicitly confirming the exact counter name and new value with the user.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
counterName | string | Yes | The counter's exact name, from list_counters. |
value | integer | Yes | The new value for the counter. |
confirmed | boolean | No | Must be true to proceed. Set to false (or omit) to get a confirmation gate error, then call again with confirmed=true after the user has explicitly confirmed the exact counter name and value. |
confirmedDestructive | boolean | No | Must also be true (in addition to confirmed) -- this can create a brand-new counter with no way to delete it afterward, and overwriting an existing one's value cannot be undone. Set only after stating the exact counter name and value to the user and getting explicit go-ahead. |
Returns:
| Field | Type | Description |
|---|---|---|
name | string | |
value | integer |
This tool deletes or irreversibly overwrites data in the live tenant; the change cannot be rolled back through the API. It will not act unless the call sets both confirmed and confirmedDestructive to true.
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