blitzstrike 1.0.82 → 1.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/README.md +24 -24
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/dist/index.js +51 -1
- package/docs/AUTONOMY.md +48 -136
- package/docs/usage.md +1 -1
- package/intelligence/retry_guidance.json +67 -0
- package/package.json +1 -1
- package/intelligence/ab_signals.json +0 -722
- package/intelligence/attack_chains.json +0 -666
- package/intelligence/awaiting_input_markers.json +0 -37
- package/intelligence/endpoint_patterns.json +0 -541
- package/intelligence/escalation_patterns.json +0 -224
- package/intelligence/file_extensions.json +0 -6
- package/intelligence/patterns.json +0 -437
- package/intelligence/refusal_markers.json +0 -35
- package/intelligence/scan_profiles.json +0 -40
- package/intelligence/skills.json +0 -1185
- package/intelligence/tools.json +0 -1292
- package/intelligence/tools_meta.json +0 -1247
- package/intelligence/unified_patterns.json +0 -2329
- package/intelligence/verification_patterns.json +0 -52
- package/intelligence/vuln_ontology.json +0 -189
- package/intelligence/waff_bypass.json +0 -677
package/intelligence/tools.json
DELETED
|
@@ -1,1292 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"type": "function",
|
|
4
|
-
"function": {
|
|
5
|
-
"name": "execute",
|
|
6
|
-
"description": "Execute a shell command inside the Kali Linux sandbox. Common recon tools are pre-installed (nmap, sqlmap, nuclei, ffuf, subfinder, httpx, etc.). Use this for any external binary. Examples: {\"command\": \"subfinder -d example.com -o output/subdomains.txt\"} or {\"command\": \"nmap -sV -p 1-1000 target\"}. Avoid interactive tools; prefer one-shot commands. Long-running tools may be terminated if they exceed per_tool_timeout_seconds.",
|
|
7
|
-
"parameters": {
|
|
8
|
-
"type": "object",
|
|
9
|
-
"properties": {
|
|
10
|
-
"command": {
|
|
11
|
-
"type": "string",
|
|
12
|
-
"description": "Shell command to run inside sandbox (executed via bash -c). Pipes are allowed; avoid interactive prompts."
|
|
13
|
-
},
|
|
14
|
-
"timeout": {
|
|
15
|
-
"type": "number",
|
|
16
|
-
"description": "Optional timeout in seconds (default 600). Maximum allowed is 3600."
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
"required": [
|
|
20
|
-
"command"
|
|
21
|
-
]
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"type": "function",
|
|
27
|
-
"function": {
|
|
28
|
-
"name": "advanced_fuzz",
|
|
29
|
-
"description": "Parameter fuzzing for web vulnerabilities. Tests for SQL injection, XSS, SSRF, IDOR, SSTI, mass assignment, and more. Can run Phase 2 advanced tests (cloud SSRF probes, GraphQL introspection, race conditions) when enabled. Target URL and parameters should be provided for meaningful results. Example: target=\"https://api.example.com/v1/users\", parameters=[\"id\",\"user_id\"], vuln_types=[\"sql_injection\",\"xss\"], method=\"GET\". Returns findings with severity, confidence, and evidence.",
|
|
30
|
-
"parameters": {
|
|
31
|
-
"type": "object",
|
|
32
|
-
"properties": {
|
|
33
|
-
"target": {
|
|
34
|
-
"type": "string",
|
|
35
|
-
"description": "Full URL including endpoint (e.g. https://target.com/api/v1/update)"
|
|
36
|
-
},
|
|
37
|
-
"parameters": {
|
|
38
|
-
"type": "array",
|
|
39
|
-
"items": {
|
|
40
|
-
"type": "string"
|
|
41
|
-
},
|
|
42
|
-
"description": "List of parameters to fuzz (e.g. ['id', 'user_id'])"
|
|
43
|
-
},
|
|
44
|
-
"method": {
|
|
45
|
-
"type": "string",
|
|
46
|
-
"description": "HTTP method (GET, POST)"
|
|
47
|
-
},
|
|
48
|
-
"vuln_types": {
|
|
49
|
-
"type": "array",
|
|
50
|
-
"items": {
|
|
51
|
-
"type": "string"
|
|
52
|
-
},
|
|
53
|
-
"description": "Vuln classes: sql_injection, xss, ssrf,idor,ssti,mass_assignment,lfi,rfi,command_injection,xpath_injection,ldap_injection,log_injection,response_splitting,host_header_injection,cached_objects,csrf"
|
|
54
|
-
},
|
|
55
|
-
"phase2": {
|
|
56
|
-
"type": "boolean",
|
|
57
|
-
"description": "Enable Phase 2 advanced tests (default true). Includes SSRF to 169.254.169.254, GraphQL introspection, race condition probing."
|
|
58
|
-
},
|
|
59
|
-
"ssrf_params": {
|
|
60
|
-
"type": "array",
|
|
61
|
-
"items": {
|
|
62
|
-
"type": "string"
|
|
63
|
-
},
|
|
64
|
-
"description": "List of parameters to test for SSRF with cloud metadata probes."
|
|
65
|
-
},
|
|
66
|
-
"graphql_endpoints": {
|
|
67
|
-
"type": "array",
|
|
68
|
-
"items": {
|
|
69
|
-
"type": "string"
|
|
70
|
-
},
|
|
71
|
-
"description": "GraphQL endpoint paths to test (e.g., ['/graphql', '/api/graphql'])."
|
|
72
|
-
},
|
|
73
|
-
"race_params": {
|
|
74
|
-
"type": "array",
|
|
75
|
-
"items": {
|
|
76
|
-
"type": "string"
|
|
77
|
-
},
|
|
78
|
-
"description": "Parameters to test for race conditions."
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
"required": [
|
|
82
|
-
"target",
|
|
83
|
-
"parameters"
|
|
84
|
-
]
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"type": "function",
|
|
90
|
-
"function": {
|
|
91
|
-
"name": "run_parallel_agents",
|
|
92
|
-
"description": "Launch multiple parallel AIRecon scout agents on multiple targets simultaneously, bounded by a concurrency semaphore.",
|
|
93
|
-
"parameters": {
|
|
94
|
-
"type": "object",
|
|
95
|
-
"properties": {
|
|
96
|
-
"targets": {
|
|
97
|
-
"type": "array",
|
|
98
|
-
"items": {
|
|
99
|
-
"type": "string"
|
|
100
|
-
},
|
|
101
|
-
"description": "List of targets/domains to scan in parallel."
|
|
102
|
-
},
|
|
103
|
-
"prompt": {
|
|
104
|
-
"type": "string",
|
|
105
|
-
"description": "The exact prompt/directive for the parallel agents to execute on each target."
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
"required": [
|
|
109
|
-
"targets",
|
|
110
|
-
"prompt"
|
|
111
|
-
]
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"type": "function",
|
|
117
|
-
"function": {
|
|
118
|
-
"name": "browser_action",
|
|
119
|
-
"description": "Control a Playwright-powered headless Chromium browser for navigation, DOM interaction, auth flows, logs, and evidence capture. Actions: launch, goto, click, type, scroll_down/up, back/forward, new_tab/switch_tab/close_tab/list_tabs, wait, execute_js (optional parallel across open tabs), double_click, hover, press_key, save_pdf, screenshot, view_source, get_console_logs, get_network_logs, login_form, handle_totp, save_auth_state, inject_cookies, oauth_authorize, check_auth_status, wait_for_element, solve_captcha. Notes: screenshot saves a PNG under workspace_root/screenshots and returns screenshot_path; save_pdf returns pdf_saved; execute_js returns js_result (truncated to ~5000 chars) with page state.",
|
|
120
|
-
"parameters": {
|
|
121
|
-
"type": "object",
|
|
122
|
-
"properties": {
|
|
123
|
-
"action": {
|
|
124
|
-
"type": "string",
|
|
125
|
-
"enum": [
|
|
126
|
-
"launch",
|
|
127
|
-
"goto",
|
|
128
|
-
"click",
|
|
129
|
-
"type",
|
|
130
|
-
"scroll_down",
|
|
131
|
-
"scroll_up",
|
|
132
|
-
"back",
|
|
133
|
-
"forward",
|
|
134
|
-
"new_tab",
|
|
135
|
-
"switch_tab",
|
|
136
|
-
"close_tab",
|
|
137
|
-
"wait",
|
|
138
|
-
"execute_js",
|
|
139
|
-
"double_click",
|
|
140
|
-
"hover",
|
|
141
|
-
"press_key",
|
|
142
|
-
"save_pdf",
|
|
143
|
-
"get_console_logs",
|
|
144
|
-
"get_network_logs",
|
|
145
|
-
"view_source",
|
|
146
|
-
"close",
|
|
147
|
-
"list_tabs",
|
|
148
|
-
"screenshot",
|
|
149
|
-
"login_form",
|
|
150
|
-
"handle_totp",
|
|
151
|
-
"save_auth_state",
|
|
152
|
-
"inject_cookies",
|
|
153
|
-
"oauth_authorize",
|
|
154
|
-
"check_auth_status",
|
|
155
|
-
"wait_for_element",
|
|
156
|
-
"solve_captcha"
|
|
157
|
-
],
|
|
158
|
-
"description": "The action to perform. Key actions: execute_js — run JS in page; use js_code; returns js_result + state; parallel=true runs across open tabs. save_pdf — export page as PDF to file_path (workspace-relative). screenshot — capture PNG to workspace_root/screenshots; returns screenshot_path. login_form — authenticate; handle_totp — TOTP; solve_captcha — auto-solve (captcha_type + sitekey). wait_for_element — dynamic wait. get_console_logs / get_network_logs — fetch logs. Full list: launch, goto, click, type, scroll_*, navigation, tab management (new_tab/switch_tab/close_tab/list_tabs), execute_js, save_pdf, screenshot, view_source, console/network logs, auth actions, wait_for_element, solve_captcha."
|
|
159
|
-
},
|
|
160
|
-
"url": {
|
|
161
|
-
"type": "string",
|
|
162
|
-
"description": "URL for launch/goto/new_tab/login_form/oauth_authorize."
|
|
163
|
-
},
|
|
164
|
-
"coordinate": {
|
|
165
|
-
"type": "string",
|
|
166
|
-
"description": "x,y coordinates for click/hover."
|
|
167
|
-
},
|
|
168
|
-
"text": {
|
|
169
|
-
"type": "string",
|
|
170
|
-
"description": "Text to type."
|
|
171
|
-
},
|
|
172
|
-
"tab_id": {
|
|
173
|
-
"type": "string",
|
|
174
|
-
"description": "Tab ID to target."
|
|
175
|
-
},
|
|
176
|
-
"js_code": {
|
|
177
|
-
"type": "string",
|
|
178
|
-
"description": "JavaScript code to execute (REQUIRED for execute_js action). Result is truncated to ~5000 chars. Examples: 'document.querySelectorAll(\"a\").length', 'localStorage.getItem(\"token\")', 'JSON.stringify(performance.getEntries())'. Result includes page state (url, title) and js_result field."
|
|
179
|
-
},
|
|
180
|
-
"parallel": {
|
|
181
|
-
"type": "boolean",
|
|
182
|
-
"description": "For execute_js only: when true, run the same JS code concurrently across ALL open tabs. Useful for gathering comparative data or extracting same info from multiple pages. Do not set tab_id when using parallel=true. Returns parallel_results dict mapping tab_id to individual results."
|
|
183
|
-
},
|
|
184
|
-
"duration": {
|
|
185
|
-
"type": "number",
|
|
186
|
-
"description": "Duration to wait in seconds."
|
|
187
|
-
},
|
|
188
|
-
"wait": {
|
|
189
|
-
"type": "number",
|
|
190
|
-
"description": "Alias for duration (seconds)."
|
|
191
|
-
},
|
|
192
|
-
"key": {
|
|
193
|
-
"type": "string",
|
|
194
|
-
"description": "Key to press."
|
|
195
|
-
},
|
|
196
|
-
"file_path": {
|
|
197
|
-
"type": "string",
|
|
198
|
-
"description": "Path to save PDF (REQUIRED for save_pdf action, should end with .pdf). Path is relative to workspace root. Saves rendered page to PDF. Returns pdf_saved path in response state."
|
|
199
|
-
},
|
|
200
|
-
"clear": {
|
|
201
|
-
"type": "boolean",
|
|
202
|
-
"description": "Clear logs after fetching."
|
|
203
|
-
},
|
|
204
|
-
"username": {
|
|
205
|
-
"type": "string",
|
|
206
|
-
"description": "Username or email for login_form action."
|
|
207
|
-
},
|
|
208
|
-
"password": {
|
|
209
|
-
"type": "string",
|
|
210
|
-
"description": "Password for login_form action."
|
|
211
|
-
},
|
|
212
|
-
"username_selector": {
|
|
213
|
-
"type": "string",
|
|
214
|
-
"description": "CSS selector for username/email field in login_form (comma-separated fallbacks). Default covers: input[type=email], input[name=username/user/email/login/mail], input[autocomplete=username/email], #username/#email/#user/#login. Override when default fails — first call view_source to find the correct selector."
|
|
215
|
-
},
|
|
216
|
-
"password_selector": {
|
|
217
|
-
"type": "string",
|
|
218
|
-
"description": "CSS selector for password field in login_form. Default: input[type='password']. Override for non-standard forms."
|
|
219
|
-
},
|
|
220
|
-
"submit_selector": {
|
|
221
|
-
"type": "string",
|
|
222
|
-
"description": "CSS selector for submit button in login_form (comma-separated fallbacks). Default tries: button[type=submit], input[type=submit], button:has-text('Log in/Login/Sign in/Continue/Next/Submit'). Override when default fails."
|
|
223
|
-
},
|
|
224
|
-
"totp_secret": {
|
|
225
|
-
"type": "string",
|
|
226
|
-
"description": "Base32 TOTP secret for handle_totp action. Generates a fresh RFC 6238 code automatically. Example: 'JBSWY3DPEHPK3PXP'. If rejected, call handle_totp again immediately (new 30s window). For 8-digit codes use totp_digits=8. For 60s period use totp_period=60."
|
|
227
|
-
},
|
|
228
|
-
"multi_step": {
|
|
229
|
-
"type": "boolean",
|
|
230
|
-
"description": "For login_form: set true for username-first flows (Google, GitHub, Microsoft, enterprise SSO) where password field only appears AFTER submitting the username. Workflow: fill username → click Next → wait for password field → fill password → submit."
|
|
231
|
-
},
|
|
232
|
-
"totp_digits": {
|
|
233
|
-
"type": "integer",
|
|
234
|
-
"description": "For handle_totp: number of digits in the TOTP code. Default: 6 (standard RFC 6238). Use 8 for enterprise apps that require 8-digit codes."
|
|
235
|
-
},
|
|
236
|
-
"totp_period": {
|
|
237
|
-
"type": "integer",
|
|
238
|
-
"description": "For handle_totp: TOTP time step in seconds. Default: 30 (standard). Use 60 for older/non-standard apps with 60-second windows."
|
|
239
|
-
},
|
|
240
|
-
"wait_selector": {
|
|
241
|
-
"type": "string",
|
|
242
|
-
"description": "For wait_for_element: CSS selector to wait for. Example: 'div.dashboard', '#logout-button', '.error-message'."
|
|
243
|
-
},
|
|
244
|
-
"wait_timeout": {
|
|
245
|
-
"type": "number",
|
|
246
|
-
"description": "For wait_for_element: timeout in seconds. Default: 10."
|
|
247
|
-
},
|
|
248
|
-
"wait_state": {
|
|
249
|
-
"type": "string",
|
|
250
|
-
"enum": [
|
|
251
|
-
"visible",
|
|
252
|
-
"hidden",
|
|
253
|
-
"attached",
|
|
254
|
-
"detached"
|
|
255
|
-
],
|
|
256
|
-
"description": "For wait_for_element: element state to wait for. Default: 'visible'."
|
|
257
|
-
},
|
|
258
|
-
"captcha_type": {
|
|
259
|
-
"type": "string",
|
|
260
|
-
"enum": [
|
|
261
|
-
"recaptcha",
|
|
262
|
-
"hcaptcha",
|
|
263
|
-
"cloudflare_turnstile",
|
|
264
|
-
"unknown"
|
|
265
|
-
],
|
|
266
|
-
"description": "For solve_captcha: type of CAPTCHA. Choose 'recaptcha' for Google reCAPTCHA, 'hcaptcha' for hCaptcha, 'cloudflare_turnstile' for Cloudflare Turnstile, or 'unknown' if undetermined."
|
|
267
|
-
},
|
|
268
|
-
"sitekey": {
|
|
269
|
-
"type": "string",
|
|
270
|
-
"description": "For solve_captcha: the sitekey (public key) identifier for the CAPTCHA challenge. Usually found in data-sitekey attribute or challenge parameters."
|
|
271
|
-
},
|
|
272
|
-
"cookies": {
|
|
273
|
-
"type": "array",
|
|
274
|
-
"items": {
|
|
275
|
-
"type": "object"
|
|
276
|
-
},
|
|
277
|
-
"description": "Array of cookie objects [{name, value, domain, path}] for inject_cookies action."
|
|
278
|
-
},
|
|
279
|
-
"oauth_url": {
|
|
280
|
-
"type": "string",
|
|
281
|
-
"description": "Alias for url (legacy). If provided, treated as url for oauth_authorize."
|
|
282
|
-
},
|
|
283
|
-
"callback_prefix": {
|
|
284
|
-
"type": "string",
|
|
285
|
-
"description": "Expected callback URL prefix for oauth_authorize to detect redirect completion."
|
|
286
|
-
}
|
|
287
|
-
},
|
|
288
|
-
"required": [
|
|
289
|
-
"action"
|
|
290
|
-
]
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
},
|
|
294
|
-
{
|
|
295
|
-
"type": "function",
|
|
296
|
-
"function": {
|
|
297
|
-
"name": "request_user_input",
|
|
298
|
-
"description": "Pause the agent and request user-provided input (e.g., CAPTCHA, TOTP/OTP, password, or manual confirmation) before continuing.",
|
|
299
|
-
"parameters": {
|
|
300
|
-
"type": "object",
|
|
301
|
-
"properties": {
|
|
302
|
-
"prompt": {
|
|
303
|
-
"type": "string",
|
|
304
|
-
"description": "Clear instruction to the user explaining exactly what to enter. Example: 'Please enter the 6-digit TOTP code from your authenticator app for target.com' or 'Solve the CAPTCHA shown in screenshot_20240101_120000.png and enter the text here'."
|
|
305
|
-
},
|
|
306
|
-
"input_type": {
|
|
307
|
-
"type": "string",
|
|
308
|
-
"enum": [
|
|
309
|
-
"text",
|
|
310
|
-
"totp",
|
|
311
|
-
"captcha",
|
|
312
|
-
"password",
|
|
313
|
-
"otp"
|
|
314
|
-
],
|
|
315
|
-
"description": "Type of expected input. 'totp' = 6-digit time-based code, 'captcha' = CAPTCHA solution text, 'otp' = one-time password (SMS/email), 'password' = sensitive credential, 'text' = anything else."
|
|
316
|
-
},
|
|
317
|
-
"timeout_seconds": {
|
|
318
|
-
"type": "number",
|
|
319
|
-
"description": "How long to wait for user input in seconds. Default: 300 (5 minutes). Use shorter timeout for time-sensitive inputs like TOTP."
|
|
320
|
-
}
|
|
321
|
-
},
|
|
322
|
-
"required": [
|
|
323
|
-
"prompt"
|
|
324
|
-
]
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
"type": "function",
|
|
330
|
-
"function": {
|
|
331
|
-
"name": "create_file",
|
|
332
|
-
"description": "Create a new file in the workspace. Overwrites if exists.",
|
|
333
|
-
"parameters": {
|
|
334
|
-
"type": "object",
|
|
335
|
-
"properties": {
|
|
336
|
-
"path": {
|
|
337
|
-
"type": "string",
|
|
338
|
-
"description": "File path relative to the workspace root (e.g. 'output/results.txt'). Do NOT include a leading 'workspace/' prefix — it is stripped automatically."
|
|
339
|
-
},
|
|
340
|
-
"content": {
|
|
341
|
-
"type": "string",
|
|
342
|
-
"description": "Content to write to the file."
|
|
343
|
-
}
|
|
344
|
-
},
|
|
345
|
-
"required": [
|
|
346
|
-
"path",
|
|
347
|
-
"content"
|
|
348
|
-
]
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
},
|
|
352
|
-
{
|
|
353
|
-
"type": "function",
|
|
354
|
-
"function": {
|
|
355
|
-
"name": "read_file",
|
|
356
|
-
"description": "Read a file from the workspace with optional offset/limit pagination for large outputs.",
|
|
357
|
-
"parameters": {
|
|
358
|
-
"type": "object",
|
|
359
|
-
"properties": {
|
|
360
|
-
"path": {
|
|
361
|
-
"type": "string",
|
|
362
|
-
"description": "File path relative to the workspace root (e.g. 'output/nmap.txt'). Do NOT include a leading 'workspace/' prefix — it is stripped automatically."
|
|
363
|
-
},
|
|
364
|
-
"offset": {
|
|
365
|
-
"type": "integer",
|
|
366
|
-
"description": "Line number to start reading from (0-indexed). Default: 0 (start of file)."
|
|
367
|
-
},
|
|
368
|
-
"limit": {
|
|
369
|
-
"type": "integer",
|
|
370
|
-
"description": "Maximum number of lines to return. Default: 500. Use smaller values for very large files."
|
|
371
|
-
}
|
|
372
|
-
},
|
|
373
|
-
"required": [
|
|
374
|
-
"path"
|
|
375
|
-
]
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
},
|
|
379
|
-
{
|
|
380
|
-
"type": "function",
|
|
381
|
-
"function": {
|
|
382
|
-
"name": "list_files",
|
|
383
|
-
"description": "List files and directories in the workspace with metadata; prefer this over execute ls.",
|
|
384
|
-
"parameters": {
|
|
385
|
-
"type": "object",
|
|
386
|
-
"properties": {
|
|
387
|
-
"path": {
|
|
388
|
-
"type": "string",
|
|
389
|
-
"description": "Directory path to list (relative to workspace, e.g. 'output/', 'tools/', or leave empty for the target root). Default: target root."
|
|
390
|
-
}
|
|
391
|
-
},
|
|
392
|
-
"required": []
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
},
|
|
396
|
-
{
|
|
397
|
-
"type": "function",
|
|
398
|
-
"function": {
|
|
399
|
-
"name": "web_search",
|
|
400
|
-
"description": "Search the web via SearXNG (DuckDuckGo fallback). Supports full Google dork operators when SearXNG is configured: site:, filetype:, inurl:, intitle:, ext:, -inurl:, cache:. Use for: (1) CVE/PoC research — 'CVE-2024-1234 exploit PoC github'; (2) Google dorking for sensitive exposure — 'site:target.com filetype:env', 'site:target.com inurl:admin', 'site:target.com ext:sql', 'intitle:index.of target.com backup'; (3) technology fingerprinting — 'site:target.com powered by X'; (4) credential/config leaks — 'site:target.com ext:yaml password', 'site:target.com filetype:log'. Combine operators for precision: 'site:target.com (filetype:pdf OR filetype:xls) confidential'. DuckDuckGo fallback supports basic operators but not wildcard site:*.",
|
|
401
|
-
"parameters": {
|
|
402
|
-
"type": "object",
|
|
403
|
-
"properties": {
|
|
404
|
-
"query": {
|
|
405
|
-
"type": "string",
|
|
406
|
-
"description": "Search query. Supports dork operators: site:, filetype:, inurl:, intitle:, ext:, -inurl:. Examples: 'site:target.com filetype:env', 'inurl:admin site:target.com', 'CVE-2024-1234 PoC exploit'."
|
|
407
|
-
},
|
|
408
|
-
"max_results": {
|
|
409
|
-
"type": "integer",
|
|
410
|
-
"description": "Maximum results to return (default: 10, max: 50). Use 20-30 for thorough dorking campaigns."
|
|
411
|
-
}
|
|
412
|
-
},
|
|
413
|
-
"required": [
|
|
414
|
-
"query"
|
|
415
|
-
]
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
},
|
|
419
|
-
{
|
|
420
|
-
"type": "function",
|
|
421
|
-
"function": {
|
|
422
|
-
"name": "create_vulnerability_report",
|
|
423
|
-
"description": "Create a FINAL confirmed vulnerability report under the active target's vulnerabilities/ directory. Call this only after you have reproducible PoC evidence and concrete impact. Never use it for hypotheses, raw observations, methodology, or todo items; use create_note for those. Required fields are: title, description, target, poc_description, and poc_script_code. The target can be a URL/host or a local file/folder reference tied to the active workspace target. Optional fields include impact, technical_analysis, remediation_steps, endpoint, method, flag, cve, suggested_fix, and the 8 CVSS base metrics.",
|
|
424
|
-
"parameters": {
|
|
425
|
-
"type": "object",
|
|
426
|
-
"properties": {
|
|
427
|
-
"title": {
|
|
428
|
-
"type": "string",
|
|
429
|
-
"description": "Concise finding title, e.g. 'SQL Injection in /login' or 'Path Traversal in archive extractor'."
|
|
430
|
-
},
|
|
431
|
-
"target": {
|
|
432
|
-
"type": "string",
|
|
433
|
-
"description": "Affected target. Use URL/host for remote findings, or a local file/folder/workspace path when analyzing code or uploaded artifacts."
|
|
434
|
-
},
|
|
435
|
-
"description": {
|
|
436
|
-
"type": "string",
|
|
437
|
-
"description": "Clear vulnerability summary tied to observed behavior and evidence."
|
|
438
|
-
},
|
|
439
|
-
"poc_description": {
|
|
440
|
-
"type": "string",
|
|
441
|
-
"description": "How the proof of concept works and what behavior confirmed the issue."
|
|
442
|
-
},
|
|
443
|
-
"poc_script_code": {
|
|
444
|
-
"type": "string",
|
|
445
|
-
"description": "Actual exploit, payload, code snippet, or reproduction command. This is mandatory."
|
|
446
|
-
},
|
|
447
|
-
"impact": {
|
|
448
|
-
"type": "string",
|
|
449
|
-
"description": "Concrete attacker outcome: unauthorized data access, privilege change, code execution, service impact, etc."
|
|
450
|
-
},
|
|
451
|
-
"technical_analysis": {
|
|
452
|
-
"type": "string",
|
|
453
|
-
"description": "Deeper root-cause or exploitability analysis."
|
|
454
|
-
},
|
|
455
|
-
"remediation_steps": {
|
|
456
|
-
"type": "string",
|
|
457
|
-
"description": "Specific remediation guidance."
|
|
458
|
-
},
|
|
459
|
-
"attack_vector": {
|
|
460
|
-
"type": "string",
|
|
461
|
-
"description": "Optional CVSS AV metric: N, A, L, or P."
|
|
462
|
-
},
|
|
463
|
-
"attack_complexity": {
|
|
464
|
-
"type": "string",
|
|
465
|
-
"description": "Optional CVSS AC metric: L or H."
|
|
466
|
-
},
|
|
467
|
-
"privileges_required": {
|
|
468
|
-
"type": "string",
|
|
469
|
-
"description": "Optional CVSS PR metric: N, L, or H."
|
|
470
|
-
},
|
|
471
|
-
"user_interaction": {
|
|
472
|
-
"type": "string",
|
|
473
|
-
"description": "Optional CVSS UI metric: N or R."
|
|
474
|
-
},
|
|
475
|
-
"scope": {
|
|
476
|
-
"type": "string",
|
|
477
|
-
"description": "Optional CVSS S metric: U or C."
|
|
478
|
-
},
|
|
479
|
-
"confidentiality": {
|
|
480
|
-
"type": "string",
|
|
481
|
-
"description": "Optional CVSS C metric: N, L, or H."
|
|
482
|
-
},
|
|
483
|
-
"integrity": {
|
|
484
|
-
"type": "string",
|
|
485
|
-
"description": "Optional CVSS I metric: N, L, or H."
|
|
486
|
-
},
|
|
487
|
-
"availability": {
|
|
488
|
-
"type": "string",
|
|
489
|
-
"description": "Optional CVSS A metric: N, L, or H."
|
|
490
|
-
},
|
|
491
|
-
"endpoint": {
|
|
492
|
-
"type": "string",
|
|
493
|
-
"description": "Optional affected endpoint, route, or file path."
|
|
494
|
-
},
|
|
495
|
-
"method": {
|
|
496
|
-
"type": "string",
|
|
497
|
-
"description": "Optional HTTP method or protocol used in the PoC."
|
|
498
|
-
},
|
|
499
|
-
"cve": {
|
|
500
|
-
"type": "string",
|
|
501
|
-
"description": "Optional CVE ID if directly applicable."
|
|
502
|
-
},
|
|
503
|
-
"suggested_fix": {
|
|
504
|
-
"type": "string",
|
|
505
|
-
"description": "Optional code/config patch or exact fix snippet."
|
|
506
|
-
},
|
|
507
|
-
"flag": {
|
|
508
|
-
"type": "string",
|
|
509
|
-
"description": "Optional flag value if captured during CTF/exercise."
|
|
510
|
-
},
|
|
511
|
-
"cwe": {
|
|
512
|
-
"type": "string",
|
|
513
|
-
"description": "Optional CWE identifier(s) for the weakness class, e.g. 'CWE-79' or 'CWE-89'."
|
|
514
|
-
},
|
|
515
|
-
"owasp": {
|
|
516
|
-
"type": "string",
|
|
517
|
-
"description": "Optional OWASP category, e.g. 'A03:2021-Injection' or 'API1:2023 - BOLA'."
|
|
518
|
-
}
|
|
519
|
-
},
|
|
520
|
-
"required": [
|
|
521
|
-
"title",
|
|
522
|
-
"target",
|
|
523
|
-
"description",
|
|
524
|
-
"poc_description",
|
|
525
|
-
"poc_script_code"
|
|
526
|
-
]
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
},
|
|
530
|
-
{
|
|
531
|
-
"type": "function",
|
|
532
|
-
"function": {
|
|
533
|
-
"name": "quick_fuzz",
|
|
534
|
-
"description": "Run a fast fuzz scan on a URL using common payloads (SQLi, XSS, traversal, SSTI). If params are omitted, it uses a small default list (q, search, id, page).",
|
|
535
|
-
"parameters": {
|
|
536
|
-
"type": "object",
|
|
537
|
-
"properties": {
|
|
538
|
-
"target": {
|
|
539
|
-
"type": "string",
|
|
540
|
-
"description": "Full URL to fuzz (e.g. https://target.com/search?q=test)"
|
|
541
|
-
},
|
|
542
|
-
"params": {
|
|
543
|
-
"type": "array",
|
|
544
|
-
"items": {
|
|
545
|
-
"type": "string"
|
|
546
|
-
},
|
|
547
|
-
"description": "Optional list of parameters to fuzz. If omitted, defaults to common params: q, search, id, page."
|
|
548
|
-
}
|
|
549
|
-
},
|
|
550
|
-
"required": [
|
|
551
|
-
"target"
|
|
552
|
-
]
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
},
|
|
556
|
-
{
|
|
557
|
-
"type": "function",
|
|
558
|
-
"function": {
|
|
559
|
-
"name": "deep_fuzz",
|
|
560
|
-
"description": "Run thorough interactive fuzzing with chain discovery after initial hints from quick_fuzz or advanced_fuzz.",
|
|
561
|
-
"parameters": {
|
|
562
|
-
"type": "object",
|
|
563
|
-
"properties": {
|
|
564
|
-
"target": {
|
|
565
|
-
"type": "string",
|
|
566
|
-
"description": "Full URL to fuzz (e.g. https://target.com/api/v1/search)"
|
|
567
|
-
},
|
|
568
|
-
"params": {
|
|
569
|
-
"type": "array",
|
|
570
|
-
"items": {
|
|
571
|
-
"type": "string"
|
|
572
|
-
},
|
|
573
|
-
"description": "Optional list of parameters to fuzz. If omitted, auto-discovers high-priority targets."
|
|
574
|
-
},
|
|
575
|
-
"vuln_types": {
|
|
576
|
-
"type": "array",
|
|
577
|
-
"items": {
|
|
578
|
-
"type": "string"
|
|
579
|
-
},
|
|
580
|
-
"description": "Optional vulnerability types to test. If omitted, tests all available types."
|
|
581
|
-
}
|
|
582
|
-
},
|
|
583
|
-
"required": [
|
|
584
|
-
"target"
|
|
585
|
-
]
|
|
586
|
-
}
|
|
587
|
-
}
|
|
588
|
-
},
|
|
589
|
-
{
|
|
590
|
-
"type": "function",
|
|
591
|
-
"function": {
|
|
592
|
-
"name": "generate_wordlist",
|
|
593
|
-
"description": "Generate a targeted payload/parameter wordlist from internal data and save it to the workspace for ffuf/feroxbuster.",
|
|
594
|
-
"parameters": {
|
|
595
|
-
"type": "object",
|
|
596
|
-
"properties": {
|
|
597
|
-
"output_file": {
|
|
598
|
-
"type": "string",
|
|
599
|
-
"description": "Filename to save the wordlist (e.g. 'sqli_payloads.txt'). Saved inside output/ folder."
|
|
600
|
-
},
|
|
601
|
-
"vuln_types": {
|
|
602
|
-
"type": "array",
|
|
603
|
-
"items": {
|
|
604
|
-
"type": "string"
|
|
605
|
-
},
|
|
606
|
-
"description": "Filter payload categories to include. Available: sql_injection, xss, command_injection, path_traversal, ssti, xxe, ssrf, idor, mass_assignment, parameter_pollution, jwt, graphql, race_condition. Omit to include ALL categories."
|
|
607
|
-
},
|
|
608
|
-
"max_combinations": {
|
|
609
|
-
"type": "integer",
|
|
610
|
-
"description": "Cap on parameter name mutation variants appended after payloads (default: 300, max: 1000)."
|
|
611
|
-
}
|
|
612
|
-
},
|
|
613
|
-
"required": [
|
|
614
|
-
"output_file"
|
|
615
|
-
]
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
},
|
|
619
|
-
{
|
|
620
|
-
"type": "function",
|
|
621
|
-
"function": {
|
|
622
|
-
"name": "caido_list_requests",
|
|
623
|
-
"description": "Query Caido history with HTTPQL filters and return request IDs, methods, paths, and statuses.",
|
|
624
|
-
"parameters": {
|
|
625
|
-
"type": "object",
|
|
626
|
-
"properties": {
|
|
627
|
-
"filter": {
|
|
628
|
-
"type": "string",
|
|
629
|
-
"description": "HTTPQL filter expression (e.g. 'host.eq:\"target.com\" and method.eq:\"POST\"')"
|
|
630
|
-
},
|
|
631
|
-
"limit": {
|
|
632
|
-
"type": "integer",
|
|
633
|
-
"description": "Max results to return (default 50, max 200)"
|
|
634
|
-
}
|
|
635
|
-
},
|
|
636
|
-
"required": [
|
|
637
|
-
"filter"
|
|
638
|
-
]
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
},
|
|
642
|
-
{
|
|
643
|
-
"type": "function",
|
|
644
|
-
"function": {
|
|
645
|
-
"name": "caido_send_request",
|
|
646
|
-
"description": "Replay or modify HTTP requests through Caido using a request_id or raw HTTP payload.",
|
|
647
|
-
"parameters": {
|
|
648
|
-
"type": "object",
|
|
649
|
-
"properties": {
|
|
650
|
-
"request_id": {
|
|
651
|
-
"type": "string",
|
|
652
|
-
"description": "Caido request ID to replay (from caido_list_requests). Optional if raw_http provided."
|
|
653
|
-
},
|
|
654
|
-
"raw_http": {
|
|
655
|
-
"type": "string",
|
|
656
|
-
"description": "Full plain-text raw HTTP request to send (e.g. 'GET /api/user?id=2 HTTP/1.1\\r\\nHost: target.com\\r\\n\\r\\n'). Do NOT base64-encode — executor handles encoding."
|
|
657
|
-
},
|
|
658
|
-
"host": {
|
|
659
|
-
"type": "string",
|
|
660
|
-
"description": "Target host (e.g. 'target.com')"
|
|
661
|
-
},
|
|
662
|
-
"port": {
|
|
663
|
-
"type": "integer",
|
|
664
|
-
"description": "Target port (default: 443 for TLS, 80 for plain)"
|
|
665
|
-
},
|
|
666
|
-
"is_tls": {
|
|
667
|
-
"type": "boolean",
|
|
668
|
-
"description": "Use TLS/HTTPS (default: true)"
|
|
669
|
-
}
|
|
670
|
-
},
|
|
671
|
-
"required": [
|
|
672
|
-
"host"
|
|
673
|
-
]
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
},
|
|
677
|
-
{
|
|
678
|
-
"type": "function",
|
|
679
|
-
"function": {
|
|
680
|
-
"name": "caido_automate",
|
|
681
|
-
"description": "Start a Caido Automate fuzzing session using §FUZZ§ markers to define injection points.",
|
|
682
|
-
"parameters": {
|
|
683
|
-
"type": "object",
|
|
684
|
-
"properties": {
|
|
685
|
-
"raw_http": {
|
|
686
|
-
"type": "string",
|
|
687
|
-
"description": "Full raw HTTP request with §FUZZ§ markers at injection points (e.g. 'POST /login HTTP/1.1\\r\\nHost: target.com\\r\\n\\r\\n{\"user\":\"admin\",\"pass\":\"§FUZZ§\"}')"
|
|
688
|
-
},
|
|
689
|
-
"host": {
|
|
690
|
-
"type": "string",
|
|
691
|
-
"description": "Target host (e.g. 'target.com')"
|
|
692
|
-
},
|
|
693
|
-
"port": {
|
|
694
|
-
"type": "integer",
|
|
695
|
-
"description": "Target port (default: 443)"
|
|
696
|
-
},
|
|
697
|
-
"is_tls": {
|
|
698
|
-
"type": "boolean",
|
|
699
|
-
"description": "Use TLS/HTTPS (default: true)"
|
|
700
|
-
},
|
|
701
|
-
"payloads": {
|
|
702
|
-
"type": "array",
|
|
703
|
-
"items": {
|
|
704
|
-
"type": "string"
|
|
705
|
-
},
|
|
706
|
-
"minItems": 1,
|
|
707
|
-
"maxItems": 10000,
|
|
708
|
-
"description": "List of payloads to inject at §FUZZ§ positions (e.g. [\"' OR 1=1--\", \"admin\", \"<script>alert(1)</script>\"])"
|
|
709
|
-
},
|
|
710
|
-
"workers": {
|
|
711
|
-
"type": "integer",
|
|
712
|
-
"description": "Concurrent workers for fuzzing (default: 10)"
|
|
713
|
-
}
|
|
714
|
-
},
|
|
715
|
-
"required": [
|
|
716
|
-
"raw_http",
|
|
717
|
-
"host",
|
|
718
|
-
"payloads"
|
|
719
|
-
]
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
},
|
|
723
|
-
{
|
|
724
|
-
"type": "function",
|
|
725
|
-
"function": {
|
|
726
|
-
"name": "caido_get_findings",
|
|
727
|
-
"description": "Fetch findings/annotations stored in Caido, including title, description, reporter, and related request data.",
|
|
728
|
-
"parameters": {
|
|
729
|
-
"type": "object",
|
|
730
|
-
"properties": {
|
|
731
|
-
"limit": {
|
|
732
|
-
"type": "integer",
|
|
733
|
-
"description": "Max findings to return (default: 50)"
|
|
734
|
-
}
|
|
735
|
-
},
|
|
736
|
-
"required": []
|
|
737
|
-
}
|
|
738
|
-
}
|
|
739
|
-
},
|
|
740
|
-
{
|
|
741
|
-
"type": "function",
|
|
742
|
-
"function": {
|
|
743
|
-
"name": "caido_intercept",
|
|
744
|
-
"description": "Control Caido intercept: check status, pause/resume capture, list queued messages, forward (optionally modified), or drop.",
|
|
745
|
-
"parameters": {
|
|
746
|
-
"type": "object",
|
|
747
|
-
"properties": {
|
|
748
|
-
"action": {
|
|
749
|
-
"type": "string",
|
|
750
|
-
"enum": [
|
|
751
|
-
"status",
|
|
752
|
-
"pause",
|
|
753
|
-
"resume",
|
|
754
|
-
"list",
|
|
755
|
-
"forward",
|
|
756
|
-
"drop"
|
|
757
|
-
],
|
|
758
|
-
"description": "Action to perform: status (get intercept state: RUNNING/PAUSED), pause (stop capturing), resume (start capturing), list (show queued messages), forward (forward a queued message), drop (discard a queued message)"
|
|
759
|
-
},
|
|
760
|
-
"message_id": {
|
|
761
|
-
"type": "string",
|
|
762
|
-
"description": "ID of the intercept message to forward or drop (from list action)"
|
|
763
|
-
},
|
|
764
|
-
"raw_http": {
|
|
765
|
-
"type": "string",
|
|
766
|
-
"description": "Modified raw HTTP request to send when forwarding (optional — omit to forward unchanged)"
|
|
767
|
-
}
|
|
768
|
-
},
|
|
769
|
-
"required": [
|
|
770
|
-
"action"
|
|
771
|
-
]
|
|
772
|
-
}
|
|
773
|
-
}
|
|
774
|
-
},
|
|
775
|
-
{
|
|
776
|
-
"type": "function",
|
|
777
|
-
"function": {
|
|
778
|
-
"name": "caido_sitemap",
|
|
779
|
-
"description": "Browse Caido sitemap nodes (hosts/directories/endpoints); pass parent_id to drill into child nodes.",
|
|
780
|
-
"parameters": {
|
|
781
|
-
"type": "object",
|
|
782
|
-
"properties": {
|
|
783
|
-
"parent_id": {
|
|
784
|
-
"type": "string",
|
|
785
|
-
"description": "Node ID to list children for (from a previous caido_sitemap call). Omit to list root hosts."
|
|
786
|
-
}
|
|
787
|
-
},
|
|
788
|
-
"required": []
|
|
789
|
-
}
|
|
790
|
-
}
|
|
791
|
-
},
|
|
792
|
-
{
|
|
793
|
-
"type": "function",
|
|
794
|
-
"function": {
|
|
795
|
-
"name": "caido_set_scope",
|
|
796
|
-
"description": "Set Caido proxy scope to focus capture and testing on specific hosts. Allowlisted hosts are captured; denylisted hosts are excluded.",
|
|
797
|
-
"parameters": {
|
|
798
|
-
"type": "object",
|
|
799
|
-
"properties": {
|
|
800
|
-
"allowlist": {
|
|
801
|
-
"type": "array",
|
|
802
|
-
"items": {
|
|
803
|
-
"type": "string"
|
|
804
|
-
},
|
|
805
|
-
"description": "Hosts to include in scope (e.g. ['target.com', '*.target.com', 'api.target.com'])"
|
|
806
|
-
},
|
|
807
|
-
"denylist": {
|
|
808
|
-
"type": "array",
|
|
809
|
-
"items": {
|
|
810
|
-
"type": "string"
|
|
811
|
-
},
|
|
812
|
-
"description": "Hosts to exclude from scope (optional)"
|
|
813
|
-
}
|
|
814
|
-
},
|
|
815
|
-
"required": [
|
|
816
|
-
"allowlist"
|
|
817
|
-
]
|
|
818
|
-
}
|
|
819
|
-
}
|
|
820
|
-
},
|
|
821
|
-
{
|
|
822
|
-
"type": "function",
|
|
823
|
-
"function": {
|
|
824
|
-
"name": "spawn_agent",
|
|
825
|
-
"description": "Spawn a specialist subagent for deep investigation of a specific finding/endpoint and merge results back to the session.",
|
|
826
|
-
"parameters": {
|
|
827
|
-
"type": "object",
|
|
828
|
-
"properties": {
|
|
829
|
-
"task": {
|
|
830
|
-
"type": "string",
|
|
831
|
-
"description": "Specific investigation task for the subagent (e.g. 'Test /api/login for SQL injection, parameter: username')"
|
|
832
|
-
},
|
|
833
|
-
"target": {
|
|
834
|
-
"type": "string",
|
|
835
|
-
"description": "Target URL or domain for the subagent (e.g. 'https://target.com/api/login')"
|
|
836
|
-
},
|
|
837
|
-
"specialist": {
|
|
838
|
-
"type": "string",
|
|
839
|
-
"enum": [
|
|
840
|
-
"sqli",
|
|
841
|
-
"xss",
|
|
842
|
-
"ssrf",
|
|
843
|
-
"lfi",
|
|
844
|
-
"recon",
|
|
845
|
-
"exploit",
|
|
846
|
-
"analyzer",
|
|
847
|
-
"reporter"
|
|
848
|
-
],
|
|
849
|
-
"description": "Type of specialist: sqli (SQL injection), xss (Cross-site scripting), ssrf (Server-side request forgery), lfi (Local file inclusion/path traversal), recon (Reconnaissance only), exploit (General exploitation), analyzer (Code/config analysis), reporter (Report generation)"
|
|
850
|
-
}
|
|
851
|
-
},
|
|
852
|
-
"required": [
|
|
853
|
-
"task",
|
|
854
|
-
"target",
|
|
855
|
-
"specialist"
|
|
856
|
-
]
|
|
857
|
-
}
|
|
858
|
-
}
|
|
859
|
-
},
|
|
860
|
-
{
|
|
861
|
-
"type": "function",
|
|
862
|
-
"function": {
|
|
863
|
-
"name": "schemathesis_fuzz",
|
|
864
|
-
"description": "Run schema-aware API fuzzing with Schemathesis against OpenAPI/Swagger specs to detect crashes, auth bypasses, and injections.",
|
|
865
|
-
"parameters": {
|
|
866
|
-
"type": "object",
|
|
867
|
-
"properties": {
|
|
868
|
-
"schema_url": {
|
|
869
|
-
"type": "string",
|
|
870
|
-
"description": "URL or file path to the OpenAPI/Swagger spec (e.g. 'https://target.com/openapi.json', 'https://target.com/swagger.yaml', '/workspace/target/output/api-spec.json'). Common paths to try: /openapi.json, /swagger.json, /api/docs, /api-docs, /v1/openapi.json."
|
|
871
|
-
},
|
|
872
|
-
"base_url": {
|
|
873
|
-
"type": "string",
|
|
874
|
-
"description": "Base URL of the API to test against (e.g. 'https://target.com/api/v1'). If omitted, uses the server URL from the schema."
|
|
875
|
-
},
|
|
876
|
-
"auth_header": {
|
|
877
|
-
"type": "string",
|
|
878
|
-
"description": "Authorization header value to include in every request (e.g. 'Bearer eyJhbGc...' or 'Basic dXNlcjpwYXNz'). Use session auth_tokens if available."
|
|
879
|
-
},
|
|
880
|
-
"checks": {
|
|
881
|
-
"type": "array",
|
|
882
|
-
"items": {
|
|
883
|
-
"type": "string"
|
|
884
|
-
},
|
|
885
|
-
"description": "Schemathesis checks to run. Available: not_a_server_error, status_code_conformance, content_type_conformance, response_schema_conformance, negative_data_rejection. Omit for all checks."
|
|
886
|
-
},
|
|
887
|
-
"max_examples": {
|
|
888
|
-
"type": "integer",
|
|
889
|
-
"description": "Max test cases per endpoint (default: 30). Increase for deeper coverage, decrease for speed."
|
|
890
|
-
}
|
|
891
|
-
},
|
|
892
|
-
"required": [
|
|
893
|
-
"schema_url"
|
|
894
|
-
]
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
},
|
|
898
|
-
{
|
|
899
|
-
"type": "function",
|
|
900
|
-
"function": {
|
|
901
|
-
"name": "code_analysis",
|
|
902
|
-
"description": "Run Semgrep static analysis on source code in the sandbox to detect security issues (OWASP/CWE patterns).",
|
|
903
|
-
"parameters": {
|
|
904
|
-
"type": "object",
|
|
905
|
-
"properties": {
|
|
906
|
-
"target_path": {
|
|
907
|
-
"type": "string",
|
|
908
|
-
"description": "Path to scan inside the workspace (e.g. 'output/repo-clone', '.' for current target root). Relative to the target workspace directory."
|
|
909
|
-
},
|
|
910
|
-
"rules": {
|
|
911
|
-
"type": "array",
|
|
912
|
-
"items": {
|
|
913
|
-
"type": "string"
|
|
914
|
-
},
|
|
915
|
-
"description": "Semgrep rule sets to use (e.g. ['p/security-audit', 'p/owasp-top-ten']). If omitted, uses all default security rules."
|
|
916
|
-
},
|
|
917
|
-
"languages": {
|
|
918
|
-
"type": "array",
|
|
919
|
-
"items": {
|
|
920
|
-
"type": "string"
|
|
921
|
-
},
|
|
922
|
-
"description": "Filter to specific languages (e.g. ['python', 'javascript', 'java']). If omitted, scans all detected languages."
|
|
923
|
-
}
|
|
924
|
-
},
|
|
925
|
-
"required": [
|
|
926
|
-
"target_path"
|
|
927
|
-
]
|
|
928
|
-
}
|
|
929
|
-
}
|
|
930
|
-
},
|
|
931
|
-
{
|
|
932
|
-
"type": "function",
|
|
933
|
-
"function": {
|
|
934
|
-
"name": "http_observe",
|
|
935
|
-
"description": "Send raw HTTP requests from the sandbox and return full response details; supports baseline save and response diffing.",
|
|
936
|
-
"parameters": {
|
|
937
|
-
"type": "object",
|
|
938
|
-
"properties": {
|
|
939
|
-
"url": {
|
|
940
|
-
"type": "string",
|
|
941
|
-
"description": "Full URL to request (e.g. https://example.com/api/user?id=1)"
|
|
942
|
-
},
|
|
943
|
-
"method": {
|
|
944
|
-
"type": "string",
|
|
945
|
-
"description": "HTTP method: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS. Default: GET"
|
|
946
|
-
},
|
|
947
|
-
"headers": {
|
|
948
|
-
"type": "object",
|
|
949
|
-
"description": "Additional request headers as key-value pairs (e.g. {\"Authorization\": \"Bearer token\", \"Content-Type\": \"application/json\"})"
|
|
950
|
-
},
|
|
951
|
-
"body": {
|
|
952
|
-
"type": "string",
|
|
953
|
-
"description": "Request body for POST/PUT/PATCH requests"
|
|
954
|
-
},
|
|
955
|
-
"save_as": {
|
|
956
|
-
"type": "string",
|
|
957
|
-
"description": "Name to store this response as a baseline (e.g. 'baseline_normal', 'baseline_auth'). Stored in session for later diffing."
|
|
958
|
-
},
|
|
959
|
-
"compare_to": {
|
|
960
|
-
"type": "string",
|
|
961
|
-
"description": "Name of a previously saved baseline to diff against. Shows what changed between the baseline and this response."
|
|
962
|
-
},
|
|
963
|
-
"follow_redirects": {
|
|
964
|
-
"type": "boolean",
|
|
965
|
-
"description": "Whether to follow redirects. Default: false — keep false to observe Location header for redirect-based vulnerabilities (open redirect, SSRF via redirect)."
|
|
966
|
-
},
|
|
967
|
-
"timeout": {
|
|
968
|
-
"type": "integer",
|
|
969
|
-
"description": "Request timeout in seconds. Default: 15"
|
|
970
|
-
}
|
|
971
|
-
},
|
|
972
|
-
"required": [
|
|
973
|
-
"url"
|
|
974
|
-
]
|
|
975
|
-
}
|
|
976
|
-
}
|
|
977
|
-
},
|
|
978
|
-
{
|
|
979
|
-
"type": "function",
|
|
980
|
-
"function": {
|
|
981
|
-
"name": "record_hypothesis",
|
|
982
|
-
"description": "Create or update a security hypothesis with status (pending/testing/confirmed/refuted) and optional evidence.",
|
|
983
|
-
"parameters": {
|
|
984
|
-
"type": "object",
|
|
985
|
-
"properties": {
|
|
986
|
-
"claim": {
|
|
987
|
-
"type": "string",
|
|
988
|
-
"description": "The security hypothesis claim. E.g. 'The /api/user endpoint is vulnerable to IDOR via user_id parameter' or 'Login form is vulnerable to SQLi in username field'."
|
|
989
|
-
},
|
|
990
|
-
"test_plan": {
|
|
991
|
-
"type": "string",
|
|
992
|
-
"description": "What specific test/payload to run to verify or refute this hypothesis. E.g. 'Send GET /api/user?user_id=2 while authenticated as user 1. If response returns user 2 data, IDOR is confirmed.'"
|
|
993
|
-
},
|
|
994
|
-
"status": {
|
|
995
|
-
"type": "string",
|
|
996
|
-
"enum": [
|
|
997
|
-
"pending",
|
|
998
|
-
"testing",
|
|
999
|
-
"confirmed",
|
|
1000
|
-
"refuted"
|
|
1001
|
-
],
|
|
1002
|
-
"description": "Current status: 'pending'=not yet tested, 'testing'=currently verifying, 'confirmed'=vulnerability proven, 'refuted'=tested and not vulnerable."
|
|
1003
|
-
},
|
|
1004
|
-
"hypothesis_id": {
|
|
1005
|
-
"type": "string",
|
|
1006
|
-
"description": "ID of an existing hypothesis to update (e.g. 'h_5_2'). If omitted, a new hypothesis is created."
|
|
1007
|
-
},
|
|
1008
|
-
"evidence": {
|
|
1009
|
-
"type": "string",
|
|
1010
|
-
"description": "Evidence supporting or refuting the hypothesis. Include HTTP response snippets, diff results, or tool output that proves/disproves the claim."
|
|
1011
|
-
},
|
|
1012
|
-
"phase": {
|
|
1013
|
-
"type": "string",
|
|
1014
|
-
"description": "Pipeline phase where this hypothesis was formed (RECON/ANALYSIS/EXPLOIT). Default: current phase."
|
|
1015
|
-
}
|
|
1016
|
-
},
|
|
1017
|
-
"required": [
|
|
1018
|
-
"claim",
|
|
1019
|
-
"status"
|
|
1020
|
-
]
|
|
1021
|
-
}
|
|
1022
|
-
}
|
|
1023
|
-
},
|
|
1024
|
-
{
|
|
1025
|
-
"type": "function",
|
|
1026
|
-
"function": {
|
|
1027
|
-
"name": "load_skill",
|
|
1028
|
-
"description": "Dynamically load a skill file (vulnerability methodology, technology guide, or protocol deep-dive) into the current session. Skills enhance analysis capabilities for specific contexts. Use when you discover a new technology or vulnerability type that requires specialized knowledge.",
|
|
1029
|
-
"parameters": {
|
|
1030
|
-
"type": "object",
|
|
1031
|
-
"properties": {
|
|
1032
|
-
"skills": {
|
|
1033
|
-
"type": "string",
|
|
1034
|
-
"description": "Comma-separated list of skill file paths relative to the skills/ directory. Examples: 'vulnerabilities/sql_injection.md', 'technologies/react.md', 'vulnerabilities/xss.md'. Use read_file to explore available skills if uncertain. Paths are case-sensitive."
|
|
1035
|
-
},
|
|
1036
|
-
"replace_skills": {
|
|
1037
|
-
"type": "boolean",
|
|
1038
|
-
"description": "If true, replace currently loaded skills with these ones. If false (default), add to existing skills. Use replace=true when switching to a completely different assessment type."
|
|
1039
|
-
}
|
|
1040
|
-
},
|
|
1041
|
-
"required": [
|
|
1042
|
-
"skills"
|
|
1043
|
-
]
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
|
-
},
|
|
1047
|
-
{
|
|
1048
|
-
"type": "function",
|
|
1049
|
-
"function": {
|
|
1050
|
-
"name": "python_session",
|
|
1051
|
-
"description": "Start or continue a lightweight Python exec/eval session with state persistence. Variables, functions, and imports persist across calls. Pre-imports: os, sys, json, re, base64, hashlib, random, datetime, pathlib.Path, urllib.parse helpers; requests is available only if installed. Session auto-terminates after 300s of inactivity. Parameters: session_id (optional, defaults to 'default'), code (required). Returns: output (stdout/stderr), result (last expression if any), session_state (variables dict), error (if any).",
|
|
1052
|
-
"parameters": {
|
|
1053
|
-
"type": "object",
|
|
1054
|
-
"properties": {
|
|
1055
|
-
"session_id": {
|
|
1056
|
-
"type": "string",
|
|
1057
|
-
"description": "Optional session identifier. Use named sessions to maintain separate contexts. Default: 'default'."
|
|
1058
|
-
},
|
|
1059
|
-
"code": {
|
|
1060
|
-
"type": "string",
|
|
1061
|
-
"description": "Python code to execute. Can be multiple lines. Use print() for output. Last expression's value is returned in 'result'. Example: \"import requests; resp = requests.get('https://example.com'); print(resp.status_code); resp.text[:200]\""
|
|
1062
|
-
}
|
|
1063
|
-
},
|
|
1064
|
-
"required": [
|
|
1065
|
-
"code"
|
|
1066
|
-
]
|
|
1067
|
-
}
|
|
1068
|
-
}
|
|
1069
|
-
},
|
|
1070
|
-
{
|
|
1071
|
-
"type": "function",
|
|
1072
|
-
"function": {
|
|
1073
|
-
"name": "edit_file",
|
|
1074
|
-
"description": "Perform a surgical text replacement in a file using exact string matching. More precise than create_file for code modifications. Specify old_str to replace exactly that content with new_str. The match must be exact (including whitespace). If multiple matches exist, only the first is replaced. Returns: success, lines_modified, total_occurrences, preview. Use read_file first to get exact content. Parameters: path (required, workspace-relative), old_str (required), new_str (required). Example: {\"path\": \"output/exploit.py\", \"old_str\": \"def exploit():\\n return 0\", \"new_str\": \"def exploit():\\n # Fixed\\n return 1\"}",
|
|
1075
|
-
"parameters": {
|
|
1076
|
-
"type": "object",
|
|
1077
|
-
"properties": {
|
|
1078
|
-
"path": {
|
|
1079
|
-
"type": "string",
|
|
1080
|
-
"description": "Path to file (workspace-relative, e.g., \"output/script.py\"). Must exist."
|
|
1081
|
-
},
|
|
1082
|
-
"old_str": {
|
|
1083
|
-
"type": "string",
|
|
1084
|
-
"description": "Exact text to find and replace. Must match exactly including newlines and indentation. Get the exact string by reading the file first."
|
|
1085
|
-
},
|
|
1086
|
-
"new_str": {
|
|
1087
|
-
"type": "string",
|
|
1088
|
-
"description": "Replacement text. Should maintain consistent formatting."
|
|
1089
|
-
}
|
|
1090
|
-
},
|
|
1091
|
-
"required": [
|
|
1092
|
-
"path",
|
|
1093
|
-
"old_str",
|
|
1094
|
-
"new_str"
|
|
1095
|
-
]
|
|
1096
|
-
}
|
|
1097
|
-
}
|
|
1098
|
-
},
|
|
1099
|
-
{
|
|
1100
|
-
"type": "function",
|
|
1101
|
-
"function": {
|
|
1102
|
-
"name": "think",
|
|
1103
|
-
"description": "Explicitly record a reasoning step, hypothesis, or analytical thought. This captures your thinking process for later review, debugging, and transparency. Thoughts are saved to the session and written to output/thoughts_<phase>.log. Use this before critical decisions, when forming hypotheses, or when analyzing complex evidence. Parameters: thought (required) - your reasoning, hypothesis, or analysis. Optional: category (\"hypothesis\", \"analysis\", \"decision\", \"question\", \"insight\"), confidence (0.0-1.0 if supported). Example: {\"thought\": \"The SQL error suggests a MySQL backend. Union-based injection likely works. Testing with '1' UNION SELECT NULL--\"}",
|
|
1104
|
-
"parameters": {
|
|
1105
|
-
"type": "object",
|
|
1106
|
-
"properties": {
|
|
1107
|
-
"thought": {
|
|
1108
|
-
"type": "string",
|
|
1109
|
-
"description": "Your reasoning, hypothesis, or analytical observation. Be specific and actionable."
|
|
1110
|
-
},
|
|
1111
|
-
"category": {
|
|
1112
|
-
"type": "string",
|
|
1113
|
-
"enum": [
|
|
1114
|
-
"hypothesis",
|
|
1115
|
-
"analysis",
|
|
1116
|
-
"decision",
|
|
1117
|
-
"question",
|
|
1118
|
-
"insight",
|
|
1119
|
-
"observation"
|
|
1120
|
-
],
|
|
1121
|
-
"description": "Type of thought. Helps organize thinking trace."
|
|
1122
|
-
},
|
|
1123
|
-
"confidence": {
|
|
1124
|
-
"type": "number",
|
|
1125
|
-
"description": "Confidence level 0.0-1.0 if your thought is a hypothesis or analysis. Optional."
|
|
1126
|
-
}
|
|
1127
|
-
},
|
|
1128
|
-
"required": [
|
|
1129
|
-
"thought"
|
|
1130
|
-
]
|
|
1131
|
-
}
|
|
1132
|
-
}
|
|
1133
|
-
},
|
|
1134
|
-
{
|
|
1135
|
-
"type": "function",
|
|
1136
|
-
"function": {
|
|
1137
|
-
"name": "create_note",
|
|
1138
|
-
"description": "Create a structured WORKING note with category, tags, and optional metadata. Notes persist across the session and can be searched later. Categories: vulnerability, methodology, finding, question, plan, observation, todo. Use notes for hypotheses, raw observations, task tracking, methodology, and draft evidence. Notes are NOT final vulnerability reports and do NOT write to vulnerabilities/; use create_vulnerability_report for confirmed findings. Parameters: category (required), title (required), content (required), tags (optional array). Returns note_id and status. Example: {\"category\": \"vulnerability\", \"title\": \"SQL Injection in login\", \"content\": \"Union-based SQLi on username field...\", \"tags\": [\"sqli\", \"critical\", \"auth\"]}",
|
|
1139
|
-
"parameters": {
|
|
1140
|
-
"type": "object",
|
|
1141
|
-
"properties": {
|
|
1142
|
-
"category": {
|
|
1143
|
-
"type": "string",
|
|
1144
|
-
"enum": [
|
|
1145
|
-
"vulnerability",
|
|
1146
|
-
"methodology",
|
|
1147
|
-
"finding",
|
|
1148
|
-
"question",
|
|
1149
|
-
"plan",
|
|
1150
|
-
"observation",
|
|
1151
|
-
"todo"
|
|
1152
|
-
],
|
|
1153
|
-
"description": "Note category for organization."
|
|
1154
|
-
},
|
|
1155
|
-
"title": {
|
|
1156
|
-
"type": "string",
|
|
1157
|
-
"description": "Concise title summarizing the note."
|
|
1158
|
-
},
|
|
1159
|
-
"content": {
|
|
1160
|
-
"type": "string",
|
|
1161
|
-
"description": "Full note content. Supports markdown formatting."
|
|
1162
|
-
},
|
|
1163
|
-
"tags": {
|
|
1164
|
-
"type": "array",
|
|
1165
|
-
"items": {
|
|
1166
|
-
"type": "string"
|
|
1167
|
-
},
|
|
1168
|
-
"description": "Optional tags for filtering (e.g., [\"sqli\", \"critical\", \"auth\"])."
|
|
1169
|
-
}
|
|
1170
|
-
},
|
|
1171
|
-
"required": [
|
|
1172
|
-
"category",
|
|
1173
|
-
"title",
|
|
1174
|
-
"content"
|
|
1175
|
-
]
|
|
1176
|
-
}
|
|
1177
|
-
}
|
|
1178
|
-
},
|
|
1179
|
-
{
|
|
1180
|
-
"type": "function",
|
|
1181
|
-
"function": {
|
|
1182
|
-
"name": "list_notes",
|
|
1183
|
-
"description": "List all notes with optional filtering by category or tag. Returns note metadata (id, title, category, tags, created_at) without full content. Use to browse or find notes. Parameters: category (optional filter), tag (optional filter), limit (default 50). Example: {\"category\": \"vulnerability\"} or {\"tag\": \"critical\"}",
|
|
1184
|
-
"parameters": {
|
|
1185
|
-
"type": "object",
|
|
1186
|
-
"properties": {
|
|
1187
|
-
"category": {
|
|
1188
|
-
"type": "string",
|
|
1189
|
-
"description": "Filter by category."
|
|
1190
|
-
},
|
|
1191
|
-
"tag": {
|
|
1192
|
-
"type": "string",
|
|
1193
|
-
"description": "Filter by tag."
|
|
1194
|
-
},
|
|
1195
|
-
"limit": {
|
|
1196
|
-
"type": "integer",
|
|
1197
|
-
"description": "Maximum number of notes to return (default 50)."
|
|
1198
|
-
}
|
|
1199
|
-
}
|
|
1200
|
-
}
|
|
1201
|
-
}
|
|
1202
|
-
},
|
|
1203
|
-
{
|
|
1204
|
-
"type": "function",
|
|
1205
|
-
"function": {
|
|
1206
|
-
"name": "export_notes_wiki",
|
|
1207
|
-
"description": "Export all notes to a single wiki markdown file for documentation. Useful at the end of engagement to generate organized report appendix. Parameters: output_path (optional, default: current target's \"notes/wiki.md\"). Returns export status and path. Example: {\"output_path\": \"output/wiki_notes.md\"}",
|
|
1208
|
-
"parameters": {
|
|
1209
|
-
"type": "object",
|
|
1210
|
-
"properties": {
|
|
1211
|
-
"output_path": {
|
|
1212
|
-
"type": "string",
|
|
1213
|
-
"description": "Output file path (workspace-relative). Default: current target's notes/wiki.md"
|
|
1214
|
-
}
|
|
1215
|
-
}
|
|
1216
|
-
}
|
|
1217
|
-
}
|
|
1218
|
-
},
|
|
1219
|
-
{
|
|
1220
|
-
"type": "function",
|
|
1221
|
-
"function": {
|
|
1222
|
-
"name": "search_notes",
|
|
1223
|
-
"description": "Full-text search across all notes. Returns matching notes with snippets showing context. Parameters: query (required string), category (optional filter), limit (default 20). Use to find specific information previously documented. Example: {\"query\": \"SQL injection\", \"category\": \"vulnerability\"}",
|
|
1224
|
-
"parameters": {
|
|
1225
|
-
"type": "object",
|
|
1226
|
-
"properties": {
|
|
1227
|
-
"query": {
|
|
1228
|
-
"type": "string",
|
|
1229
|
-
"description": "Search query (case-insensitive substring match)."
|
|
1230
|
-
},
|
|
1231
|
-
"category": {
|
|
1232
|
-
"type": "string",
|
|
1233
|
-
"description": "Optional category filter."
|
|
1234
|
-
},
|
|
1235
|
-
"limit": {
|
|
1236
|
-
"type": "integer",
|
|
1237
|
-
"description": "Maximum results (default 20)."
|
|
1238
|
-
}
|
|
1239
|
-
},
|
|
1240
|
-
"required": [
|
|
1241
|
-
"query"
|
|
1242
|
-
]
|
|
1243
|
-
}
|
|
1244
|
-
}
|
|
1245
|
-
},
|
|
1246
|
-
{
|
|
1247
|
-
"type": "function",
|
|
1248
|
-
"function": {
|
|
1249
|
-
"name": "dataset_search",
|
|
1250
|
-
"description": "Search the local security knowledge base (installed via airecon-dataset). Retrieves relevant Q&A pairs, techniques, payloads, and CVE knowledge from locally indexed HuggingFace datasets. Use when you need reference knowledge about: specific vulnerability classes, exploit techniques, CVE details, CTF techniques, bug bounty methodology, or payload examples. Example: {\"query\": \"SQL injection bypass WAF\", \"limit\": 3} or {\"query\": \"SSRF cloud metadata\", \"category\": \"vulnerability\"}. Returns matching knowledge entries from the local dataset index.",
|
|
1251
|
-
"parameters": {
|
|
1252
|
-
"type": "object",
|
|
1253
|
-
"properties": {
|
|
1254
|
-
"query": {
|
|
1255
|
-
"type": "string",
|
|
1256
|
-
"description": "Search query — use specific technical terms for best results (e.g. 'XSS filter bypass', 'IDOR privilege escalation', 'CVE-2021-44228 log4j')."
|
|
1257
|
-
},
|
|
1258
|
-
"category": {
|
|
1259
|
-
"type": "string",
|
|
1260
|
-
"description": "Optional filter by category: 'vulnerability', 'bug-bounty', 'ctf', 'pentest', 'general', 'custom'."
|
|
1261
|
-
},
|
|
1262
|
-
"limit": {
|
|
1263
|
-
"type": "integer",
|
|
1264
|
-
"description": "Maximum results to return (default 5, max 20)."
|
|
1265
|
-
}
|
|
1266
|
-
},
|
|
1267
|
-
"required": [
|
|
1268
|
-
"query"
|
|
1269
|
-
]
|
|
1270
|
-
}
|
|
1271
|
-
}
|
|
1272
|
-
},
|
|
1273
|
-
{
|
|
1274
|
-
"type": "function",
|
|
1275
|
-
"function": {
|
|
1276
|
-
"name": "read_note",
|
|
1277
|
-
"description": "Retrieve the full content of a specific note by ID. Use after listing or searching notes to view complete details. Parameters: note_id (required). Returns the full note object with title, category, content, tags, timestamps. Example: {\"note_id\": \"note_20260406_143022_a1b2c3d4\"}",
|
|
1278
|
-
"parameters": {
|
|
1279
|
-
"type": "object",
|
|
1280
|
-
"properties": {
|
|
1281
|
-
"note_id": {
|
|
1282
|
-
"type": "string",
|
|
1283
|
-
"description": "Unique note identifier (from create_note, list_notes, or search_notes results)."
|
|
1284
|
-
}
|
|
1285
|
-
},
|
|
1286
|
-
"required": [
|
|
1287
|
-
"note_id"
|
|
1288
|
-
]
|
|
1289
|
-
}
|
|
1290
|
-
}
|
|
1291
|
-
}
|
|
1292
|
-
]
|