Tools & Functions - Complete Guide
Tools (also called "functions") are the instruments available to your agent. Each tool fulfills a specific task and extends your agent's capabilities.
Only activate the tools your agent really needs! Each active tool increases complexity and can extend response time.
Overview of All Available Toolsâ
| Tool | Category | Frequency | Cost Impact |
|---|---|---|---|
get_product_properties | đī¸ Products | âââ High | đ° Medium |
product_search | đī¸ Products | âââ High | đ° Low |
get_product_details | đī¸ Products | âââ High | đ° Low |
get_categories | đī¸ Products | ââ Medium | đ° Low |
get_manufacturer | đī¸ Products | â Low | đ° Low |
get_meta_information | âšī¸ Shop Info | âââ High | đ° Low |
get_faqs | âšī¸ Shop Info | ââ Medium | đ° Low |
fetch_initial_chat_guidelines | âšī¸ Shop Info | â Low | đ° Low |
get_chatbot_name | âšī¸ Shop Info | âââ High | đ° Very low |
get_date_time | âšī¸ Shop Info | ââ Medium | đ° Very low |
get_countries | đ Localization | â Low | đ° Very low |
get_delivery_times | đĻ Shipping | ââ Medium | đ° Low |
get_payment_methods | đŗ Payment | ââ Medium | đ° Low |
get_order_status | đ Orders | ââ Medium | đ° Low |
fetch_url | đ External Data | â Low | đ° Medium |
go_to_url | đ Navigation | ââ Medium | đ° Very low |
log | đ Knowledge DB | ââ Medium | đ° Low |
search_logs | đ Knowledge DB | ââ Medium | đ° Low |
tags_for_logs | đˇī¸ Knowledge DB | â Low | đ° Very low |
get_unresolved_logs | đ Backend | â Low | đ° Low |
đī¸ Product Toolsâ
get_product_propertiesâ
What does it do? Loads your shop's complete product filter structure: categories, properties (color, size, material, etc.) and manufacturers/brands.
When to activate? â When your agent should search and filter products â For product advisor agents â When customers ask for "red T-shirts in size M"
When NOT to activate?
â For pure FAQ/customer service agents
â If you already have get_categories AND get_manufacturer active (redundant!)
Return example:
{
"categories": [
{"name": "Clothing", "id": "...", "breadcrumb": "Home > Clothing"},
{"name": "T-Shirts", "id": "...", "breadcrumb": "Home > Clothing > T-Shirts"}
],
"properties": {
"Color": ["Red", "Blue", "Black"],
"Size": ["S", "M", "L", "XL"],
"Material": ["Cotton", "Polyester"]
},
"manufacturers": ["Nike", "Adidas", "Puma"]
}
Use case example:
Customer: "I'm looking for a red leather jacket"
Agent calls: get_product_properties()
Agent now knows: Color "Red" exists, Material "Leather" exists, Category "Jackets" exists
Agent calls: product_search(category="Jackets", properties={"Color": "Red", "Material": "Leather"})
This tool should ideally be called only ONCE at the beginning of a conversation. This saves tokens and costs!
product_searchâ
What does it do? Searches your product catalog with search terms, filters, categories, price range and more.
When to activate? â ALWAYS when your agent should recommend products â For product advisors, shopping assistants â For "Show me..."-requests
Parameters:
query: Free-text search term (e.g., "T-shirt")categories: Category IDs (e.g., ["123", "456"])properties: Filters (e.g., {"Color": ["Red"], "Size": ["M"]})manufacturer: Manufacturer IDsminPrice/maxPrice: Price rangesort: Sorting (price-asc, price-desc, name-asc, etc.)limit: Number of results (default: 8)page: Page (for pagination)
Return example:
{
"products": [
{
"id": "abc123",
"productNumber": "SW-1001",
"name": "Red T-Shirt",
"price": 29.99,
"manufacturer": "Nike",
"url": "/detail/abc123"
}
],
"total": 42,
"page": 1,
"limit": 8
}
Best Practice:
â Bad: Load all 1000 products at once
â
Good: Start with limit=8, load more if needed
get_product_detailsâ
What does it do? Loads detailed information about a specific product (by product ID or product number).
When to activate?
â
When customers ask detailed questions about a product
â
After product_search for more details
â
For "Is this product in stock?" questions
Parameters:
productId: Product ID ORproductNumber: Product number (e.g., "SW-1001")
Return example:
{
"id": "abc123",
"name": "Red T-Shirt Premium",
"description": "High-quality T-shirt made of 100% organic cotton...",
"price": 29.99,
"stock": 15,
"available": true,
"manufacturer": "Nike",
"properties": {
"Color": "Red",
"Size": ["S", "M", "L"],
"Material": "Cotton"
},
"variants": [...],
"images": [...]
}
Use case example:
Customer: "Is the red T-shirt still available in size M?"
Agent previously: product_search("red T-shirt") called
Agent now calls: get_product_details(productId="abc123")
Agent responds: "Yes, the red T-shirt is available in size M. We have 15 in stock!"
get_categoriesâ
What does it do? Provides a list of all categories in your shop (name, URL, breadcrumb navigation).
When to activate?
â
When customers should browse categories
â
For "What categories do you have?" questions
â
BUT: Usually get_product_properties is better!
When NOT to activate?
â If you already have get_product_properties active (redundant!)
Return example:
[
{
"id": "cat123",
"name": "T-Shirts",
"url": "/Clothing/T-Shirts",
"breadcrumb": "Home > Clothing > T-Shirts",
"productCount": 42
}
]
In most cases, get_product_properties already does the same and more. Use get_categories only when you DON'T need product search.
get_manufacturerâ
What does it do? Provides a list of all manufacturers/brands in your shop.
When to activate? â When customers ask about brands ("What brands do you carry?") â For "Do you have Nike?" questions
When NOT to activate?
â If you already have get_product_properties active (redundant!)
Return example:
[
{
"id": "manu123",
"name": "Nike",
"productCount": 150,
"url": "/Nike"
},
{
"id": "manu456",
"name": "Adidas",
"productCount": 120,
"url": "/Adidas"
}
]
âšī¸ Shop Information Toolsâ
get_meta_informationâ
What does it do? Provides freely configurable shop information: contact, hours, return policy, shipping info, legal notices, etc.
Where to configure? In the plugin configuration, there's a LONGTEXT field "Meta Information". You can store any information here.
When to activate? â HIGHLY RECOMMENDED for customer service agents â For "What are your hours?" questions â For "How does return work?" questions
Configuration example:
CONTACT:
Email: info@myshop.com
Phone: +1 123 456789
Hours: Mon-Fri 9am-6pm
SHIPPING:
- Free shipping over $50
- Delivery time: 2-3 business days
- Shipping cost: $4.90
RETURNS:
- 30-day return policy
- Free returns
If you maintain your shop information well, this tool often overlaps with get_faqs. In practice, usually ONE of the two tools is sufficient.
get_faqsâ
What does it do? Provides FAQ content (Frequently Asked Questions and answers).
Where to configure? In the plugin configuration, there's a LONGTEXT field "FAQs".
When to activate? â If you have a FAQ page â For recurring customer questions
Configuration example:
Question: How long does shipping take?
Answer: Usually 2-3 business days within the US.
Question: Can I return my order?
Answer: Yes, you have a 30-day return policy from receipt.
Question: What payment methods do you accept?
Answer: We accept credit card, PayPal, invoice and bank transfer.
In practice, get_meta_information and get_faqs often overlap. Choose ONE and maintain it well â that's usually completely sufficient!
fetch_initial_chat_guidelinesâ
What does it do? Loads chat guidelines/behavior rules at the beginning of a chat.
Where to configure? In the plugin configuration, there's a LONGTEXT field "Initial Chat Guidelines".
When to activate? â If you want to define special chat rules â For tone, address, no-gos
Configuration example:
TONE:
- Be friendly and casual
- Use emojis sparingly
PROHIBITIONS:
- No promises of discounts
- No medical advice
- No political statements
DO's:
- Always stay polite
- Ask when uncertain
- Actively recommend products
get_chatbot_nameâ
What does it do? Provides the configured name of the chatbot/agent so it can introduce itself correctly.
When to activate? â ALMOST ALWAYS recommended â When the agent should introduce itself â For "What's your name?" questions
Return example:
{
"name": "Product Advisor Max"
}
Use case example:
Customer: "Who are you?"
Agent calls: get_chatbot_name()
Agent responds: "I'm Max, your product advisor! How can I help you?"
Cost: Very low (tiny return)
get_date_timeâ
What does it do? Provides the current date and time (including timezone).
When to activate? â For time-dependent responses ("Today", "Tomorrow") â For hours checks â For time-bound promotions/shipping deadlines
Return example:
{
"date": "2025-12-29",
"time": "14:30:00",
"timezone": "America/New_York",
"dayOfWeek": "Sunday"
}
Use case example:
Customer: "If I order today, when will the package arrive?"
Agent calls: get_date_time()
Agent knows: Today is Sunday
Agent responds: "If you order by Monday 12pm, you'll receive the package Wednesday!"
đ Localization Toolsâ
get_countriesâ
What does it do? Provides a list of available countries in your shop (sales channel-specific).
When to activate? â For "Which countries do you ship to?" questions â For international shops
Return example:
[
{"code": "US", "name": "United States"},
{"code": "CA", "name": "Canada"},
{"code": "UK", "name": "United Kingdom"}
]
đĻ Shipping Toolsâ
get_delivery_timesâ
What does it do? Provides information about delivery times as configured in your shop.
When to activate? â For "How long does shipping take?" questions â When you have different delivery time options
Return example:
[
{
"name": "Standard",
"min": 2,
"max": 3,
"unit": "business days"
},
{
"name": "Express",
"min": 1,
"max": 1,
"unit": "business day"
}
]
đŗ Payment Toolsâ
get_payment_methodsâ
What does it do? Provides the available payment methods in the current sales channel.
When to activate? â For "What payment methods do you offer?" questions â For checkout support
Return example:
[
{"name": "Credit Card", "active": true},
{"name": "PayPal", "active": true},
{"name": "Invoice", "active": true},
{"name": "Bank Transfer", "active": false}
]
đ Order Toolsâ
get_order_statusâ
What does it do? Retrieves the status of an order â using order number + ZIP code (as security measure).
When to activate? â For "Where is my order?" questions â For customer service agents
Parameters:
orderNumber: Order number (e.g., "10001")zipCode: ZIP code for verification (e.g., "12345")
Return example:
{
"orderNumber": "10001",
"status": "In shipping",
"trackingCode": "UPS123456789",
"estimatedDelivery": "2025-12-30"
}
Use case example:
Customer: "Where is my order 10001? ZIP is 12345"
Agent calls: get_order_status(orderNumber="10001", zipCode="12345")
Agent responds: "Your order is already in shipping! Tracking: UPS123456789"
The tool only returns the status â NO sensitive customer data like name, address or payment information!
đ External Data Toolsâ
fetch_urlâ
What does it do? Loads the content of a webpage (not web search!) and makes it readable for the agent.
When to activate? â When your agent should access current content from your own website â For dynamic content (blog, news, promotions) â Only for sites you control or trust!
Parameters:
url: The URL to load
Use case example:
You have a news page: https://myshop.com/news/current-promotion
Agent calls: fetch_url("https://myshop.com/news/current-promotion")
Agent reads: "20% off all winter jackets until 12/31/2025"
Agent responds: "We currently have 20% off all winter jackets â valid until year-end!"
Use fetch_url only for websites you trust! The agent can read ANY public content from the site.
đ Navigation Toolsâ
go_to_urlâ
What does it do? Creates a secure, direct link to shop pages (category, product, service pages).
When to activate? â When the agent should direct customers to specific pages â For "Show me the category..." requests
Parameters:
url: Relative or absolute URLlabel: Link text (Optional)
Return example:
<a href="/Clothing/T-Shirts">Here are our T-shirts</a>
đ Knowledge Management Tools (Logging)â
logâ
What does it do? Allows the agent to write new entries to the knowledge database (Assistant Logs).
When to activate? â When your agent should learn from conversations â To build a FAQ database â For recurring, previously unknown questions
Parameters:
question: The question/problemanswer: The answer/solutiontags: Categorization (e.g., ["shipping", "returns"])isPublic: Public (visible to other agents)?
Use case example:
Customer asks: "Do you offer gift wrapping?"
Agent doesn't know (not in Meta-Info)
Agent asks and learns: "Yes, free upon request"
Agent calls: log(
question="Do you offer gift wrapping?",
answer="Yes, we offer free gift wrapping upon request.",
tags=["service", "gift"],
isPublic=true
)
Next time, search_logs can find this information!
search_logsâ
What does it do? Searches the knowledge database (Assistant Logs) for already answered questions.
When to activate?
â
Use together with log
â
To reuse knowledge base
â
Prevents duplicates and hallucinations
Parameters:
query: Search termtags: Filter by tags (Optional)limit: Number of results
Return example:
[
{
"question": "Do you offer gift wrapping?",
"answer": "Yes, free gift wrapping upon request.",
"tags": ["service", "gift"],
"createdAt": "2025-12-15"
}
]
The combination log + search_logs makes your agent self-learning! It continuously builds its own knowledge base.
tags_for_logsâ
What does it do? Provides the list of allowed tags for logs (for categorization).
When to activate?
â
When you use log and search_logs
â
For consistent categorization
Return example:
["shipping", "returns", "payment", "product", "service", "technical"]
get_unresolved_logsâ
What does it do? Provides open/unresolved log entries (for backend agents for triage).
When to activate? â For internal backend agents â For team workflows ("What's still open?")
Target audience: Primarily for employees, not for customer-facing agents!
Tool Combinations (Recommended Sets)â
đī¸ Product Advisor Agentâ
Must-have:
- â
get_product_properties - â
product_search - â
get_product_details - â
get_chatbot_name - â
go_to_url
Optional:
get_delivery_timesget_payment_methods
Not necessary:
- â
get_categories(already in product_properties) - â
get_manufacturer(already in product_properties)
đ§ Customer Service Agentâ
Must-have:
- â
get_meta_informationORget_faqs - â
get_chatbot_name - â
get_order_status - â
get_date_time - â
search_logs - â
log
Optional:
get_delivery_timesget_payment_methodsget_countries
Not necessary:
- â Product tools (except for product questions)
đ Content Checker (Backend)â
Must-have:
- â
fetch_url - â
get_chatbot_name
Optional:
log(for improvement suggestions)
Not necessary:
- â All shop frontend tools
Performance & Cost Tipsâ
⥠Performance Optimizationâ
Fewer Tools = Faster Responses
- Each tool in the list increases complexity
- Agent needs longer to decide
Use Caching
- Call
get_product_propertiesonly 1x per session - Instructions should point this out
- Call
Set Limits
- For
product_search: limit=8 (not 100!) - For
search_logs: limit=5
- For
đ° Cost Optimizationâ
Expensive Tools:
fetch_url(loads external content)get_product_properties(large return)
Cheap Tools:
get_chatbot_name(tiny)get_date_time(tiny)go_to_url(no API call)
Rule of thumb: The larger the return of a tool, the more tokens = higher costs.
Frequently Asked Questionsâ
Q: Can I create custom tools? A: Currently not directly in the UI. Contact 5 Elements for custom development.
Q: Why isn't my agent calling a tool? A: Possible reasons:
- Tool not activated
- Instructions don't mention the tool
- Agent considers it unnecessary
Solution: Explicitly mention in instructions!
Q: Can I temporarily deactivate tools? A: Yes, in the agent configuration you can turn tools on/off anytime.
Next Stepsâ
You now understand all available tools! Continue with:
âĄī¸ Agent Configuration - Optimize instructions & settings
âĄī¸ Vector Stores - Your own documents as knowledge base
âĄī¸ Best Practices - Tips for optimal tool usage