Tool Definitions
Tool Definitions
NudgeLang provides a flexible system for defining and using tools in autonomous agents. This document covers the various tool types, their configuration, and best practices.
Basic Structure
tools:
- name: string # Required: Unique tool identifier
type: string # Required: Tool type
description: string # Required: Tool description
parameters: # Required: Parameter definitions
- name: string # Required: Parameter name
type: string # Required: Parameter type
required: boolean # Required: Is parameter required
description: string # Required: Parameter description
implementation: string # Optional: Implementation path
config: object # Optional: Tool configurationBuilt-in Tool Types
HTTP Tool
Makes HTTP requests to external services.
tools:
- name: api_client
type: http
description: "HTTP client for API calls"
parameters:
- name: url
type: string
required: true
description: "API endpoint URL"
- name: method
type: string
required: true
description: "HTTP method"
- name: headers
type: object
required: false
description: "Request headers"
- name: body
type: object
required: false
description: "Request body"
config:
timeout: 5000
retry_attempts: 3Database Tool
Interacts with databases.
tools:
- name: db_client
type: database
description: "Database client"
parameters:
- name: query
type: string
required: true
description: "SQL query"
- name: params
type: object
required: false
description: "Query parameters"
config:
type: postgresql
host: localhost
port: 5432
database: mydb
user: user
password: passwordFile Tool
Handles file operations.
tools:
- name: file_handler
type: file
description: "File operations handler"
parameters:
- name: operation
type: string
required: true
description: "File operation"
- name: path
type: string
required: true
description: "File path"
- name: content
type: string
required: false
description: "File content"
config:
base_path: /data
allowed_operations:
- read
- write
- deleteEmail Tool
Sends emails.
tools:
- name: email_sender
type: email
description: "Email sender"
parameters:
- name: to
type: string
required: true
description: "Recipient email"
- name: subject
type: string
required: true
description: "Email subject"
- name: body
type: string
required: true
description: "Email body"
config:
smtp_host: smtp.example.com
smtp_port: 587
username: user
password: passwordCustom Tools
Basic Custom Tool
tools:
- name: custom_tool
type: custom
description: "Custom tool implementation"
parameters:
- name: input
type: object
required: true
description: "Input parameters"
implementation: "path/to/implementation"Advanced Custom Tool
tools:
- name: advanced_tool
type: custom
description: "Advanced custom tool"
parameters:
- name: input
type: object
required: true
description: "Input parameters"
- name: options
type: object
required: false
description: "Tool options"
implementation: "path/to/implementation"
config:
timeout: 5000
retry_attempts: 3
cache_enabled: true
cache_ttl: 3600Tool Configuration
Common Properties
tools:
- name: tool_name
type: tool_type
description: "Tool description"
parameters:
- name: param_name
type: param_type
required: true
description: "Parameter description"
config:
timeout: 5000
retry_attempts: 3
cache_enabled: true
cache_ttl: 3600Security Configuration
tools:
- name: secure_tool
type: tool_type
description: "Secure tool"
parameters:
- name: input
type: object
required: true
description: "Input parameters"
config:
auth:
type: oauth2
client_id: client_id
client_secret: client_secret
ssl:
enabled: true
verify: trueTool Usage
Basic Usage
states:
- id: use_tool
type: tool
tool: tool_name
parameters:
param1: "${input.value}"
param2: "${context.value}"
next: next_stateAdvanced Usage
states:
- id: use_tool
type: tool
tool: tool_name
parameters:
param1: "${input.value}"
param2: "${context.value}"
retry:
attempts: 3
delay: 1000
timeout: 5000
next: next_stateBest Practices
Tool Definition
- Use clear names
- Provide descriptions
- Define parameters
- Document usage
Parameter Design
- Keep it simple
- Use appropriate types
- Mark required fields
- Add descriptions
Configuration
- Set timeouts
- Configure retries
- Enable caching
- Handle errors
Security
- Use authentication
- Enable SSL
- Validate inputs
- Handle secrets
Common Patterns
- Error Handling
tools:
- name: error_handling_tool
type: tool_type
description: "Tool with error handling"
parameters:
- name: input
type: object
required: true
description: "Input parameters"
config:
error_handling:
retry_on_error: true
max_retries: 3
error_callback: "path/to/callback"- Caching
tools:
- name: cached_tool
type: tool_type
description: "Tool with caching"
parameters:
- name: input
type: object
required: true
description: "Input parameters"
config:
cache:
enabled: true
ttl: 3600
strategy: lru- Rate Limiting
tools:
- name: rate_limited_tool
type: tool_type
description: "Tool with rate limiting"
parameters:
- name: input
type: object
required: true
description: "Input parameters"
config:
rate_limit:
enabled: true
requests_per_second: 10
burst: 20Next Steps
- Learn about MCP Integration
- Explore Best Practices
- Read about Security
Last updated on