Headless operator client for AdaptixC2 teamserver — provides MCP tools for agent management, reconnaissance, command execution, filesystem operations, networking, reporting, and BOF extensions
Server provides 6 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-200 chars, within baseline range), and input schemas are present with type definitions. However, parameter descriptions are sparse or missing entirely (e.g., agent_info's 'agent_id' lacks format guidance; tag_agent's 'agent_ids' lacks parsing rules). Output schemas are undocumented, LLMs cannot predict response structure for chaining. Error handling is minimal; no recovery guidance or actionable error messages visible. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Naming is verb-first and clear (list_, get_, kill_, tag_), following baseline conventions. Composition is reasonable, each tool has one responsibility, but missing pagination on list_task_history (limit param present but no total_count or next_cursor documented). Security: no visible input validation, sanitization, or permission checks in tool code samples.
Get detailed information about a specific agent by ID. Accepts both internal a_id and GUI-visible a_crc (8-char hex).
Remove an agent session from the teamserver. This removes the C2 record — it does NOT kill the implant process.
List all active agents connected to the AdaptixC2 teamserver. Returns: OS, hostname, username, IP, process, sleep interval, elevation status.
List all active listeners on the teamserver.
Show execution history for a specific agent. Returns recent commands, their timestamps, statuses and outputs. Use this to avoid repeating commands if results are recent and valid.
Set a text tag on one or more agents for organisation. agent_ids: comma-separated list of agent IDs.
Output schemas completely undocumented. LLMs cannot predict response structure (field names, types, nesting) for downstream tool chaining or data extraction. E.g., list_agents returns 'OS, hostname, username, IP, process, sleep interval, elevation status' as prose, not a structured schema.
Parameter descriptions missing or incomplete. 'agent_id' in agent_info lacks format guidance (is it 'a_id' or 'a_crc'? what length?). 'agent_ids' in tag_agent lacks parsing rules (comma-separated, no spaces? quoted?). LLMs cannot reliably format inputs without explicit constraints.
No tool annotations despite clear risk levels. kill_agent (WRITE, destructive) and tag_agent (WRITE) lack destructiveHint/idempotentHint annotations. LLMs cannot distinguish safe retry-able calls from irreversible operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
No error handling or recovery guidance visible in tool definitions. No indication of what errors are retryable, user-fixable, or fatal. No actionable error messages (e.g., 'Agent not found. Try list_agents() to see available agents').
list_task_history accepts 'limit' but no pagination metadata documented. No 'total_count' or 'next_cursor' mentioned. Large result sets will blow context window; LLMs cannot fetch next page.