Asset access control
Use the DAM MCP tools. Two surfaces — do not mix their tools.
| Target | Read ACL | Write ACL |
|---|---|---|
| File or folder | build_access_list | update_asset_acl |
| Media collection | get_collection_access_list | update_media_collection (acl) |
list_associated_media_collections only answers "which collections contain this file/folder?". It does not change membership; use add_assets_to_media_collection / remove_assets_from_media_collection.
Restricted users can only change access on assets they can manage.
Workflow
- Resolve the asset with
search_media_libraryif you only have a name or path. - Read the current ACL. Use
userId/groupIdfrom that response — never invent ids. - Write the change. Then re-read if you need to confirm.
build_access_list also returns users and userGroups for the account. Match the person the user named against userName / userEmail / label.
update_asset_acl
- Always send both
acl.addOrModifyandacl.remove. Use[]on the unused side. entity.typeis onlyUSERorUSER_GROUP.MEDIA_COLLECTIONmay appear on read (inherited membership); do not send it on write.- Do not change the asset owner's entry.
- Do not grant less than a parent folder already grants that same entity.
{
"assetId": "<file-or-folder-id>",
"acl": {
"addOrModify": [{ "entity": { "id": "<userId>", "type": "USER" }, "permission": "READ" }],
"remove": []
}
}
list_associated_media_collections
permission is a string, not an array. Send '["MANAGE"]' or '["READ","CONTRIBUTE"]'. Omit it unless you are filtering for a restricted user.