Archive Connect MCP Server
The archive/archive-connect server exposes Archive data management capabilities to AI agents. This server enables AI-driven search, restoration, analysis, and compliance operations on archived records in the Archive app.
Use this server to:
- Search archived data — Find archived records by object type, field values, and date ranges without unarchiving them to live storage
- Unarchive records — Move archived records back into live Salesforce storage for active business processes
- Analyze org storage — Run storage analysis to identify archivable data and get storage recommendations for your org
- Anonymize personal data — Mask PII in archived records to comply with privacy regulations while maintaining record structure
- Manage data erasure requests — Process Right To Be Forgotten (RTBF) requests by permanently deleting archived records
- API version: v67.0 and later
- Archive license enabled in your org
- Permissions:
Archive Adminpermission set for comprehensive access to all Archive operations- Or specific permissions based on operations (see Archive Admin Permissions for details)
- Object-level and field-level security applies to all operations
- External Client App configured with the
mcp_apiscope - MCP client installed and configured with OAuth authentication
For setup instructions, see Set Up Your Org.
Archive Connect tools are accessed through the Headless 360 MCP server.
- Production:
https://api.salesforce.com/platform/mcp/v1/platform/headless-360 - Sandbox/Scratch:
https://api.salesforce.com/platform/mcp/v1/sandbox/platform/headless-360
Use the Headless 360 server’s Discover tool to find Archive Connect operations at runtime.
- From Setup, in the Quick Find box, enter
MCP Servers, and then select MCP Servers. - Find headless-360 in the list of servers.
- Click Activate.
Once activated, use the server’s Discover tool to find Archive Connect operations.
- “Search for archived Cases with Status ‘Closed’ created in January 2024.”
- “Unarchive Account records for Acme Corporation that were archived in Q1 2024.”
- “Run the storage analyzer to identify which objects are consuming the most storage.”
- “Submit an RTBF erasure request for archived records matching customer@example.com.”
- “Anonymize PII in archived Case records associated with Account ID 001xx000003DGbXXXX.”
Archive Connect provides 13 tools for managing archived data through the Headless 360 MCP server. Tools are organized by capability: search, storage analysis, unarchive, compliance operations, and job monitoring.
Searches archived records by object type, filters, date ranges, and sort criteria.
Internal name: run-archive-global-search
Annotations: readOnlyHint: true · openWorldHint: false
Request Schema:
Returns HTTP 201 with {records[], total_result_count, scroll_id, errorMessage, statusCode}. The errorMessage is null on success. When scroll_id is "-1", there are no more pages.
Retrieves the next page of archived record search results using a scroll cursor from the previous search.
Internal name: get-archive-global-search-next-page
Annotations: readOnlyHint: true · openWorldHint: false
Request Schema:
Returns next page of search results with structure {records[], total_result_count, scroll_id, errorMessage, statusCode}.
Archive search optimized for Agentforce agents. Enforces sharing rules and returns results in a rich-text summary format.
Internal name: run-archive-global-search-with-sharing-rules
Annotations: readOnlyHint: true · openWorldHint: false
Request Schema:
Returns {isSuccess, totalResultCount, records, recordsJson, errorMessage, message, warnings}. The records field contains a rich-text summary of ~5 key fields per record. The recordsJson field contains HTML-entity-encoded JSON. The warnings field contains schema-validation and auto-fix advisories.
Note: Check the isSuccess field, not the HTTP status code. Validation failures return HTTP 201 with isSuccess: false.
Returns the current archive storage consumption across storage tiers.
Internal name: get-organization-archive-storage-used
Annotations: readOnlyHint: true · openWorldHint: false
Request Schema:
Returns {usedStorage[4], availableStorage[4]}. Two parallel arrays where indices 0/1 represent general storage and 2/3 represent archive-tier storage. Values are in bytes.
Note: Interpret per-index rather than as a flat metric. Each index represents a different storage tier and shouldn’t be summed together.
Triggers the archive analyzer to run immediately and generate a storage readiness report.
Internal name: run-analyzer
Annotations: openWorldHint: false
Request Schema:
Returns {isRunning, message}. The isRunning field is always null; read the message field for human-readable status.
Note: This is a write operation that is idempotent and non-destructive.
Retrieves the latest analyzer report showing archive readiness and storage recommendations.
Internal name: get-analyzer-report
Annotations: readOnlyHint: true · openWorldHint: false
Request Schema:
Returns {topRecords[], topFiles[], fileGeneralStorage, dataGeneralStorage, createdDateReport}. Each item in topRecords and topFiles contains {objectName, objectLabel, objectIcon, size, count, usagePercent}. Storage objects contain {storageUsed, storageRemaining, usagePercent}. The createdDateReport is in "DD/MM/YYYY HH:MM:SS" format.
Unarchives archived records back into live Salesforce storage based on search criteria.
Internal name: run-unarchive
Annotations: openWorldHint: false
Request Schema:
Returns {body, errorMessage, statusCode}. The body contains unarchive job details including job ID.
Note: This is a write operation that is potentially long-running. Maximum 1000 matched records per request. Maximum 50 unarchive requests per hour per org. Restores the entire archived hierarchy of each matched record.
Submits a Right To Be Forgotten (RTBF) data erasure request for archived records matching the specified criteria.
Internal name: run-rtbf
Annotations: openWorldHint: false
Request Schema:
Returns {body.request_id, errorMessage, statusCode}. The request_id is a UUID used to track the request via get-rtbf-status.
Warning: Not reversible. RTBF erasure permanently deletes the matched archived hierarchy. Maximum 10,000 root records erased per org per day. Deletes the entire archived hierarchy of each matched record. Values must be exact matches, not partial. The criterion’s record type must have been archived as a root record.
Polls the status of an RTBF data erasure request to confirm whether personal data has been purged from the archive.
Internal name: get-rtbf-status
Annotations: readOnlyHint: true · openWorldHint: false
Request Schema:
Returns {body, errorMessage, statusCode}. The body contains RTBF request status details.
Submits a masking request to irreversibly anonymize PII in archived records matching the criteria.
Internal name: run-masking
Annotations: openWorldHint: false
Request Schema:
Returns {body.request_id, errorMessage, statusCode}. The request_id is a UUID used to track the masking job via get-masking-status.
Warning: Not reversible. Anonymization is permanent; original PII values cannot be recovered. Replaces detected PII field values with placeholders (e.g., "redacted@example.com"). Permanent and one-time per record. Duplicate requests on an already-masked record are ignored. PII fields are auto-detected; you cannot choose specific fields. Records under legal hold or retention lock are excluded. Cascades to child records in the same hierarchy. Shares the 10,000/day rate limit with RTBF operations. Requires org entitlement; without it, returns VALIDATION_ERROR “Masking not allowed for this org”.
Polls the status of a masking request to confirm when PII anonymization has completed.
Internal name: get-masking-status
Annotations: readOnlyHint: true · openWorldHint: false
Request Schema:
Returns {body, errorMessage, statusCode}. The body contains masking request status details. Status reaches "HANDLED" when anonymization completes.
Generates a presigned download URL for an archive job’s execution details log file.
Internal name: get-archive-execution-details-streaming-url
Annotations: readOnlyHint: true · openWorldHint: false
Request Schema:
Returns {url}. If url is not null, it contains a time-limited presigned download URL. If url is null, no log was resolved.
Generates a presigned download URL for an archive job’s failed records log file.
Internal name: get-archive-failed-records-streaming-url
Annotations: readOnlyHint: true · openWorldHint: false
Request Schema:
Returns {url}. If url is not null, it contains a time-limited presigned download URL. If url is null, no failed-records log was resolved.
Every Archive Connect operation runs as the authenticated user through an External Client App with the mcp_api scope. Object permissions (CRUD), field-level security (FLS), sharing rules, and user permissions all apply. If you can’t perform an action in Salesforce, your agent can’t perform it through the MCP server. The audit trail attributes every action to you.
For full guidance, see Security Best Practices and General Best Practices.
Important for compliance operations: The RTBF and masking tools are destructive and irreversible. Configure your MCP client to require explicit approval before executing these operations.
The Archive Connect API has the following operational constraints:
- Unarchive requests: Maximum 50 requests per hour per org. Each request can match up to 1,000 records.
- RTBF and masking operations: Combined maximum of 10,000 root records erased or masked per org per day.
- Search filters: Maximum 6 filter conditions per search request.
- RTBF and masking criteria: Maximum 10 criteria per request, one per object type.
- Unarchive scope: Restores the entire archived hierarchy of each matched record, not just the root record.
- RTBF and masking scope: Deletes or anonymizes the entire archived hierarchy of each matched record.
- Masking permanence: Anonymization is permanent and one-time per record. Duplicate masking requests on already-masked records are ignored.
- RTBF permanence: Data erasure is not reversible. RTBF permanently deletes matched archived records.
- Legal holds: Records under legal hold or retention lock are excluded from masking operations.
- Masking entitlement: Masking operations require org entitlement. Without it, requests return
VALIDATION_ERROR“Masking not allowed for this org”. - Exact value matching: RTBF and masking criteria require exact field value matches, not partial matches.
- Root record requirement: For RTBF, the criterion’s record type must have been archived as a root record.