Adobe Experience Manager

Connect your AI agents to Adobe Experience Manager.

Authentication: OAuth or server-to-server credentials. See Magic Link for the runtime auth flow, or Application credentials to bring your own OAuth app.

Sample use cases

  • Search the DAM for product shots tagged spring-2026 and list any missing alt text in their metadata.
  • Import the hero image from https://cdn.acme.com/launch/hero.png into the Campaigns collection and report when the import job finishes.
  • Pull the published content fragment at /content/dam/acme/faq/shipping and summarize what changed since last quarter.

Available Tools

delete_asset

Delete an asset from the DAM. Use list_folders or search_assets to find asset IDs. Referenced assets are refused unle…

search_assets

Search DAM assets by text (full-text, hybrid, or natural language) and structured term, range, and exists filters, wi…

get_asset_job_status

Get the state of a background asset job (QUEUED, PROCESSING, COMPLETED, COMPLETED_WITH_ERRORS, FAILED). Use the job.j…

get_asset_metadata

Get an asset’s metadata: editable assetMetadata (dc:title, keywords, …) and read-only repositoryMetadata (name, pat…

update_asset_metadata

Edit an asset’s assetMetadata with JSON Patch operations (add, replace, remove, copy, move, test). Call get_asset_met…

list_asset_relations

List an asset’s relations to other assets, optionally filtered to some relation types. Use list_asset_relation_types …

create_asset_relations

Relate an asset to other assets, each with a relation type such as ‘sources’ or ‘derived’. Use search_assets or list_…

list_asset_relations_by_type

List an asset’s relations of one relation type. Use list_asset_relation_types to find the types, and list_asset_relat…

delete_asset_relations_by_type

Remove all of an asset’s relations of one relation type. Use list_asset_relation_types to find the types. To remove a…

delete_asset_relation

Remove one relation between two assets. Use list_asset_relations to find the relation_type and related_asset_id. To c…

list_asset_relation_types

List the relation type names an asset has (e.g. sources, derived). Use the values with list_asset_relations, list_ass…

list_asset_renditions

List an asset’s static renditions with name, MIME type, size, and pixel dimensions. Use list_folders or search_assets…

import_asset_from_url

Import 1-300 files from URLs into a DAM folder as new assets, with optional metadata. Use list_folders to find the ta…

get_import_job_status

Get the state and progress counters of a URL import job. Use the job_id returned by import_asset_from_url. Once state…

get_import_job_result

List per-file outcomes of a URL import job, including the new asset ID of each imported file and the error for each f…

list_collections

List Dynamic Media asset collections (curated groups of assets and collections) with their titles. Paginate with curs…

create_collection

Create an asset collection with a title and initial assets/collections. Use search_assets for asset IDs. May run asyn…

get_collection

Get an asset collection’s title, description, repository metadata and ETag. Use list_collection_items for its content…

update_collection

Update an asset collection’s title, description or custom metadata. Pass etag from get_collection, or null to fetch i…

delete_collection

Delete an asset collection; the assets in it are not deleted. Pass etag from get_collection, or null to fetch it. May…

list_collection_items

List the assets and sub-collections in an asset collection, plus the ETag that update_collection_items needs. Paginat…

update_collection_items

Add or remove assets/collections in an asset collection. Pass etag from list_collection_items, or null to fetch it. U…

get_collection_job_status

Get the state (PROCESSING, COMPLETED, FAILED) of an asynchronous collection job started by create_collection, delete_…

list_asset_smart_crops

List the Dynamic Media smart crops (named crop regions with aspect ratios) defined for an image or video asset. Pagin…

list_image_presets

List the Dynamic Media image presets (named output size/format settings) configured for image delivery. Paginate with…

create_asset_archive

Request a zip archive of one or more assets and chosen renditions for download. Runs asynchronously: poll get_archive…

get_archive_status

Get the state of an asset archive started by create_asset_archive. When COMPLETED, download_urls lists the archive fi…

list_content_sources

List every Content AI content source (AEM author/publish, acquisition crawls, custom indexes) with its searchable spa…

create_acquisition_source

Create a Content AI acquisition content source that crawls a website into a searchable index. Returns its slug ‘name’…

list_acquisition_sources

List Content AI acquisition (website crawl) content sources with their full crawl configuration. Filter by status (AC…

get_acquisition_source

Get one Content AI acquisition content source by name: crawl config, status, searchable spaces, and its ETag for upda…

update_acquisition_source

Fully replace an acquisition source’s description and crawl config; omitted optional parts are cleared. Prefer patch_…

patch_acquisition_source

Change selected fields of an acquisition source (merge patch). Set status ARCHIVED to delete it: crawls stop and cont…

trigger_acquisition_run

Start an on-demand crawl of an acquisition content source now. Fails with a conflict if a run is already in progress…

get_latest_acquisition_run

Get the state and metrics of the most recent crawl run of an acquisition content source. Use after trigger_acquisitio…

search_content_sources

Search documents in one Content AI content source with fulltext, semantic (vector), filter, or hybrid queries, plus s…

generate_search_answer

Ask a natural-language question and get an AI-generated answer grounded in one Content AI content source, with the so…

list_published_fragments

List Content Fragments as delivered by the publish (default), preview or author tier, optionally under a folder path…

get_published_fragment

Get a delivered Content Fragment by ID from the publish (default), preview or author tier, optionally embedding its r…

get_published_fragment_by_path

Get a delivered Content Fragment by its exact repository path (e.g. /content/dam/site/en/article) from the publish (d…

list_published_fragment_references

List the resources (fragments, assets, pages, tags) a delivered Content Fragment references, direct or all levels. Us…

get_published_fragment_model

Get the Content Fragment Model a delivered fragment is based on, from the publish (default), preview or author tier. …

list_published_fragment_variations

List the variations of a delivered Content Fragment with their field values. Paginate with cursor. Use list_published…

get_published_fragment_variation

Get one variation of a delivered Content Fragment, optionally embedding its references. Use list_published_fragments …

list_published_variation_references

List the resources a delivered fragment variation references, direct or all levels. Use list_published_fragments for …

list_published_fragment_referenced_by

List the pages and fragments that reference a delivered Content Fragment (where it is used). Paginate with cursor. Us…

list_published_models

List Content Fragment Models available on the publish (default), preview or author delivery tier. Paginate with curso…

get_published_model

Get a Content Fragment Model’s title, path and tags from the publish (default), preview or author delivery tier. Use …

get_model_json_schema

Get the JSON Schema (2020-12) describing a Content Fragment Model’s fields: names, types and descriptions. Use it to …

list_published_model_fragments

List the delivered Content Fragments based on one Content Fragment Model. Paginate with cursor. Use list_published_mo…

list_folders

Browse the DAM by path: returns the folder itself plus its children. This is the main way to find folder and asset ID…

get_folder

Get a folder by ID with its children (folders by default; add ‘ASSET’ to types for assets). Use list_folders to find …

create_folders

Create up to 10 DAM folders by full path; missing parent folders are created too. Returns the new folder IDs, and per…

delete_folders

Delete up to 10 DAM folders by path. Use list_folders to find paths; use delete_folder when you have an ID. Non-empty…

delete_folder

Delete one DAM folder by ID. Use list_folders to find folder IDs; use delete_folders to delete by path. Non-empty fol…

get_folder_job_status

Get the state of a background folder job (PROCESSING, COMPLETED, COMPLETED_WITH_ERRORS, FAILED). Use the job.job_id r…

get_folder_job_result

Get the per-folder results of a finished background folder job (created, deleted, or failed folders). Use the job.job…

list_forms

List Core Components Adaptive Forms available to the user, with IDs and repository paths. Older Foundation-based form…

get_form_definition

Get an Adaptive Form’s definition: its field model, data schema, and accepted submission types, optionally localized…

get_form_data

Get prefill or previously saved data for an Adaptive Form, optionally a specific submission by data_ref (the submissi…

submit_form

Submit data to an Adaptive Form as JSON, running its server-side validation and submit action. Returns the submission…

create_form_callback

Register a callback URL that AEM Forms calls when an Adaptive Form is submitted (Workfront Fusion). Returns the callb…

get_form_callback

Get a registered AEM Forms callback by ID. Callback IDs come from create_form_callback; there is no list endpoint.

update_form_callback

Replace a registered AEM Forms callback (URL, status, trigger, target service). All required fields must be sent agai…

delete_form_callback

Delete a registered AEM Forms callback so AEM stops calling its URL. Callback IDs come from create_form_callback.

list_fragment_references

List the assets, fragments, pages and experience fragments a Content Fragment directly references. Use get_fragment_r…

get_fragment_references_tree

Get every reference of a Content Fragment, recursively, as a tree of pointers plus a map of hydrated references. Use …

list_fragment_referenced_by

List the pages, experience fragments and Content Fragments that reference one fragment, with pagination. Use list_ref…

list_referenced_by

For several Content Fragment paths at once, list the pages, experience fragments and fragments that reference each. U…

list_fragment_translations

Get a Content Fragment’s locale and its language copies (path, locale, status). Use list_language_copies for several …

list_language_copies

For several Content Fragment or folder paths at once, get each one’s locale and language copies. Use list_fragment_tr…

list_languages

List the languages a Content Fragment can get language copies in (its site’s language roots). Use before start_workfl…

list_workflows

List Content Fragment workflows (publish, unpublish, move, rename, translation structure), newest first, optionally f…

start_workflow

Start a Content Fragment workflow: publish-folder, unpublish-fragments, unpublish-models, move-fragments, rename-frag…

get_workflow

Get a Content Fragment workflow’s state (RUNNING, COMPLETED, ABORTED…), payload and any invalid fragments. Get the …

list_fragment_tags

List the tags applied to a Content Fragment, plus the etag that replace_fragment_tags and remove_fragment_tags take. …

add_fragment_tags

Add existing AEM tags to a Content Fragment, keeping the tags it already has. Use replace_fragment_tags to set the ex…

replace_fragment_tags

Replace all tags on a Content Fragment with the given tag IDs. Use add_fragment_tags to keep existing tags. The etag …

remove_fragment_tags

Remove every tag from a Content Fragment. To drop only some tags, use replace_fragment_tags with the tags to keep. Th…

list_variation_tags

List the tags applied to one variation of a Content Fragment, plus the etag that replace_variation_tags and remove_va…

add_variation_tags

Add existing AEM tags to a Content Fragment variation, keeping the tags it already has. Use replace_variation_tags to…

replace_variation_tags

Replace all tags on a Content Fragment variation with the given tag IDs. The etag from list_variation_tags is fetched…

remove_variation_tags

Remove every tag from a Content Fragment variation. To drop only some, use replace_variation_tags. The etag from list…

list_fragments

List Content Fragments, optionally under a folder path, with pagination. Use search_fragments instead to filter by st…

search_fragments

Search Content Fragments by path, status, model IDs, tags, locale, metadata, full text, and created/modified/publishe…

get_fragment

Get a Content Fragment with its fields, variations, tags and references, plus its etag for update_fragment, patch_fra…

create_fragment

Create a Content Fragment from a model in a folder and return it with its new id and etag. Use list_models to find mo…

update_fragment

Replace a Content Fragment’s title, description and field values in full; anything not sent is cleared. Use patch_fra…

patch_fragment

Edit parts of a Content Fragment with JSON Patch operations (e.g. replace /title) and return the updated fragment and…

delete_fragment

Permanently delete a Content Fragment. Fails for PUBLISHED or MODIFIED fragments; use delete_and_unpublish_fragment f…

delete_and_unpublish_fragment

Delete a Content Fragment and unpublish it from the publish tier in a background workflow; track it with get_workflow…

update_fragment_checkout_state

Check out a Content Fragment (lock it for the current user) or check it in (release the lock). Fails with a conflict …

get_fragment_preview_url

Get the preview URL of each variation of a Content Fragment, as configured on its model. Use list_fragments or search…

publish_fragments

Publish up to 50 Content Fragments by ID or path, now or at a scheduled time, optionally with references in chosen st…

get_fragment_publication_status

Get the scheduled publish or unpublish operation pending for one Content Fragment. Use get_fragments_publication_stat…

get_fragments_publication_status

Get scheduled publication status for up to 50 Content Fragments in one call, instead of calling get_fragment_publicat…

copy_fragment

Copy a single Content Fragment into an existing folder and return the copy with its new id. Use copy_fragment_tree to…

copy_fragment_tree

Copy a Content Fragment together with the fragments it references, in the background. Returns a job; poll its job_id …

find_and_replace_fragments

Find and replace text in the text and long-text fields of up to 20 Content Fragments. Set dry_run to preview results …

get_fragment_model

Get the Content Fragment Model a fragment is based on, including its field definitions and etag. Use get_model when y…

change_fragment_model

Switch a Content Fragment to a different Content Fragment Model. Fields that do not fit the new model can leave it in…

get_fragment_model_ui_schema

Get the editor UI schema and static field schema of the model behind a Content Fragment. Use get_model_ui_schema when…

get_fragment_metadata

Get a Content Fragment’s metadata properties, its metadata form ID, and the etag for update_fragment_metadata. Use li…

update_fragment_metadata

Update a Content Fragment’s metadata properties with JSON Patch operations. Only properties in its metadata schema ca…

get_fragment_permissions

List the actions (READ, EDIT, DELETE, PUBLISH, CHECKOUT, …) the current user may take on one Content Fragment. Use …

list_launches

List content fragment launches with pagination. Filter server-side by created, modified, published, promoted, or live…

create_launch

Create a launch (a working copy of content fragments for future changes). Runs as a background job: poll get_launch_j…

get_launch

Get a launch’s details and its ETag (needed by update_launch, delete_launch, update_launch_sources, and rebase_launch…

update_launch

Replace a launch’s properties (title, description, depth, production readiness, live date, publish agent). Full repla…

delete_launch

Delete a launch. Runs as a background job: poll get_launch_job_status with the returned job_id. Use list_launches to …

list_launch_sources

List the content fragment IDs that are sources of a launch, with pagination. Use get_launch_content for the launch’s …

update_launch_sources

Add or remove content fragment sources of a launch. Runs as a background job: poll get_launch_job_status with the ret…

rebase_launch

Rebase a launch onto production (or another launch), pulling in source changes. Background job: poll get_launch_job_s…

promote_launch

Promote a launch’s changes into production (or another launch), overwriting the target fragments. Background job: pol…

get_launch_diff

Start computing field-level differences between a launch and production (or another launch). Background job: poll get…

get_launch_content

List the content fragment copies inside a launch, with their source IDs and last promote/rebase info. Page with curso…

list_launch_jobs

List the background jobs of a launch (create, edit, promote, rebase, diff, delete) with status, progress, and timesta…

get_launch_job_status

Check whether a launch background job is still running. When completed is true, call get_launch_job_result. The job_i…

get_launch_job_result

Get the outcome of a finished launch job: final state, errors, the launch details (e.g. the new launch ID for create)…

list_models

List Content Fragment Models with pagination (cursor from page_info). Use search_models instead to filter by name, fo…

search_models

Search Content Fragment Models server-side by name, technical name, configuration folder, status, replication status,…

get_model

Get a Content Fragment Model by ID, including its field definitions and its ETag for update_model or delete_model. Us…

create_model

Create a Content Fragment Model with field definitions in a configuration folder. Set dry_run to validate the payload…

update_model

Edit a Content Fragment Model with JSON Patch operations (rename, add/remove/replace fields). Pass the etag from get_…

delete_model

Permanently delete a Content Fragment Model. Fails with a conflict if fragments still use it. Use list_models or sear…

copy_model

Copy a Content Fragment Model into another existing configuration folder, optionally renaming it. Returns the new mod…

publish_models

Publish up to 50 Content Fragment Models, now or at a scheduled time, by starting an AEM workflow. Returns the workfl…

get_models_publication_status

Get the scheduled publish/unpublish status for up to 50 Content Fragment Models. Use after publish_models with a sche…

get_model_ui_schema

Get the editor UI schema (tabs, groups, conditional fields) of a Content Fragment Model and its ETag for update_model…

update_model_ui_schema

Replace the editor UI schema and constraints of a Content Fragment Model. Read the current one with get_model_ui_sche…

list_model_tags

List the tags applied to a Content Fragment Model, with the ETag that replace_model_tags and remove_model_tags need. …

add_model_tags

Add existing tags to a Content Fragment Model, keeping its current tags. Use replace_model_tags to overwrite the set…

replace_model_tags

Replace all tags on a Content Fragment Model with the given tags. Use add_model_tags to keep existing tags, list_mode…

remove_model_tags

Remove every tag from a Content Fragment Model. To drop only some tags, use replace_model_tags with the ones to keep…

get_metadata_schema

Get the metadata schema bound to a content fragment or DAM folder (resolved up the folder tree) and all its metadata …

bind_metadata_schema

Bind a metadata schema to a content fragment or DAM folder (children inherit it), or pass a null schema_id to unbind …

get_domain

Get the base domain URL of each AEM tier (author, publish, preview) for this environment.

check_permissions

Check which actions (read, edit, delete, publish, create fragment/model, …) the current user may perform on fragmen…

execute_graphql_query

Run a GraphQL query against the Content Fragment GraphQL endpoint, for reading fragments across models in one call wi…

create_batch

Run several Sites API write calls (POST/PUT/PATCH/DELETE) together in the background. Returns a job_id; poll it with …

list_batches

List batch requests created with create_batch, filtered by state, with pagination (cursor from page_info). Use get_ba…

get_batch

Get a batch request’s status and each sub-request’s status code and body. Use the job_id from create_batch or an ID f…

create_translation_project

Create a translation project with one job per target language, optionally adding content and starting translation. Ru…

get_translation_project

Get a translation project with its settings, status, and jobs (job IDs for the translation job tools). No list endpoi…

update_translation_project

Replace a translation project’s properties, including adding or dropping target languages and changing the TIF config…

delete_translation_project

Delete a translation project and its jobs. Project IDs come from create_translation_project.

add_translation_project_content

Add content to (or remove it from) the DRAFT jobs of every target language in a translation project, optionally maske…

run_translation_jobs_command

Run START, COMPLETE, CANCEL, or ARCHIVE on all jobs of a translation project, optionally masked to some target langua…

get_translation_job

Get a translation job (one target language) with its status and content items, including source paths for accept/reje…

delete_translation_job

Delete one translation job from a project. Job IDs come from get_translation_project (translation_jobs); project IDs …

run_translation_job_command

Run START, COMPLETE, CANCEL, or ARCHIVE on one translation job. Use run_translation_jobs_command for all jobs of a pr…

update_translation_job_content

Add content to or remove content from one DRAFT translation job. Use add_translation_project_content for all jobs of …

accept_translation_job_content

Accept translated content that is READY_FOR_REVIEW in a translation job. Use get_translation_job to find the source p…

reject_translation_job_content

Reject translated content that is READY_FOR_REVIEW in a translation job, with an optional comment. Use get_translatio…

start_language_copy_sync

Start syncing language copies of a site or asset path from its source, overwriting their content. Returns the sync pr…

get_language_copy_sync

Get the status of a language copy sync process. The sync ID comes from start_language_copy_sync.

update_language_copy_sync

Suspend or abort a RUNNING language copy sync process. The sync ID comes from start_language_copy_sync; check its sta…

get_translation_async_status

Get the status of an asynchronous translation operation and the resources it affected (new project and job IDs). The …

list_fragment_variations

List a Content Fragment’s variations (name, title, field values). Use search_fragment_variations to filter by status …

create_fragment_variation

Create a new variation of a Content Fragment with a title and optional description. Returns the variation, including …

search_fragment_variations

Search a Content Fragment’s variations by status (NOT_PUBLISHED, PUBLISHED, MODIFIED) and by created/modified/publish…

get_fragment_variation

Get one variation of a Content Fragment with its field values, tags, and references, plus the etag that update_fragme…

update_fragment_variation

Edit a Content Fragment variation’s title, description, or field values with JSON Patch operations. Call get_fragment…

delete_fragment_variation

Permanently delete a variation from a Content Fragment, optionally unlinking references to it. The etag from get_frag…

list_variation_references

Get the tree of assets, fragments, and pages referenced by one Content Fragment variation. Use list_fragment_variatio…

list_fragment_versions

List the saved versions of a Content Fragment (ID, title, label, comment, creator, date). Version IDs feed get_fragme…

create_fragment_version

Save the current state of a Content Fragment as a new version, with an optional label and comment, so it can be resto…

get_fragment_version

Get the full contents of one saved version of a Content Fragment (fields, variations, tags, references) plus the etag…

delete_fragment_version

Permanently delete one saved version of a Content Fragment; the fragment itself is unchanged. The etag from get_fragm…

restore_fragment_version

Replace a Content Fragment’s current content with a saved version. Unsaved current content is lost, so call create_fr…