(space-OR-space). Use empty string if no keywords.
taxonomyExpression
Stringify JSON object
{"OR": ["term1", "term2"]}
. Use
"{}"
if no taxonomies.
searchLanguage
Locale with underscore (e.g.,
en_US
)
channelIds
Always empty string
channelType
Always
"PublicUnauthenticated"
contentTypeFqn
Always
"sfdc_cms__image"
pageOffset
Start at
0
, increment by
searchLimit
for pagination
searchLimit
Default
5
, adjust if user requests more
Examples:
Query: "luxury apartment with river view"
{
"inputs"
:
[
{
"searchKeyword"
:
"apartment OR villa OR penthouse OR residence"
,
"taxonomyExpression"
:
"{\"OR\": [\"Luxury\", \"Premium\", \"Waterfront\", \"Riverside\"]}"
,
"searchLanguage"
:
"en_US"
,
"channelIds"
:
""
,
"channelType"
:
"PublicUnauthenticated"
,
"contentTypeFqn"
:
"sfdc_cms__image"
,
"pageOffset"
:
0
,
"searchLimit"
:
5
}
]
}
Query: "bright spacious room" (no concrete nouns)
{
"inputs"
:
[
{
"searchKeyword"
:
""
,
"taxonomyExpression"
:
"{\"OR\": [\"Bright\", \"Spacious\", \"Open\", \"Airy\"]}"
,
"searchLanguage"
:
"en_US"
,
"channelIds"
:
""
,
"channelType"
:
"PublicUnauthenticated"
,
"contentTypeFqn"
:
"sfdc_cms__image"
,
"pageOffset"
:
0
,
"searchLimit"
:
5
}
]
}
Query: "car images" (no descriptive terms)
{
"inputs"
:
[
{
"searchKeyword"
:
"car OR automobile OR vehicle OR auto"
,
"taxonomyExpression"
:
"{}"
,
"searchLanguage"
:
"en_US"
,
"channelIds"
:
""
,
"channelType"
:
"PublicUnauthenticated"
,
"contentTypeFqn"
:
"sfdc_cms__image"
,
"pageOffset"
:
0
,
"searchLimit"
:
5
}
]
}
Call the tool
with the exact JSON payload
Search using Data 360 hybrid search
Tool:
search_electronic_media
Process:
Use the user's query
as-is
— no keyword extraction or transformation needed
Call
search_electronic_media
Pass the query to the tool's
searchQuery
parameter
Example:
User query: "modern luxury apartment with natural lighting"
Tool call:
search_electronic_media(searchQuery="modern luxury apartment with natural lighting")
Other (User-Provided URL)
Ask the user to provide:
Direct URL to the image
Asset library path
Specific system/location to check
Presenting Search Results
Your action MUST use the
ask_followup_question
tool to present search results as options.
Parse the tool response
— Extract all image results (title and source)
Use
ask_followup_question
to present ALL results as selectable options. Show the image title only — do not display the URL.
Receive the user's selection
from the tool response
Then
apply the selected image
I found 4 images. Which one would you like to use?
1. Luxury Apartment Exterior
Source: Salesforce CMS
2. Modern High-Rise Building
Source: Salesforce CMS
3. Waterfront Residence
Source: Salesforce CMS
4. Premium Condominium
Source: Salesforce CMS
Never auto-select an image.
Always wait for user choice.
Applying the Selected Image
After the user chooses:
Confirm the selection with image name and URL
Use the complete URL returned by the tool, including all query parameters. CMS and DAM URLs rely on query parameters for authentication, resizing, and CDN routing — dropping them breaks the image. For example, a URL like
https://cms.example.com/media/img.jpg?oid=00D&refid=0EM&v=2
must be used in full.
Apply the URL to the user's code/component
Show what was changed (file path and line number)
Error Handling
Error
Response
Tool unavailable
"The [source name] tool is unavailable. Would you like to try a different source?"
Tool returns error
Show error message, offer retry with different terms or alternative source
No results found
"No results found. Try broader keywords, removing descriptive terms, or a different source."
Invalid user selection
Re-display options and ask again
Never silently fail.
Always inform the user and offer alternatives.
Search Behavior Notes
Search using keywords:
Both keyword and taxonomy → results match keyword OR (keyword + taxonomy)
Empty keyword → search by taxonomy only
Empty taxonomy → search by keyword only
Use
pageOffset
for pagination (increment by
searchLimit
)
Search using Data 360 hybrid search:
Handles natural language queries
Semantic similarity matching
Searches across multiple connected systems
Key Principles
First response is always text-only
— Present search sources without calling any tool
Only show configured sources
— Check your own tool list (introspection, not tool calls) and only present sources whose tools you have
Wait for user selection
— Never auto-select a source or image
Show all results
— Let the user choose the best match
Confirm before applying
— Verify the selection before modifying code
Handle errors gracefully
— Provide clear feedback and alternatives