Asset manager tools
- search_email_assets: List the reusable email design templates in a project, or fetch one by ID.
- search_sms_assets: List the reusable SMS and MMS design templates in a project, or fetch one by ID.
- search_email_blocks: List the reusable email content blocks in a project, or fetch one by ID.
- search_custom_rows: List the reusable BEE Editor custom rows in a project, or fetch one by ID.
- search_snippets: List the reusable snippets in a project, or fetch one by ID.
- search_app_inbox_designs: List the reusable App Inbox message templates in a project, or fetch one by ID.
- search_files: Find an uploaded file by name across the library, or fetch one file's metadata.
- get_directory: Browse the subfolders and files inside one folder of the file library.
- list_predefined_templates: List the built-in Bloomreach template library. Not scoped to a project.
search_email_assets
Searches the reusable email design templates in a project, or fetches one by ID. These are the templates on the Emails tab of the Asset manager — saved designs you insert into a campaign, rather than the scheduled sends built from them. For the campaigns themselves, use search_email_campaigns.
Omit asset_id to list templates as summary records: name, tags, archived flag, initiative assignment, and creation and edit metadata. Pass asset_id to fetch one template in full, including its design payload with the rendered HTML.
In list mode you can narrow the set with archived, only_mine, tags, and search, and page through the results with offset and limit. When you set search, tags, or only_mine, every page of the library is retrieved before the filter runs, so matches aren't limited to the first page of results.
only_mine resolves your user ID through list_project_users, which requires project-admin access. Without that access the filter falls back to matching your display name, which can miss templates.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
asset_id | str | null | No | The email template ID. Omit to list all; provide to fetch one. |
archived | bool | null | No | False, the default, returns only live templates, matching the UI default. True returns only archived templates. Pass null for both. |
only_mine | bool | No | Return only templates created by the calling user. Defaults to false. |
tags | list | null | No | Return only templates carrying every tag listed, for example ['newsletter', 'promo']. |
search | str | null | No | A case-insensitive substring match on the template name. |
offset | int | No | The number of records to skip, for pagination. Defaults to 0. |
limit | int | No | The maximum number of records to return. Defaults to 200. |
Response parameters
The tool returns an EmailAssetsResponse when asset_id is omitted, or an EmailAssetResponse when it's provided.
The EmailAssetsResponse object has the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[EmailAssetSummary] | The email template summaries. |
offset | int | The offset used for this request. Defaults to 0. |
limit | int | The maximum number of records returned for this request. Defaults to 200. |
archived_items_exists | bool | null | Whether the project holds any archived templates. Populated only when archived is false, the default. |
error | str | null | Error message if the request failed. |
The EmailAssetSummary object has the following fields:
| Field | Type | Description |
|---|---|---|
id | str | The template's unique ID. |
name | str | The template's display name. |
archived | bool | Whether the template has been archived. |
tags | list[str] | User-defined tags. |
initiative_id | str | null | The initiative this template belongs to, if any. |
created | any | null | Unix timestamp of when the template was created. |
created_by_display_name | str | null | Display name of the creator. |
edited | any | null | Unix timestamp of the last edit. |
edited_by_display_name | str | null | Display name of the last editor. |
When asset_id is provided, the tool returns an EmailAssetResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | EmailAsset | null | The full email template record. |
error | str | null | Error message if the request failed. |
The EmailAsset object adds the following field on top of the summary record:
| Field | Type | Description |
|---|---|---|
design | any | null | The full template design payload, including the rendered HTML. |
search_sms_assets
Searches the reusable SMS and MMS design templates in a project, or fetches one by ID. These are the templates on the SMS tab of the Asset manager — saved message designs you insert into a campaign, rather than the scheduled sends built from them. For the campaigns themselves, use search_sms_campaigns.
Omit asset_id to list templates as summary records: name, tags, archived flag, initiative assignment, and creation and edit metadata. Pass asset_id to fetch one template in full, including the message design.
In detail mode, design carries a type of sms or mms, a max_message_parts value, and a translations object keyed by locale. Each translation holds a message, and MMS translations add subject, fallback_sms, and sender. The response also includes a convenience text field with the message text for the default locale. Read design.translations directly for any other locale, or for the MMS-only fields.
The list filters work the same way as search_email_assets, including the only_mine caveat about project-admin access.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
asset_id | str | null | No | The SMS template ID. Omit to list all; provide to fetch one. |
archived | bool | null | No | False, the default, returns only live templates, matching the UI default. True returns only archived templates. Pass null for both. |
only_mine | bool | No | Return only templates created by the calling user. Defaults to false. |
tags | list | null | No | Return only templates carrying every tag listed, for example ['transactional', 'promo']. |
search | str | null | No | A case-insensitive substring match on the template name. |
offset | int | No | The number of records to skip, for pagination. Defaults to 0. |
limit | int | No | The maximum number of records to return. Defaults to 200. |
Response parameters
The tool returns an SmsAssetsResponse when asset_id is omitted, or an SmsAssetResponse when it's provided.
The SmsAssetsResponse object has the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[SmsAssetSummary] | The SMS template summaries. |
offset | int | The offset used for this request. Defaults to 0. |
limit | int | The maximum number of records returned for this request. Defaults to 200. |
archived_items_exists | bool | null | Whether the project holds any archived templates. Populated only when archived is false, the default. |
error | str | null | Error message if the request failed. |
The SmsAssetSummary object carries the same fields as EmailAssetSummary: id, name, archived, tags, initiative_id, created, created_by_display_name, edited, and edited_by_display_name.
When asset_id is provided, the tool returns an SmsAssetResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | SmsAsset | null | The full SMS template record. |
error | str | null | Error message if the request failed. |
The SmsAsset object adds the following fields on top of the summary record:
| Field | Type | Description |
|---|---|---|
design | any | null | The message design: a type of sms or mms, a max_message_parts value, and translations keyed by locale. Each translation holds a message, and MMS translations add subject, fallback_sms, and sender. |
text | str | null | The message text for the default locale, as a convenience. Read design.translations for other locales. |
search_email_blocks
Searches the reusable email content blocks in a project, or fetches one by ID. HTML blocks are the reusable HTML sections on the Blocks tab of the Asset manager, which you drop into an email design so a shared header, footer, or product row lives in one place.
Omit block_id to list blocks as summary records. Pass block_id to fetch one block in full, including its HTML content.
The list filters work the same way as search_email_assets. One extra caveat applies to only_mine: some blocks, AI-generated ones among them, have no recorded creator, so the filter can't match them.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
block_id | str | null | No | The block ID. Omit to list all; provide to fetch one. |
archived | bool | null | No | False, the default, returns only live blocks, matching the UI default. True returns only archived blocks. Pass null for both. |
only_mine | bool | No | Return only blocks created by the calling user. Defaults to false. |
tags | list | null | No | Return only blocks carrying every tag listed, for example ['header', 'footer']. |
search | str | null | No | A case-insensitive substring match on the block name. |
offset | int | No | The number of records to skip, for pagination. Defaults to 0. |
limit | int | No | The maximum number of records to return. Defaults to 200. |
Response parameters
The tool returns an EmailBlocksResponse when block_id is omitted, or an EmailBlockResponse when it's provided.
The EmailBlocksResponse object has the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[EmailBlockSummary] | The block summaries. |
offset | int | The offset used for this request. Defaults to 0. |
limit | int | The maximum number of records returned for this request. Defaults to 200. |
archived_items_exists | bool | null | Whether the project holds any archived blocks. Populated only when archived is false, the default. |
error | str | null | Error message if the request failed. |
The EmailBlockSummary object carries the same fields as EmailAssetSummary: id, name, archived, tags, initiative_id, created, created_by_display_name, edited, and edited_by_display_name.
When block_id is provided, the tool returns an EmailBlockResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | EmailBlock | null | The full block record. |
error | str | null | Error message if the request failed. |
The EmailBlock object adds the following field on top of the summary record:
| Field | Type | Description |
|---|---|---|
html | str | null | The block's rendered HTML content. Read this field rather than reconstructing the markup yourself. |
search_custom_rows
Searches the reusable custom rows in a project, or fetches one by ID. Custom rows are the saved row layouts on the Custom rows tab of the Asset manager, which you drag into an email built with the BEE Editor visual builder. See Email editors for how custom rows behave in the editor itself.
Omit row_id to list rows as summary records. Pass row_id to fetch one row in full, including its raw structure and its rendered HTML.
The list filters work the same way as search_email_assets, including the only_mine caveat about project-admin access.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
row_id | str | null | No | The custom row ID. Omit to list all; provide to fetch one. |
archived | bool | null | No | False, the default, returns only live rows, matching the UI default. True returns only archived rows. Pass null for both. |
only_mine | bool | No | Return only rows created by the calling user. Defaults to false. |
tags | list | null | No | Return only rows carrying every tag listed, for example ['hero', 'product-grid']. |
search | str | null | No | A case-insensitive substring match on the row name. |
offset | int | No | The number of records to skip, for pagination. Defaults to 0. |
limit | int | No | The maximum number of records to return. Defaults to 200. |
Response parameters
The tool returns a CustomRowsResponse when row_id is omitted, or a CustomRowResponse when it's provided.
The CustomRowsResponse object has the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[CustomRowSummary] | The custom row summaries. |
offset | int | The offset used for this request. Defaults to 0. |
limit | int | The maximum number of records returned for this request. Defaults to 200. |
archived_items_exists | bool | null | Whether the project holds any archived rows. Populated only when archived is false, the default. |
error | str | null | Error message if the request failed. |
The CustomRowSummary object carries the same fields as EmailAssetSummary: id, name, archived, tags, initiative_id, created, created_by_display_name, edited, and edited_by_display_name.
When row_id is provided, the tool returns a CustomRowResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | CustomRow | null | The full custom row record. |
error | str | null | Error message if the request failed. |
The CustomRow object adds the following fields on top of the summary record:
| Field | Type | Description |
|---|---|---|
html | str | null | The row's rendered HTML. |
json | any | null | The raw row structure as the BEE Editor stores it. |
search_snippets
Searches the reusable snippets in a project, or fetches one by ID. Snippets are the code fragments on the Snippets tab of the Asset manager. Each one accepts named input parameters, so you can insert the same fragment into several templates and blocks and pass different values each time. See Using template parameters for how those parameters behave in a template.
Omit snippet_id to list snippets as summary records. Pass snippet_id to fetch one snippet in full, including its code and the input parameters it accepts.
The list filters work the same way as search_email_assets, including the only_mine caveat about project-admin access.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
snippet_id | str | null | No | The snippet ID. Omit to list all; provide to fetch one. |
archived | bool | null | No | False, the default, returns only live snippets, matching the UI default. True returns only archived snippets. Pass null for both. |
only_mine | bool | No | Return only snippets created by the calling user. Defaults to false. |
tags | list | null | No | Return only snippets carrying every tag listed, for example ['tracking', 'personalization']. |
search | str | null | No | A case-insensitive substring match on the snippet name. |
offset | int | No | The number of records to skip, for pagination. Defaults to 0. |
limit | int | No | The maximum number of records to return. Defaults to 200. |
Response parameters
The tool returns a SnippetsResponse when snippet_id is omitted, or a SnippetResponse when it's provided.
The SnippetsResponse object has the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[SnippetSummary] | The snippet summaries. |
offset | int | The offset used for this request. Defaults to 0. |
limit | int | The maximum number of records returned for this request. Defaults to 200. |
archived_items_exists | bool | null | Whether the project holds any archived snippets. Populated only when archived is false, the default. |
error | str | null | Error message if the request failed. |
The SnippetSummary object carries the same fields as EmailAssetSummary: id, name, archived, tags, initiative_id, created, created_by_display_name, edited, and edited_by_display_name.
When snippet_id is provided, the tool returns a SnippetResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | Snippet | null | The full snippet record. |
error | str | null | Error message if the request failed. |
The Snippet object adds the following fields on top of the summary record:
| Field | Type | Description |
|---|---|---|
jinja_html | str | null | The snippet's code, as jinja-templated HTML. |
params | any | null | The named input parameters the snippet accepts. |
search_app_inbox_designs
Searches the reusable App Inbox message templates in a project, or fetches one by ID. These are the saved designs on the App Inbox tab of the Asset manager, which you insert into an App Inbox campaign.
Omit design_id to list templates as summary records. Pass design_id to fetch one template in full, including its rendered design content.
The list filters work the same way as search_email_assets, including the only_mine caveat about project-admin access.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
design_id | str | null | No | The App Inbox template ID. Omit to list all; provide to fetch one. |
archived | bool | null | No | False, the default, returns only live templates, matching the UI default. True returns only archived templates. Pass null for both. |
only_mine | bool | No | Return only templates created by the calling user. Defaults to false. |
tags | list | null | No | Return only templates carrying every tag listed, for example ['onboarding', 'promo']. |
search | str | null | No | A case-insensitive substring match on the template name. |
offset | int | No | The number of records to skip, for pagination. Defaults to 0. |
limit | int | No | The maximum number of records to return. Defaults to 200. |
Response parameters
The tool returns an AppInboxDesignsResponse when design_id is omitted, or an AppInboxDesignResponse when it's provided.
The AppInboxDesignsResponse object has the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[AppInboxDesignSummary] | The App Inbox template summaries. |
offset | int | The offset used for this request. Defaults to 0. |
limit | int | The maximum number of records returned for this request. Defaults to 200. |
archived_items_exists | bool | null | Whether the project holds any archived templates. Populated only when archived is false, the default. |
error | str | null | Error message if the request failed. |
The AppInboxDesignSummary object carries the same fields as EmailAssetSummary: id, name, archived, tags, initiative_id, created, created_by_display_name, edited, and edited_by_display_name.
When design_id is provided, the tool returns an AppInboxDesignResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | AppInboxDesign | null | The full App Inbox template record. |
error | str | null | Error message if the request failed. |
The AppInboxDesign object adds the following field on top of the summary record:
| Field | Type | Description |
|---|---|---|
design | any | null | The full template design payload, including rendered content. |
search_files
Finds an uploaded file by name anywhere in the project's file library, or fetches one file's metadata by ID. The library holds the images, documents, and other files on the Files tab of the Asset manager. See File management for how the library is organized. This tool searches; to walk a folder's contents instead, use get_directory.
Pass exactly one of query or file_id. Passing both, or neither, returns an error. A query is a case-insensitive substring match on the file name and needs at least 3 characters. Add directory_id to confine a name search to one folder and the folders beneath it.
A name search has no archived filter, so archived files and folders can appear among the results. Check the archived and implicitly_archived fields on each record before you use one.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
query | str | null | No | A case-insensitive substring match on the file name, at least 3 characters. Required unless you pass file_id. |
file_id | str | null | No | A file ID, to look one file up directly. Required unless you pass query. |
directory_id | str | null | No | Limit a name search to this folder and its subfolders. Ignored when you pass file_id. |
Response parameters
The tool returns a MediaFilesResponse when you search by query, or a MediaFileResponse when you pass file_id.
The MediaFilesResponse object has the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[MediaFileSummary] | The matching files. |
directories | list[MediaDirectorySummary] | The folders whose names match the query. |
path | list[any] | The breadcrumb path from the root folder. Empty for a name search. |
error | str | null | Error message if the request failed. |
The MediaFileSummary object has the following fields:
| Field | Type | Description |
|---|---|---|
id | str | The file's unique ID. |
name | str | The file name. |
archived | bool | Whether the file itself has been archived. |
implicitly_archived | bool | Whether the file counts as archived because a parent folder is archived, even when its own flag is false. |
tags | list[str] | User-defined tags. |
parent_id | str | null | The ID of the folder holding this file. Null at the root. |
file_type | str | The file category: image, video, vcard, or other. Documents such as PDFs fall under other. |
mime_type | str | null | The file's MIME type. |
variants | any | null | The available renditions, keyed by name such as original or thumbnail, each with its size, dimensions, and URL. |
created | any | null | Unix timestamp of when the file was uploaded. |
created_by_display_name | str | null | Display name of the uploader. |
When file_id is provided, the tool returns a MediaFileResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | MediaFile | null | The full file record. |
error | str | null | Error message if the request failed. |
The MediaFile object adds the following field on top of MediaFileSummary:
| Field | Type | Description |
|---|---|---|
description | str | null | The file description. |
get_directory
Browses one folder of the project's file library and returns its subfolders, its files, and the breadcrumb path from the root. Omit directory_id to browse the root folder. To find a file by name instead of walking the tree, use search_files.
A file or folder can be implicitly archived, meaning it counts as archived because a parent folder is archived even though its own archived flag is false. The archived filter accounts for this, and each record reports its own implicitly_archived value so you can tell the two cases apart.
Set file_type to narrow the files returned to one category. Documents such as PDFs and spreadsheets are categorized as other, not as a document type of their own.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
directory_id | str | null | No | The folder to browse. Omit to browse the root folder. |
archived | bool | null | No | False, the default, returns only live files and folders, matching the UI default. True returns only archived ones. Pass null for both. |
file_type | str | null | No | Return only files in this category: image, video, vcard, or other. Omit to return every category. |
Response parameters
The tool returns a MediaFilesResponse object, the same shape search_files returns in search mode:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[MediaFileSummary] | The files directly inside this folder. |
directories | list[MediaDirectorySummary] | The subfolders directly inside this folder. |
path | list[any] | The breadcrumb path from the root folder down to this folder. |
error | str | null | Error message if the request failed. |
list_predefined_templates
Lists the built-in Bloomreach template library — the shared, ready-made assets you reach through the Predefined templates option in the Asset manager. See Project and predefined templates for how the two libraries differ. This is a global catalog rather than a project's own saved assets, so the tool takes no project_id. For a project's own library, use the other tools on this page.
Set asset_type to the kind of template you want. Hidden and disabled entries are left out, matching the UI default.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
asset_type | str | Yes | The template category to list: weblayers, snippets, emails/html, emails/beefree, custom-rows, blocks, sms, or in-app-messages. |
Response parameters
The tool returns a PredefinedTemplatesResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[PredefinedTemplateSummary] | The templates in the category you asked for. |
error | str | null | Error message if the request failed. |
The PredefinedTemplateSummary object has the following fields:
| Field | Type | Description |
|---|---|---|
id | str | The template's unique ID. |
name | str | The template's display name. |
type | str | The normalized asset type. |
tags | list[str] | Catalog tags, for example Christmas or Black Friday. |
disabled | bool | Whether the template is disabled. |
hidden | bool | Whether the template is hidden. |
screenshot | str | null | URL of a preview image. Null for types that carry no screenshot, such as snippets and SMS templates. |
Updated about 1 hour ago

