The `GET` keyword in BotServer provides file retrieval capabilities from both local filesystem and drive (S3-compatible) storage, enabling tools to access documents, data files, and other resources.
3.**Handle Binary Files Carefully**: Text conversion may be lossy
4.**Cache Frequently Used Files**: Store in BOT_MEMORY
5.**Validate External URLs**: Ensure HTTPS for sensitive data
6.**Log Access Failures**: Track missing or inaccessible files
## Limitations
- Cannot write files (read-only operation)
- Binary files converted to text (may corrupt data)
- No streaming support (entire file loaded to memory)
- Path traversal blocked for security
- Cannot access system directories
## Examples
### Document Summarization Tool
```basic
PARAM doc_path AS string LIKE "reports/annual.pdf" DESCRIPTION "Document to summarize"
DESCRIPTION "Summarizes a document"
let content = GET doc_path
if (content == "") {
TALK "Document not found: " + doc_path
} else {
let summary = LLM "Create a brief summary: " + content
TALK summary
}
```
### Data Processing Tool
```basic
PARAM data_file AS string LIKE "data/sales.csv" DESCRIPTION "Data file to process"
DESCRIPTION "Analyzes sales data"
let csv_data = GET data_file
let analysis = LLM "Analyze this sales data: " + csv_data
TALK analysis
```
## Security Considerations
- Never GET files with user-controlled paths directly
- Validate and sanitize path inputs
- Use allowlists for acceptable file paths
- Log all file access attempts
- Monitor for unusual access patterns
## Summary
The GET keyword provides essential file retrieval capabilities for BASIC tools, enabling access to documents, configuration, and external resources while maintaining security through path validation and sandboxing.