Tools Service API
Hand-written reference. This page was written in November 2024 and has not been re-checked endpoint by endpoint against the code since. Paths, fields and examples may have drifted; the service’s own OpenAPI document is authoritative. Corrections are welcome as issues or pull requests.
All IDs, keys (such as
your-api-key) and host names in the examples are fictitious placeholders.
Gateway path: https://<host>/api/v1/tools/... (proxied to the service’s /api/tools/...)
Local port: listed in Service ports; the examples below call the service directly on localhost
Authentication: API Key (X-API-Key header) required
Overview
The Tools Service provides a unified interface for executing 52 security analysis tools (the directories under open-security-tools/app/tools whose main.py defines execute_tool, which is what app/tool_loader.py loads; counted on 2 October 2026) across multiple categories including vulnerability scanning, network analysis, web application testing, and threat intelligence. It manages tool execution, monitors task status, and aggregates results from diverse security tools.
Table of Contents
Authentication
All Tools Service endpoints require API Key authentication:
curl -X GET http://localhost:8000/api/tools \
-H "X-API-Key: your-api-key"
Tool Management
GET /tools
List all available security tools.
Method: GET
Endpoint: /tools
Authentication: Required (API Key)
Rate Limit: 100 requests/minute
Query Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
| category | string | No | Filter by category: scanner, analyzer, enricher, responder |
| status | string | No | Filter by status: active, inactive, error |
| limit | integer | No | Number of results (default: 50) |
| offset | integer | No | Pagination offset |
Request:
curl -X GET "http://localhost:8000/api/tools?category=scanner&status=active" \
-H "X-API-Key: your-api-key"
Response (200 OK):
{
"count": 52,
"results": [
{
"id": "nessus-001",
"name": "Nessus Scanner",
"category": "scanner",
"vendor": "Tenable",
"version": "10.4.2",
"status": "active",
"supports_async": true,
"execution_timeout_seconds": 3600,
"description": "Comprehensive vulnerability scanner",
"capabilities": [
"vulnerability_scan",
"compliance_check",
"asset_discovery"
]
},
{
"id": "burpsuite-001",
"name": "Burp Suite Professional",
"category": "scanner",
"vendor": "PortSwigger",
"version": "2024.2.1",
"status": "active",
"supports_async": true,
"execution_timeout_seconds": 1800,
"description": "Web application security testing tool",
"capabilities": [
"web_app_scan",
"api_scan",
"dast"
]
}
]
}
GET /tools/{tool_id}/info
Get detailed information about a specific tool.
Method: GET
Endpoint: /tools/{tool_id}/info
Authentication: Required (API Key)
Path Parameters:
| Name | Type | Description |
|---|---|---|
| tool_id | string | Tool identifier |
Request:
curl -X GET http://localhost:8000/api/tools/nessus-001/info \
-H "X-API-Key: your-api-key"
Response (200 OK):
{
"id": "nessus-001",
"name": "Nessus Scanner",
"category": "scanner",
"vendor": "Tenable",
"version": "10.4.2",
"status": "active",
"description": "Comprehensive vulnerability scanner with multiple scan profiles",
"documentation_url": "https://docs.tenable.com/nessus",
"supports_async": true,
"execution_timeout_seconds": 3600,
"supports_scheduling": true,
"supports_parallelization": true,
"input_parameters": [
{
"name": "target",
"type": "string",
"required": true,
"description": "Target IP, CIDR, or hostname"
},
{
"name": "scan_profile",
"type": "string",
"required": false,
"default": "basic",
"enum": ["basic", "full", "compliance", "discovery"],
"description": "Scan profile to use"
},
{
"name": "credentials",
"type": "object",
"required": false,
"description": "Optional authentication credentials"
}
],
"output_format": "json",
"estimated_execution_time_minutes": 45,
"requires_license": true,
"license_status": "active",
"license_expires": "2024-12-31T23:59:59Z"
}
Tool Execution
POST /tools/{tool_id}/execute
Execute a security tool with specified parameters.
Method: POST
Endpoint: /tools/{tool_id}/execute
Authentication: Required (API Key)
Path Parameters:
| Name | Type | Description |
|---|---|---|
| tool_id | string | Tool identifier |
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
| parameters | object | Yes | Tool-specific parameters |
| async_mode | boolean | No | Execute asynchronously (default: true) |
| callback_url | string | No | Webhook URL for async completion |
| priority | string | No | Execution priority: low, normal, high |
| tags | array | No | Tags for organizing execution |
Request:
curl -X POST http://localhost:8000/api/tools/nessus-001/execute \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"parameters": {
"target": "192.168.1.0/24",
"scan_profile": "full"
},
"async_mode": true,
"priority": "high"
}'
Response (202 Accepted):
{
"execution_id": "exec-550e8400-e29b-41d4-a716-446655440000",
"tool_id": "nessus-001",
"status": "queued",
"created_at": "2024-11-07T18:35:00Z",
"started_at": null,
"estimated_completion": "2024-11-07T19:35:00Z",
"result_url": "/tools/nessus-001/executions/exec-550e8400-e29b-41d4-a716-446655440000"
}
GET /tools/{tool_id}/executions/{execution_id}
Get the status and results of a tool execution.
Method: GET
Endpoint: /tools/{tool_id}/executions/{execution_id}
Authentication: Required (API Key)
Path Parameters:
| Name | Type | Description |
|---|---|---|
| tool_id | string | Tool identifier |
| execution_id | string | Execution ID |
Request:
curl -X GET http://localhost:8000/api/tools/nessus-001/executions/exec-550e8400-e29b-41d4-a716-446655440000 \
-H "X-API-Key: your-api-key"
Response (200 OK) - Running:
{
"execution_id": "exec-550e8400-e29b-41d4-a716-446655440000",
"tool_id": "nessus-001",
"status": "running",
"created_at": "2024-11-07T18:35:00Z",
"started_at": "2024-11-07T18:35:05Z",
"progress_percent": 35,
"progress_message": "Scanning 192.168.1.50/32... (35% complete)",
"estimated_completion": "2024-11-07T19:35:00Z"
}
Response (200 OK) - Completed:
{
"execution_id": "exec-550e8400-e29b-41d4-a716-446655440000",
"tool_id": "nessus-001",
"status": "completed",
"created_at": "2024-11-07T18:35:00Z",
"started_at": "2024-11-07T18:35:05Z",
"completed_at": "2024-11-07T19:35:22Z",
"execution_time_seconds": 3617,
"results": {
"vulnerabilities_found": 45,
"critical": 3,
"high": 12,
"medium": 30,
"hosts_scanned": 256,
"services_discovered": 1250,
"compliance_issues": 8,
"assets_discovered": 156
},
"report_url": "/tools/nessus-001/executions/exec-550e8400-e29b-41d4-a716-446655440000/report",
"raw_output_url": "/tools/nessus-001/executions/exec-550e8400-e29b-41d4-a716-446655440000/raw"
}
DELETE /tools/{tool_id}/executions/{execution_id}
Cancel a running or pending tool execution.
Method: DELETE
Endpoint: /tools/{tool_id}/executions/{execution_id}
Authentication: Required (API Key)
Request:
curl -X DELETE http://localhost:8000/api/tools/nessus-001/executions/exec-550e8400-e29b-41d4-a716-446655440000 \
-H "X-API-Key: your-api-key"
Response (200 OK):
{
"message": "Execution cancelled successfully",
"execution_id": "exec-550e8400-e29b-41d4-a716-446655440000",
"status": "cancelled"
}
System Monitoring
GET /health
Service health check.
Method: GET
Endpoint: /health
Authentication: Not required
Request:
curl http://localhost:8000/api/health
Response (200 OK):
{
"status": "healthy",
"timestamp": "2024-11-07T18:40:00Z",
"version": "1.0.0",
"services": {
"database": "healthy",
"queue": "healthy",
"tools": [
{
"tool_id": "nessus-001",
"status": "healthy",
"last_check": "2024-11-07T18:39:30Z"
}
]
}
}
GET /system/info
Get system and service information.
Method: GET
Endpoint: /system/info
Authentication: Required (API Key)
Request:
curl -X GET http://localhost:8000/api/system/info \
-H "X-API-Key: your-api-key"
Response (200 OK):
{
"service": "Wildbox Tools Service",
"version": "1.0.0",
"uptime_seconds": 604800,
"tools_available": 52,
"tools_active": 52,
"tools_inactive": 2,
"total_executions": 1500,
"active_executions": 3,
"database_size_gb": 25.5,
"storage_available_gb": 450
}
GET /system/metrics
Get detailed performance metrics.
Method: GET
Endpoint: /system/metrics
Authentication: Required (API Key)
Query Parameters:
| Name | Type | Description |
|---|---|---|
| time_range | string | 1h, 24h, 7d, 30d (default: 24h) |
Request:
curl -X GET "http://localhost:8000/api/system/metrics?time_range=24h" \
-H "X-API-Key: your-api-key"
Response (200 OK):
{
"time_range": "24h",
"total_executions": 156,
"successful_executions": 150,
"failed_executions": 6,
"average_execution_time_seconds": 245,
"executions_by_tool": {
"nessus-001": 45,
"burpsuite-001": 38,
"metasploit-001": 22,
"qualys-001": 51
},
"executions_by_status": {
"completed": 150,
"failed": 6,
"cancelled": 0
},
"cpu_average_percent": 45.2,
"memory_average_percent": 62.3,
"disk_io_average_mbps": 12.5
}
Available Tools by Category
Vulnerability Scanners (15 tools)
Nessus, Qualys, OpenVAS, Rapid7 Nexpose, Acunetix, AppScan, Checkmarx, Fortify, Veracode, etc.
Network Analysis (12 tools)
Wireshark, tcpdump, nmap, Zeek, Suricata, Security Onion, etc.
Web Application Testing (10 tools)
Burp Suite, OWASP ZAP, Acunetix, Rapid7, AppScan, WebInspect, etc.
Threat Intelligence (8 tools)
Shodan, GreyNoise, Censys, AlienVault OTX, Recorded Future, etc.
Malware Analysis (6 tools)
Cuckoo Sandbox, ANY.RUN, Joe Sandbox, Intezer, VirusTotal API, etc.
Configuration Management (3 tools)
Lynis, OpenSCAP, Compliance Checker
Error Codes
| Code | Status | Description |
|---|---|---|
| 200 | OK | Request successful |
| 202 | Accepted | Tool execution submitted asynchronously |
| 400 | Bad Request | Invalid parameters or request body |
| 401 | Unauthorized | Missing or invalid API key |
| 404 | Not Found | Tool or execution not found |
| 409 | Conflict | Tool not available or in error state |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Service error |
Rate Limiting
The Tools Service enforces rate limits per API key:
- Standard API Keys: 100 requests/minute
- Premium API Keys: 1,000 requests/minute
Rate limit information is returned in response headers:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1730963100
Examples
Execute a Network Vulnerability Scan
# Get Nessus scanner info
curl -X GET http://localhost:8000/api/tools/nessus-001/info \
-H "X-API-Key: your-api-key" | jq '.'
# Execute full vulnerability scan
EXEC_ID=$(curl -s -X POST http://localhost:8000/api/tools/nessus-001/execute \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"parameters": {
"target": "192.168.0.0/16",
"scan_profile": "full"
},
"async_mode": true,
"priority": "high"
}' | jq -r '.execution_id')
echo "Execution started: $EXEC_ID"
# Monitor progress
while true; do
STATUS=$(curl -s -X GET "http://localhost:8000/api/tools/nessus-001/executions/$EXEC_ID" \
-H "X-API-Key: your-api-key" | jq '.')
STATE=$(echo "$STATUS" | jq -r '.status')
PROGRESS=$(echo "$STATUS" | jq -r '.progress_percent // "N/A"')
echo "Status: $STATE - Progress: $PROGRESS%"
if [ "$STATE" = "completed" ] || [ "$STATE" = "failed" ]; then
echo "$STATUS" | jq '.results'
break
fi
sleep 5
done
Execute Multiple Tools in Sequence
#!/bin/bash
TOOLS=("nessus-001" "burpsuite-001" "metasploit-001")
TARGET="192.168.1.1"
for tool in "${TOOLS[@]}"; do
echo "Executing $tool on $TARGET"
EXEC=$(curl -s -X POST "http://localhost:8000/api/tools/$tool/execute" \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d "{
\"parameters\": {
\"target\": \"$TARGET\"
},
\"async_mode\": true
}")
EXEC_ID=$(echo "$EXEC" | jq -r '.execution_id')
echo "Execution ID: $EXEC_ID"
sleep 2
done
Related Documentation
- Security Policy - Authentication requirements
- API Reference Hub - All service endpoints
- Guardian Service API - Asset management
- Responder Service API - Incident response