Give your agent the ability to take action. Tools let the LLM call external APIs, query databases, book appointments, and check order status — anything your webhook can handle. What you’ll learn: How to define tools with JSON Schema, configure webhooks, handle responses, and test tool execution.Documentation Index
Fetch the complete documentation index at: https://docs.blackbox.dasha.ai/llms.txt
Use this file to discover all available pages before exploring further.
Quick start: Add a tool
Configure settings
- Tool Name: Unique identifier (e.g.,
get_weather) - Description: What the tool does and when to use it
- Schema: Define parameters using JSON Schema
- Webhook URL: Your endpoint
- Headers: Authentication and custom headers
How function calling works
How function calling works
When you configure tools, the LLM gains awareness of available functions and autonomously decides when to call them during conversation. Dasha BlackBox sends requests to your webhook, your webhook executes the function, and the LLM incorporates results into its response.Key capabilities: JSON Schema for tool definitions, call metadata (callId, agentId, orgId) in webhook requests, automatic retry with exponential backoff, and built-in testing.
Define a tool
Tool structure
Tool structure
Required fields
| Field | Type | Description |
|---|---|---|
name | string | Unique identifier. Pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$. No hyphens. |
description | string | Clear explanation of what the tool does. Helps LLM decide when to use it. |
schema | object | JSON Schema defining parameters. |
webhook | object | URL and headers for the endpoint. |
Optional fields
| Field | Type | Description |
|---|---|---|
fallBackResult | any | Default result if webhook fails. Allows conversation to continue gracefully. |
timeoutSeconds | integer | Max wait time (1–300). Note: Currently uses fixed 60s HTTP timeout. |
retryCount | integer | Retry attempts (0–5). Uses global retry policy with exponential backoff. |
JSON Schema examples
Simple parameters
Simple parameters
Nested objects
Nested objects
Arrays
Arrays
Enumerations
Enumerations
Configure webhooks
Request format
Request format
When your tool is invoked, Dasha BlackBox sends a POST request:
Only headers configured in your tool definition are sent. The
callAdditionalData, agentAdditionalData, serverJobId, and sip fields are optional.Response format
Response format
Return a JSON response within the timeout period:Success (200 OK):
Error Response (4xx/5xx)
Error Response (4xx/5xx)
fallBackResult is used (if configured).
Response best practices
- Return structured data with clear field names
- Include context for the LLM to formulate complete responses
- Handle errors gracefully — return error objects instead of crashing
- Be concise — avoid massive datasets, summarize when possible
- Respond quickly — aim for sub-second responses
Test webhooks
Via dashboard
- Navigate to agent’s Tools tab
- Click Test Tool on any configured tool
- Enter sample arguments
- Review request/response in real-time
Via API
Via API
Tool webhooks vs event webhooks
| Feature | Tool webhooks | Event webhooks |
|---|---|---|
| Purpose | Execute functions during conversation | Receive call lifecycle notifications |
| Trigger | LLM decides to invoke a tool | Specific events (call start, result, failure) |
| Response | Returns result to LLM | Acknowledgment only |
| Timeout | 60 seconds | 30 seconds |
| Configure in | Tools tab | Webhooks tab |
MCP tools
Dasha BlackBox integrates with Model Context Protocol (MCP) servers for pre-built tools without custom webhook development.MCP vs custom webhooks
| Feature | Custom webhooks | MCP servers |
|---|---|---|
| Setup | Write webhook handler | Connect to existing server |
| Tool discovery | Manual definition | Automatic from server |
| Hosting | Self-hosted or cloud | MCP server provider |
| Customization | Full control | Limited to server capabilities |
Common use cases
CRM integration
CRM integration
Calendar booking
Calendar booking
Knowledge base search
Knowledge base search
Best practices
Tool design
- Keep tools focused — one tool, one purpose
- Write clear descriptions — explain when the LLM should use the tool
- Use strong typing — precise schemas with proper types, enums, formats
- Provide defaults — sensible fallback results for error handling
Schema guidelines
Schema guidelines
Webhook implementation
Security:- Always use HTTPS endpoints
- Implement authentication via headers
- Validate incoming requests
- Rate limit to prevent abuse
- Respond within timeout (aim for < 1 second)
- Use async processing for slow operations
- Implement caching where appropriate
- Use idempotent operations when possible
- Monitor webhook uptime
- Set up alerting for failures
Troubleshooting
Tool not being called
Tool not being called
- Improve the tool description to be more specific
- Mention the tool in system prompt if critical
- Test with explicit user requests that should trigger the tool
- Check that the tool name is clear and descriptive
Webhook timeouts
Webhook timeouts
- Optimize webhook processing time
- Use async processing and return immediately
- Configure appropriate
fallBackResult
Schema validation errors
Schema validation errors
- Review LLM-generated arguments in call logs
- Simplify complex nested schemas
- Add clear descriptions to all properties
- Use enums to constrain values
Authentication failures
Authentication failures
- Verify header configuration in tool setup
- Check that API keys are valid and not expired
- Ensure webhook URL is correct and accessible
- Test webhook independently with curl/Postman
Next steps
MCP connections
Connect to MCP servers for pre-built tools
Webhook events
Configure call lifecycle notifications
Test webhooks
Validate webhook implementations
Dashboard testing
Test tools in real conversations