Skip to main content
Glama

AFL++ MCP server

Model Context Protocol (MCP) server for AFL++.

This repo includes an AFLplusplus checkout (git submodule update --init with --recursive if you need AFL++ optional mode submodules) and exposes an agent-friendly API for:

  • creating fuzzing workspaces,

  • instrumenting targets,

  • corpus import/minimization,

  • harness preflight (dry run / showmap),

  • starting/stopping AFL++ jobs,

  • polling structured status and triaging findings,

  • other stuff

Install

Build

npm install
npm run build

Install in Codex CLI

Build first, then register the MCP server with Codex CLI:

codex mcp add aflpp --env AFLPP_MCP_ROOT="$PWD" -- node "$PWD/dist/index.js"

Run via stdio

node dist/index.js

Environment variables

  • AFLPP_MCP_ROOT (default: current working directory)

  • AFLPP_DIR (default: $AFLPP_MCP_ROOT/AFLplusplus) – must be inside AFLPP_MCP_ROOT

Other MCP client configs

Claude Desktop

Add to your mcpServers config (adjust paths):

{
  "mcpServers": {
    "aflpp": {
      "command": "node",
      "args": ["/home/kevinv/aflpp-mcp/dist/index.js"],
      "env": {
        "AFLPP_MCP_ROOT": "/home/kevinv/aflpp-mcp"
      }
    }
  }
}

Related MCP server: Azure AI Foundry MCP Server

How to use

MCP prompts

  • aflpp-agent-workflow: high-level end-to-end workflow (build -> corpus -> preflight -> fuzz -> triage).

  • aflpp-harness-workplan: harness-first workflow (usage -> LLVMFuzzerTestOneInput harness -> genesis corpus -> CMPLOG/ASAN/vanilla builds -> launch commands).

MCP resources

  • aflpp://config: server configuration (workspace root, limits, allowlist).

  • aflpp://docs/quickstart: some workflow notes.

  • aflpp://docs/fuzzing_in_depth: AFL++'s fuzzing_in_depth.md

  • aflpp://docs/cmplog: AFL++'s instrumentation/README.cmplog.md

  • aflpp://docs/env_variables: AFL++'s docs/env_variables.md

  • aflpp://workspace/{name}/tree: high-level workspace tree

  • aflpp://job/{job_name}/latest_status: latest parsed status snapshot for a job

  • aflpp://campaign/{campaign_name}/latest_status: latest parsed status snapshot for a campaign

MCP tools

  • aflpp.list_tools: List AFL++ MCP tools and their short descriptions.

  • aflpp.help: Get detailed help for a tool (schema + description).

  • aflpp.version: Get AFL++ and server version information.

  • aflpp.init_workspace: Create a workspace under workspaces/<name> with standard subdirectories for inputs, outputs, targets, logs, repros, and reports.

  • aflpp.detect_build_system: Detect a likely build system for a project path (heuristic).

  • aflpp.build_instrumented: Build a target with AFL++ compiler wrappers (and optional sanitizer profiles + build-time knobs) and store the artifact under the workspace targets/ directory.

  • aflpp.build_cmplog_variant: Build a CMPLOG-instrumented variant (AFL_LLVM_CMPLOG=1) and store the artifact under the workspace targets/ directory.

  • aflpp.import_corpus: Import a seed corpus from a file or directory into workspaces/<ws>/in/<corpus_name>.

  • aflpp.list_corpus: Summarize a corpus directory (file count and total size).

  • aflpp.list_builtin_dictionaries: List AFL++ builtin dictionaries shipped in AFLplusplus/dictionaries.

  • aflpp.attach_dictionary: Attach a dictionary file to a job name (stored as a job config to be used by aflpp.start_fuzz).

  • aflpp.dry_run: Run a short harness validation directly against the target (not afl-fuzz) to check input mode, stability, timeouts, and basic performance.

  • aflpp.showmap: Run afl-showmap for a single testcase and return a summary of the trace.

  • aflpp.coverage_summary: Measure corpus coverage using afl-showmap -C on an AFL++ output directory (best-effort parsing).

  • aflpp.analyze_testcase: Run afl-analyze on a testcase to identify critical input regions.

  • aflpp.preflight_checks: Run lightweight preflight checks before starting afl-fuzz (core_pattern, CPU scaling, corpus non-empty).

  • aflpp.start_fuzz: Start an afl-fuzz job in the workspace (non-blocking; supports common afl-fuzz knobs + allowlisted env overrides).

  • aflpp.start_fuzz_cluster: Start a multi-instance afl-fuzz campaign (master + secondary instances; supports per-instance overrides).

  • aflpp.stop_fuzz: Stop a running afl-fuzz job by PID (SIGTERM then SIGKILL).

  • aflpp.status: Get job status by parsing fuzzer_stats and queue/crashes/hangs counts (with deltas since last call).

  • aflpp.campaign_summary: Summarize a multi-instance campaign by parsing fuzzer_stats for each instance directory.

  • aflpp.whatsup: Run afl-whatsup on an AFL++ output directory.

  • aflpp.generate_progress_plot: Generate an AFL++ progress plot for a job or campaign (wraps afl-plot).

  • aflpp.list_findings: List crash and hang findings with stable IDs and paths.

  • aflpp.repro_crash: Reproduce a finding by running the target command directly with the testcase and write a repro bundle under repros/.

  • aflpp.crash_report: Write a crash report for a finding (dedup signature + repro info + sanitizer frames if present).

  • aflpp.casr_report: Generate clustered crash reports using casr-afl (if installed).

  • aflpp.minimize_corpus: Minimize a corpus using afl-cmin and store it as a new corpus directory in the workspace.

  • aflpp.minimize_testcase: Minimize a single testcase using afl-tmin and store the minimized testcase under repros/.

  • aflpp.suggest_fuzz_cluster_mix: Suggest a multi-core campaign mix (instance_overrides) for aflpp.start_fuzz_cluster.

Available Tools

30 tools
aflpp.analyze_testcaseC

Run afl-analyze on a testcase to identify critical input regions.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
target_cmdYes
timeout_msNo
mem_limit_mbNo
testcase_pathYes
input_file_pathNo
overall_timeout_msNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavior. It only states that afl-analyze is run on a testcase; it does not mention side effects, output format, required files, or whether the operation is read-only or can modify the workspace. This is a notable lack of transparency for a tool that executes an external utility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It is front-loaded with the action and purpose. However, given the tool's 7-parameter complexity, the extreme brevity borders on under-specification, though this is more a completeness issue than a conciseness one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters, no annotations, no output schema, and no parameter descriptions, the single-sentence description is insufficient. It does not explain prerequisites (e.g., initialized workspace, built target), expected output, or how this analysis differs from similar tools. The context is too thin for an agent to confidently invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the 7 parameters. It does not clarify ambiguous parameters like 'target_cmd' (array) or the difference between 'testcase_path' and 'input_file_path'. The description adds no meaning beyond the schema's parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Run afl-analyze') on a specific resource ('a testcase') with a clear goal ('identify critical input regions'). It is clear and unambiguous, but does not differentiate from sibling tools like aflpp.showmap or aflpp.minimize_testcase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'to identify critical input regions' implies when this tool should be used, but there is no explicit guidance on when to choose it over alternatives, no prerequisites, and no exclusions. Usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.attach_dictionaryA

Attach a dictionary file to a job name (stored as a job config to be used by start_fuzz).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_nameYes
dict_pathYes
workspaceYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the operation stores configuration rather than starting a fuzz run, which is an important behavioral detail. It does not mention overwrite behavior, validation of dict_path, or prerequisites like workspace existence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that conveys the core purpose and storage behavior without unnecessary words. It is appropriately concise for a simple configuration tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and undocumented parameters, the description leaves significant gaps. It explains the high-level purpose but omits parameter guidance, return behavior, and edge-case warnings, making it inadequate for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description provides no explanation of workspace, dict_path, or job_name. The agent receives no guidance on what these parameters mean or how to construct valid values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'attach' and clearly identifies the resource (dictionary file) and destination (job name). It also distinguishes itself from execution tools like start_fuzz by noting the dictionary is stored as a job config for later use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the tool stores a job config 'to be used by start_fuzz,' implying it is a prerequisite configuration step. However, it does not explicitly mention alternatives or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.build_cmplog_variantA

Build a CMPLOG-instrumented variant by setting AFL_LLVM_CMPLOG=1 during compilation (LLVM mode) and copy the artifact into the workspace targets/ directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
build_cmdYes
workspaceYes
timeout_msNo
target_nameYes
project_pathYes
build_optionsNo
artifact_relpathYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses key behaviors: setting an environment variable, requiring LLVM mode, and copying the artifact to a specific directory. This gives agents a solid understanding of the tool's actions, though it doesn't detail potential overwrites or prerequisite checks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that is front-loaded with the purpose and includes the key mechanism. Every word adds value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 7 parameters and a nested build_options object, the description is minimal and does not explain when to use the tool, what output to expect, or how parameters interact. The lack of annotation and output schema amplifies the need for more context, which is not provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not explain individual parameters such as artifact_relpath, build_options, or timeout_ms. It only implicitly references build command and artifact, leaving most parameters ambiguous beyond their names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: building a CMPLOG-instrumented variant by setting AFL_LLVM_CMPLOG=1 and copying the artifact to the targets/ directory. It includes a specific verb ('Build'), resource ('CMPLOG-instrumented variant'), and distinguishes it from sibling tools like build_instrumented.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for CMPLOG instrumentation but does not explicitly state when to use this tool versus others like build_instrumented. It gives clear context on the mechanism (LLVM mode) but no exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.build_instrumentedC

Run a constrained build command with AFL++ compiler wrappers and copy the resulting artifact into the workspace targets/ directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYes
build_cmdYes
workspaceYes
timeout_msNo
target_nameYes
project_pathYes
build_optionsNo
artifact_relpathYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral disclosure burden. It mentions copying the artifact and running a 'constrained' build, but does not explain what 'constrained' means, whether the build modifies the original source tree, requires network access, or has other side effects. It also omits details about potential long-running behavior or the significance of the timeout_ms parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded, immediately stating the primary action and outcome. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, nested build_options, no output schema, no annotations), the description is highly incomplete. It fails to explain return values, parameter semantics, constraints, or any additional context needed for a user to correctly invoke the tool. The description provides only a high-level summary and leaves almost all operational details unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage and the description itself adds almost no parameter semantics. It references 'build command' and 'artifact' but does not explain the format of build_cmd, the meaning of profile options, the structure of build_options, or how workspace/target_name/project_path/artifact_relpath relate to each other. For a tool with 8 parameters and a nested object, this is severely inadequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool runs a build command using AFL++ compiler wrappers and copies the resulting artifact to the targets/ directory. This is a specific verb+resource+scope. However, it does not explicitly distinguish itself from the sibling tool aflpp.build_cmplog_variant, which likely serves a similar purpose but for cmplog builds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. It only implies usage for instrumented builds, but a user is left to infer when this should be preferred over other build-related tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.campaign_summaryC

Summarize a multi-instance campaign by parsing fuzzer_stats for each instance directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
campaign_nameYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It states it 'parses' fuzzer_stats, implying a read-only operation, but doesn't explicitly say whether it's non-destructive, what happens if fuzzer_stats files are missing, or whether it requires specific directory layouts. The description lacks important context about side effects and edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the core function. It avoids redundant phrasing and is appropriately sized for a tool with only two parameters and no output schema. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, annotations, and parameter documentation, the description is not complete enough. It doesn't describe the format of the summary, what metrics are included, error handling, or how it relates to sibling tools. A multi-instance campaign summarizer needs more context than a one-liner provides.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does mention 'each instance directory', which gives a hint that 'campaign_name' likely refers to a directory containing instance subdirectories, but it doesn't explain 'workspace' or provide any detailed meaning for either parameter. The parameter names are somewhat self-explanatory, but the description adds little beyond the schema names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Summarize') and identifies the resource ('multi-instance campaign') with a mechanism ('parsing fuzzer_stats for each instance directory'). This clearly distinguishes it from more general status tools, though it doesn't explicitly contrast with sibling tools like 'whatsup' or 'status'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., campaign must exist, fuzzers must be running or finished), exclusions, or cases where another tool would be more appropriate. The only implicit hint is 'multi-instance', but that's not enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.casr_reportC

Generate clustered crash reports using casr-afl (if installed).

ParametersJSON Schema
NameRequiredDescriptionDefault
out_dirNo
job_nameNo
workspaceYes
timeout_msNo
report_nameNo
campaign_nameNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the dependency on casr-afl and that it generates reports, but does not mention side effects (e.g., writing files), required permissions, or behavior if casr-afl is not installed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundant content. It is front-loaded with the main purpose, though it is terse to the point of under-specification, which is reflected in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain return values, prerequisites, or parameter semantics, making it inadequate for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no information about any of the six parameters. Parameters like 'workspace', 'out_dir', and 'report_name' are completely unexplained, leaving the agent without guidance on how to fill them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Generate' and the resource 'clustered crash reports', and mentions the method 'using casr-afl'. It distinguishes from sibling 'aflpp.crash_report' by specifying 'clustered', though it doesn't explicitly clarify what clustering entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance or reference to alternatives. The phrase 'if installed' hints at a prerequisite but does not explain when to use this tool versus 'aflpp.crash_report' or what to do if casr-afl is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.coverage_summaryC

Measure corpus coverage using afl-showmap -C on an AFL++ output directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
out_dirNo
job_nameNo
workspaceYes
target_cmdYes
mem_limit_mbNo
campaign_nameNo
target_timeout_msNo
overall_timeout_msNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It mentions the underlying tool 'afl-showmap -C' but does not state safety (read-only vs side effects), performance implications, output format, or prerequisites. This is insufficient for a tool that likely executes the target on multiple inputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. It efficiently conveys the core action and context, scoring high on conciseness and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, no annotations, and no output schema, this description is too sparse. It omits return value expectations, parameter relationships, and caveats such as execution time or data volume, leaving significant gaps for an agent to safely invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the 8 parameters. It does not map 'AFL++ output directory' to specific parameters like out_dir or workspace, nor does it clarify the required target_cmd or optional timeouts. The description adds no parameter meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Measure', names the resource as 'corpus coverage', and specifies the method 'using afl-showmap -C' on an 'AFL++ output directory'. This clearly distinguishes it from siblings like aflpp.whatsup (status) and aflpp.campaign_summary (campaign results).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for measuring coverage of a corpus but provides no explicit guidance on when to choose this tool over alternatives like aflpp.showmap or aflpp.campaign_summary. There are no exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.crash_reportC

Write a crash report for a finding (dedup signature + repro info + sanitizer frames if present).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_nameYes
workspaceYes
finding_idYes
timeout_msNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states what the report includes but does not disclose whether the operation mutates state, requires special permissions, or has side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the action and resource, then specifies report contents. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a clear purpose statement, the tool has 4 parameters, no output schema, and no annotations. The description lacks usage guidance and parameter semantics, leaving important gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description implies finding_id via 'for a finding' but leaves job_name, workspace, and timeout_ms unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Write' and resource 'crash report for a finding', with details on report contents (dedup signature, repro info, sanitizer frames). It is clear but does not explicitly differentiate from sibling tools like aflpp.repro_crash or aflpp.casr_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It neither mentions alternatives nor provides context for when a crash report should be written.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.detect_build_systemC

Detect a likely build system for a project path (heuristic).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden of behavioral disclosure. It only mentions the heuristic nature, but does not state whether the operation is read-only, what side effects it might have, or any environmental prerequisites. This is insufficient for an agent to understand the tool's safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 11 words, front-loaded with the action and object. It contains no fluff and earns every word, making it highly efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and minimal parameter schema, so the description should explain what is returned or how the result is presented. It does not, leaving the agent without critical information about the output or error behavior. The one-sentence description is inadequate for full contextual understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It says 'project path' but this only mirrors the parameter name project_path without adding detail. No format, constraints, or examples are given, leaving the agent guessing about acceptable input types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool detects a build system for a given project path, using the verb 'detect' with a specific resource. It is distinct from sibling build tools like build_instrumented and build_cmplog_variant, which actually perform builds. However, it does not define what a 'build system' is or what the output looks like, so it is slightly vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. The description only says what it does, not why or when it should be chosen. It implies a pre-build step, but there is no explicit context or exclusions, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.dry_runA

Run a short harness validation directly against the target (not afl-fuzz): checks input mode, stability, and basic performance signals.

ParametersJSON Schema
NameRequiredDescriptionDefault
runsNo
workspaceYes
target_cmdYes
timeout_msNo
corpus_nameYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the disclosure burden. It explains what the tool checks and that it runs directly against the target, but does not reveal side effects (e.g., workspace modifications), authentication needs, or failure outcomes. This is a moderate amount of behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one efficient sentence that front-loads the action and includes relevant qualifiers ('short', 'directly against the target', 'not afl-fuzz'). Every word contributes meaning, with no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, so the description should explain return values and parameter usage. It hints at outputs (checks) but does not describe result format or how success/failure is reported. It also leaves parameter roles unspecified. The description is functional but not fully comprehensive for a tool with this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate by explaining parameters. It fails to mention any parameter names or clarify the roles of runs, timeout_ms, corpus_name, or target_cmd beyond a generic 'harness validation' context. The agent is left without guidance on parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Run' and identifies the resource: a short harness validation directly against the target. It clearly distinguishes from afl-fuzz, a sibling tool, and enumerates the checks performed (input mode, stability, basic performance signals), making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use before full fuzzing ('short harness validation') and contrasts with afl-fuzz, providing clear context. However, it does not explicitly name alternative tools like start_fuzz or showmap, nor does it state when not to use this tool, leaving some guidance implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.generate_progress_plotC

Generate an AFL++ progress plot for a job or campaign (wraps afl-plot).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_nameNo
workspaceYes
timeout_msNo
campaign_nameNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states that the tool wraps afl-plot, implying it executes an external command, but it does not disclose whether it writes files, what output to expect, whether it is read-only, or any side effects. This is insufficient for a tool with no structured safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It efficiently communicates the core function. However, it may be too under-specified for the number of parameters, but conciseness itself is good.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no annotations, and no output schema, the description is materially incomplete. It does not explain parameter usage, expected outputs, or any necessary contextual information like whether the workspace must already be initialized or whether the plot is saved to disk. The description only covers a fraction of what an agent needs to use this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It hints that the tool works with a 'job or campaign', vaguely mapping to job_name and campaign_name, but it does not explain workspace (required) or timeout_ms. The description adds minimal meaning beyond what the bare schema already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: generating an AFL++ progress plot for a job or campaign. The verb 'generate' and resource 'progress plot' are specific, and the parenthetical 'wraps afl-plot' adds context. It does not explicitly distinguish from sibling tools, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like aflpp.whatsup or aflpp.status. The description only mentions 'for a job or campaign' without explaining prerequisites, selection criteria, or what distinguishes this from other status/reporting tools. This is effectively no usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.helpA

Get detailed help for a tool (schema + description).

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_nameYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It adds value by stating the output includes schema and description, which implies read-only behavior, but it does not explicitly mention side effects, prerequisites, or error handling. This is adequate for a simple help tool but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single succinct sentence, front-loaded with the action verb 'Get' and immediately clarifying the output. Every word earns its place, with no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one string parameter, no output schema) and lack of annotations, the description is mostly complete. It covers the purpose and output format, but omits edge-case behavior like invalid tool names. This is acceptable for a help utility, leaving only minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds minimal context by saying 'for a tool', indicating that tool_name refers to the target tool. While it does not specify valid values or format, the parameter name is self-explanatory, making this sufficient for a single obvious parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and clearly states the resource: 'detailed help for a tool', with clarification that it includes schema and description. This distinguishes it from sibling tools that perform fuzzing operations, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives, such as when to prefer it over exploring schemas directly or using list_tools. Usage is implied rather than stated, with no exclusions or alternative tool references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.import_corpusA

Import a seed corpus into workspaces//in/ from a file or directory within the workspace root.

ParametersJSON Schema
NameRequiredDescriptionDefault
src_pathYes
workspaceYes
corpus_nameYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the destination path and the source location constraint, but does not state whether files are copied or moved, whether existing corpora are overwritten, whether the directory is created automatically, or what happens on failure. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of about 20 words, front-loaded with the verb 'Import', and contains no redundant information. It is highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 simple parameters and no annotations or output schema, the description gives the core operation and path template, but omits prerequisites (e.g., workspace must be initialized), overwrite behavior, and return values. It is minimally viable but has clear gaps that an agent would need to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It implicitly describes all three parameters: workspace appears in the path, src_path is the source file/directory, and corpus_name is the destination name. However, it does not provide specific formats, allowed values, or whether paths are relative/absolute, leaving room for ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (import), the resource (seed corpus), and the destination path (workspaces/<ws>/in/<corpus_name>), with a source constraint (file or directory within workspace root). This distinguishes it from sibling tools like list_corpus or minimize_corpus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for seeding an initial corpus before fuzzing, but it does not explicitly state when to use it vs alternatives or any exclusions. The constraint that the source must be within the workspace root provides some context but no direct 'use this when' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.init_workspaceA

Create a workspace under workspaces/ with standard subdirectories: in,out,targets,build,logs,dicts,repros,reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool creates a directory structure but omits critical behaviors like what happens if the workspace already exists, whether it overwrites, or any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that names the action, destination, and standard subdirectories without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple creation tool, the description covers the primary purpose and directory structure, but lacks edge-case behavior (e.g., existing workspace). Given no output schema, a note on what the tool returns or does on collision would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning beyond the schema by specifying that the 'name' parameter is the workspace directory name under 'workspaces/', which directly explains how to supply the parameter. However, it does not detail naming constraints or uniqueness requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Create a workspace') with a resource location ('under workspaces/<name>') and enumerates the standard subdirectories, distinguishing it from other AFL++ tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for initial setup but does not explicitly state when to use it relative to siblings, nor does it mention prerequisites or exclusions such as whether it should be run before other commands.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.list_builtin_dictionariesA

List AFL++ builtin dictionaries shipped in the AFLplusplus/dictionaries directory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden. It describes the action as 'List' which implies a read-only operation, but it doesn't disclose return format, potential errors (e.g., directory not found), or whether it's a dynamic read. This is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no unnecessary words. It delivers the essential information immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool, the description is largely complete: it states the purpose and the source directory. The absence of an output schema means the return format isn't described, but that's acceptable for a simple listing tool. Sibling tools like attach_dictionary provide context for its use, though not explicitly referenced.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is empty. The description doesn't need to explain parameters, and the baseline of 4 applies. No additional parameter details are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' with a clear resource ('AFL++ builtin dictionaries') and location ('AFLplusplus/dictionaries directory'). It distinguishes itself from siblings like attach_dictionary by focusing on listing rather than attaching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention that this is useful before attach_dictionary, or any exclusions. For a simple list tool, some context would help, but there is none.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.list_corpusA

Summarize a corpus directory (file count and total size).

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
corpus_nameYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Summarize' implies a read-only operation, and the output is specified (file count and size). However, it does not mention permissions, error behavior, or side effects, though none are expected for a simple summary operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the operation and output with zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple summary tool, the description sufficiently explains what it returns (file count and size) and implies a read-only action. However, it lacks usage context and parameter details, which would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to the parameters beyond their names. 'workspace' and 'corpus_name' are self-descriptive but lack clarification about expected formats (paths vs. names).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Summarize') and resource ('a corpus directory'), and specifies the exact outputs (file count and total size). This distinguishes it from sibling tools like list_findings and minimize_corpus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as coverage_summary or import_corpus. The description simply states what it does without context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.list_findingsC

List crash and hang findings with stable IDs and paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_nameYes
workspaceYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It reveals that IDs are stable (useful for referencing) and that findings have paths, but does not clarify the return format, whether the operation is read-only (though 'list' implies it), or any state requirements such as needing a completed fuzzing campaign.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler words, front-loaded with the action and object. Every word contributes to the meaning, making it highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a minimal description, the tool lacks important context. It doesn't mention how to interpret the output or how the stable IDs can be used with other tools (e.g., aflpp.repro_crash or aflpp.crash_report), leaving the agent to infer the tool's role in the workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the parameters. It doesn't explain what 'workspace' or 'job_name' refer to in the AFL++ context. The parameter names are self-explanatory to some degree, but no additional semantic meaning is given, leaving the coverage gap unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('List') and the resource ('crash and hang findings'), and adds that they have 'stable IDs and paths.' It doesn't explicitly differentiate from sibling tools like aflpp.crash_report or aflpp.campaign_summary, but the resource is specific enough to be understood.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, such as an active fuzzing job or how to obtain job names, nor any exclusions or contextual hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.list_toolsA

List AFL++ MCP tools and their short descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of disclosing side effects, but it does not explicitly state that this is a read-only operation or describe any behavior beyond listing. The trivial nature of listing mitigates the gap, but the description offers no explicit transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Exactly one concise sentence, front-loaded with the action and resource, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description fully conveys what the tool does—listing tools and descriptions. It could optionally mention the output format or relationship to help, but it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the schema covers all (empty) fields, meeting the baseline of 4 for parameter semantics. No additional parameter explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' with the resource 'AFL++ MCP tools and their short descriptions,' clearly distinguishing it from sibling tools that provide help or version info. The purpose is immediately obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage context or alternative selection guidance is provided. The description implies the tool should be used to discover available tools, but it does not contrast with aflpp.help or other informational tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.minimize_corpusB

Minimize a corpus using afl-cmin and store it as a new corpus directory in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
target_cmdYes
timeout_msNo
corpus_nameYes
mem_limit_mbNo
tool_timeout_msNo
output_corpus_nameNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions output as a new corpus directory, but it fails to disclose that the tool likely executes the target command (target_cmd) many times, which could have significant side effects. It also doesn't state whether the original corpus is left untouched or if any files are deleted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that conveys the core action and result. There is no fluff or redundant information. It earns its place by naming the method (afl-cmin) and the outcome (new corpus directory).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 7 parameters, no output schema, and no annotations. The description is far too minimal to understand the tool's full requirements, side effects, or expected behavior. It does not explain what the input corpus must look like, how the target command is used, or what the returned output is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no explanation of the 7 parameters (workspace, corpus_name, target_cmd, timeout_ms, etc.). Parameter names like 'target_cmd' and 'output_corpus_name' are somewhat self-explanatory, but the description adds no semantic meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Minimize') and resource ('corpus'), and mentions the underlying tool (afl-cmin). It clearly distinguishes from sibling tools like 'minimize_testcase' (which minimizes a single testcase) and 'import_corpus' (which imports rather than minimizes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on what the tool does, but it does not explicitly state when to use it versus alternatives, nor mention prerequisites (e.g., corpus must already exist, workspace must be initialized). It only implies usage: you use this when you want to reduce a corpus.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.minimize_testcaseB

Minimize a single testcase using afl-tmin and store the minimized testcase under repros/.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_nameYes
workspaceYes
target_cmdYes
timeout_msNo
mem_limit_mbNo
testcase_pathYes
tool_timeout_msNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the burden of disclosing side effects and prerequisites. It only mentions the output location (repros/) but does not state whether the original testcase is modified, whether existing files are overwritten, or any permission/timeout requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It efficiently communicates the core action and output destination, earning its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 7 parameters, no output schema, and no annotations, yet the description only covers the action and storage location. It lacks critical context such as required parameters' meaning, return values, prerequisites, or typical usage scenarios, making it insufficient for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 7 parameters with 0% description coverage, and the tool description adds no parameter-specific details. It only references 'testcase' implicitly via testcase_path but does not explain workspace, job_name, target_cmd, timeouts, or mem_limit_mb, leaving the agent without guidance on how to populate them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool minimizes a single testcase using afl-tmin and stores the result under repros/. This specific verb+resource+method distinguishes it from sibling tools like minimize_corpus (corpus-level) and analyze_testcase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'single testcase' implies it's for individual testcase minimization rather than corpus-wide operations, but no explicit when-to-use or alternatives are provided. It does not mention when to prefer this over minimize_corpus or repro_crash.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.preflight_checksA

Run lightweight preflight checks before starting afl-fuzz (core_pattern, CPU scaling, corpus non-empty).

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
target_cmdYes
corpus_nameYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It lists the checks performed, which is useful, but it omits what happens if checks fail, whether the tool makes any changes, or what the return value looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that leads with the verb and purpose, followed by a concise parenthetical list of checks. No filler or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description adequately lists what checks run, but leaves gaps around return format, failure behavior, and prerequisites such as whether the workspace must be initialized. It is minimally viable but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only adds meaning for corpus_name by tying it to 'corpus non-empty', while workspace and target_cmd remain unexplained. This is insufficient for a 3-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Run' and identifies the resource as 'lightweight preflight checks' before afl-fuzz. It enumerates three concrete checks (core_pattern, CPU scaling, corpus non-empty), which clearly distinguishes it from siblings like start_fuzz or dry_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'before starting afl-fuzz' provides clear temporal context for when to use this tool. It does not explicitly name alternative tools or when-not-to-use scenarios, but the 'before starting' guidance is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.repro_crashA

Reproduce a finding by running the target command directly with the testcase; captures stdout/stderr and writes a repro bundle under repros/.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_nameYes
workspaceYes
finding_idYes
target_cmdYes
timeout_msNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that it captures stdout/stderr and writes a repro bundle under repros/, which are useful side-effect details. However, it does not mention potential side effects of running an arbitrary target command, permission requirements, or behavior on failure, leaving significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately states the action and outcome. Every word contributes to understanding, with no repetition of schema field names or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 parameters, no output schema, and no annotations, so the description must provide substantial context. It explains the core action and output bundle but omits critical details like return values, success criteria, failure handling, and parameter semantics. The description is too brief for a tool that executes commands.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It references 'target command' and 'testcase', which loosely maps to target_cmd and finding_id, but it does not clarify the roles of workspace, job_name, timeout_ms, or how the testcase is derived. Parameter meaning is largely left to the reader.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Reproduce') and resource ('a finding') with clear mechanics: running the target command with the testcase, capturing stdout/stderr, and writing a repro bundle. This distinguishes it from siblings like crash_report or casr_report, which likely focus on reporting rather than direct reproduction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for reproducing a finding, but provides no explicit guidance on when to use this over alternatives or when not to use it. It lacks comparative context with sibling tools such as crash_report or analyze_testcase.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.showmapC

Run afl-showmap for a single testcase and return a summary of the trace.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes
target_cmdYes
timeout_msNo
mem_limit_mbNo
testcase_pathYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full burden. It only states the action ('run afl-showmap') and output ('summary'), but does not disclose side effects, prerequisites, error conditions, or whether it modifies state. This is minimal but not enough given the zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, but it is under-specifying. It's concise in style but lacks necessary detail, so it's not appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is far from complete: it has 5 parameters, no annotations, no output schema, and the description only provides a high-level action. It doesn't explain the composition of target_cmd, the meaning of the trace summary, or the effects of the limit parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and no parameter documentation, the description adds no meaningful information about the five parameters. It only hints that 'single testcase' relates to testcase_path, but leaves workspace, target_cmd, timeout_ms, and mem_limit_mb entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Run afl-showmap') and resource ('single testcase') and mentions the output ('summary of the trace'). It clearly states what the tool does, though it does not explicitly differentiate from sibling tools like analyze_testcase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a single testcase trace summary, but provides no explicit guidance on when to choose it over alternatives, no exclusions, and no alternative tools. There's a clear context (single testcase) but it's only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.start_fuzzC

Start an afl-fuzz job in the workspace (non-blocking).

ParametersJSON Schema
NameRequiredDescriptionDefault
envNo
seedNo
resumeNo
job_nameYes
workspaceYes
ascii_modeNo
mopt_levelNo
target_cmdYes
timeout_msNo
cmplog_pathNo
corpus_nameYes
mode_presetNo
cmplog_levelNo
fuzz_secondsNo
mem_limit_mbNo
power_scheduleNo
input_file_pathNo
old_queue_cycleNo
sanitizer_pathsNo
dictionary_pathsNo
crash_explorationNo
deterministic_onlyNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description must disclose side effects and behavior. It only reveals 'non-blocking', but omits what starting a job entails (e.g., process creation, filesystem changes, persistence, error handling, resource consumption), leaving the agent blind to significant mutating behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One clear, front-loaded sentence with no filler earns high marks for brevity and structure. However, given the tool's complexity, the extreme brevity borders on under-specification, but it remains appropriately concise for a starting point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 22-parameter asynchronous job launcher with no output schema and no annotations, the description provides almost no contextual completeness: no prerequisites, no return/status info, no param semantics, no relationship to cluster or stop/status tools. The agent cannot safely invoke this tool based on the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 22 parameters with 0% description coverage, and the description mentions none of them. Required fields like job_name, target_cmd, and corpus_name are not explained, nor are the many optional env/settings parameters, so the agent must infer meaning from raw schema names only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Start' and identifies resource 'an afl-fuzz job in the workspace', with 'non-blocking' clarifying execution mode. This clearly distinguishes it from sibling start_fuzz_cluster (cluster) and lifecycle tools like stop_fuzz/status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this over start_fuzz_cluster or prerequisites like initialized workspace, existing corpus, or instrumented target. Single sentence provides no usage context beyond location.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.start_fuzz_clusterC

Start a multi-instance afl-fuzz campaign (master + secondary instances).

ParametersJSON Schema
NameRequiredDescriptionDefault
optionsNo
instancesYes
workspaceYes
target_cmdYes
corpus_nameYes
campaign_nameYes
instance_overridesNo
master_instance_nameNo
secondary_instance_prefixNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the tool blocks or returns immediately, whether it spawns background processes, modifies the workspace, requires pre-existing corpus/campaign directories, or is destructive. The phrase 'master + secondary' gives a small hint about process architecture, but side effects and lifecycle are entirely undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no fluff, which is efficient. However, for a tool with this complexity (9 parameters, nested options, instance overrides), one sentence is under-specified. It is not just concise; it omits essential context, so it does not fully earn its place as an adequate tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (multiple required parameters, nested objects, no output schema, no annotations), this description is severely incomplete. It does not explain what a 'campaign' entails, how master/secondary instances are configured, any preconditions (like an initialized workspace or corpus), or what the return value/behavior after starting might be. The description offers only the bare minimum of context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description makes no mention of any parameters. With 9 parameters (including required ones like workspace, campaign_name, instances, target_cmd, corpus_name), the description must compensate for the schema's lack of textual explanations, but it does not. The agent gets no help understanding what each parameter means or how they relate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Start') and identifies the exact resource ('multi-instance afl-fuzz campaign') with a clarifying parenthetical ('master + secondary instances'). This distinguishes it from sibling tools like aflpp.start_fuzz, which presumably starts a single instance, and aflpp.suggest_fuzz_cluster_mix, which is advisory. It clearly states what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any explicit guidance on when to use this tool versus alternatives. There is no mention of 'use this instead of start_fuzz when you need parallel fuzzing' or any exclusion criteria. The only implied usage is 'multi-instance', which suggests it is for parallel campaigns, but no alternatives are named or contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.statusA

Get job status by parsing fuzzer_stats and queue/crashes/hangs counts (with deltas since last call).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_nameYes
workspaceYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of disclosure. It does reveal the mechanism (parsing fuzzer_stats and counts) and a behavioral trait (deltas since last call), suggesting a stateful operation. However, it does not disclose potential side effects, error conditions, or whether the operation is read-only, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence (16 words) that is front-loaded with the core purpose ('Get job status') and efficiently conveys the method and salient feature. No filler or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple status tool with two parameters and no output schema, the description covers the main action and the kind of data observed. However, it lacks guidance on usage in the broader workflow, expected output structure, and prerequisites (e.g., job must exist). The lack of annotations and zero schema coverage leave notable gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides no descriptions for job_name or workspace, and the description only refers to 'job status' without explaining parameter formats, constraints, or how they relate to the underlying filesystem. Since schema coverage is 0%, the description needed to compensate but does not; the agent must infer meaning from parameter names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Get'), a defined resource ('job status'), and the method of extraction ('by parsing fuzzer_stats and queue/crashes/hangs counts'). It also highlights a unique feature (deltas since last call) that distinguishes it from siblings like `aflpp.whatsup` or `aflpp.campaign_summary`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for querying the status of a specific job (given job_name and workspace) and mentions that it reports deltas since last call, indicating usefulness for monitoring changes. However, it does not explicitly state when to use this tool over alternatives such as `aflpp.whatsup` (likely a broader status view) or `aflpp.campaign_summary` (overall summary). There are no exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.stop_fuzzA

Stop a running afl-fuzz job by PID (SIGTERM then SIGKILL).

ParametersJSON Schema
NameRequiredDescriptionDefault
job_nameYes
workspaceYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses specific behavioral details: it sends SIGTERM followed by SIGKILL. This goes beyond a generic 'stop' and alerts the agent to the forceful termination nature. It does not mention permissions or error scenarios, but the signal sequence is valuable transparency for a mutation-like operation with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the action and includes the key behavioral detail in parentheses. Every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool, the description covers the core purpose and a key behavioral trait, but it leaves gaps: the PID/job_name mismatch is unexplained, parameters are undocumented, and the return value is not described. While not a complex tool, the description is not fully sufficient for an agent to invoke it correctly without additional inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the workspace or job_name parameters. It also introduces the term 'PID' which does not correspond to any schema parameter, adding confusion rather than clarifying the input semantics. The description fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (stop) and the resource (running afl-fuzz job), and distinguishes it from siblings like start_fuzz. However, the phrase 'by PID' is inconsistent with the schema's actual parameter 'job_name', which could confuse an agent about how the job is identified.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for stopping a running fuzzing job, which is obvious from the tool name and context, but it does not explicitly specify when to use it versus other tools or exclude any cases. No alternatives are mentioned, but for a stop operation this is reasonably inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.suggest_fuzz_cluster_mixC

Suggest a multi-core campaign mix (instance_overrides) for aflpp.start_fuzz_cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
instancesYes
master_instance_nameNo
secondary_instance_prefixNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the burden of behavioral disclosure. It does not state whether this is a read-only operation, what the output structure is, or whether it modifies any state. The verb 'suggest' implies no side effects, but this is not explicitly confirmed, and there is no mention of dependencies or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is technically concise, but it is under-specified. It lacks necessary detail to be useful independently, making it more of a tautological statement of the tool's name than an informative description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description should explain what the suggestion contains and how to apply it to aflpp.start_fuzz_cluster. It does neither, leaving the tool's output and usage context incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for explaining the parameters, but it only mentions 'instance_overrides' without mapping it to 'instances', 'master_instance_name', or 'secondary_instance_prefix'. No parameter meanings, defaults, or relationships are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a suggestion generator for a multi-core campaign mix, specifically targeting aflpp.start_fuzz_cluster. It uses a specific verb ('suggest') and resource ('multi-core campaign mix') and differentiates itself from sibling tools by being a planning/suggestion utility rather than an execution tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool instead of alternatives. It does not mention that it should be used before starting a cluster, nor does it reference any alternative tools for creating configurations. The context is implied by the name and description, but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.versionA

Get AFL++ and server version information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. The description indicates a read-only informational operation, but it does not explicitly state side-effect-free behavior or mention whether it queries a remote server. The trivial nature of the tool makes the behavior mostly transparent, but some details (e.g., network dependency, output format) remain unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that gets straight to the point. There is no wasted wording or extraneous detail, making it highly efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter tool, the description is sufficiently complete. It states the information returned (versions) and implies read-only behavior. It does not describe the output format, but for a version tool, that is not strictly necessary. The tool's simplicity means less contextual context is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema already fully covers the parameter space (100% coverage). The description adds no parameter-specific information, but the baseline for zero-parameter tools is 4, as there is nothing to clarify. The description's statement of what information is retrieved (AFL++ and server version) adds minimal semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('AFL++ and server version information'). It is unambiguous and distinguishes itself from sibling tools, none of which share 'version' in their names or descriptions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: use this tool when you need version information. No explicit when-to-use or alternatives are provided, but given the tool's unique function and zero parameters, the implication is sufficient. There are no sibling tools offering the same functionality, so exclusions are unnecessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

aflpp.whatsupD

Run afl-whatsup on an AFL++ output directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
out_dirNo
job_nameNo
workspaceYes
timeout_msNo
summary_onlyNo
campaign_nameNo

TDQS

D1.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It only says 'Run' without disclosing any behavioral traits such as whether the tool reads/writes files, requires existing workspaces, or produces output. There is no mention of side effects, permissions, or expected behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence and is concise and front-loaded. However, it is so terse that it borders on under-specification, but that is more a completeness issue than a conciseness one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, no output schema, and no annotations, this one-sentence description is completely inadequate. It does not explain return values, parameter semantics, or any necessary prerequisites or context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate but does not. It only hints at an output directory, while there are 6 parameters (including workspace, timeout_ms, summary_only, etc.). No parameter is explained or given additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Run') and resource ('afl-whatsup on an AFL++ output directory'), but it does not explain what afl-whatsup actually does or how it differs from sibling tools like aflpp.status or aflpp.campaign_summary. The name and description are clear only if the agent already knows afl-whatsup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. No mention of scenarios, exclusions, or relationships to sibling tools. The description is a bare instruction with no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

C2.9/5.0
Disambiguation4/5

Most tools have clear, distinct purposes. Minor overlap exists between status, whatsup, and campaign_summary, which all report on fuzzing progress, and among crash-related tools (repro_crash, crash_report, casr_report), but descriptions provide enough distinction.

Naming Consistency4/5

The majority follow a verb_noun pattern with underscores (init_workspace, start_fuzz, list_findings). A few exceptions like whatsup and showmap break the pattern, and casr_report uses an abbreviation, but the overall convention is consistent.

Tool Count2/5

At 30 tools, the set exceeds the 25-tool threshold for 'too many'. While the AFL++ domain is complex, several meta tools (help, version, list_tools) and overlapping status/report functions could be consolidated, making the count feel heavy.

Completeness4/5

The tool set covers the core fuzzing lifecycle: workspace setup, building, corpus management, execution, monitoring, and crash analysis. A notable gap is the lack of a 'list running jobs' tool, but most workflows are supported end-to-end.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables AI agents to generate and manage specialized bug bounty hunting workflows including reconnaissance, vulnerability testing, OSINT gathering, and file upload testing. Provides REST API endpoints for comprehensive security assessments with intelligence-driven vulnerability prioritization.
    40
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Azure AI Foundry services through a unified interface for model exploration and deployment, knowledge indexing and search, AI evaluation, and fine-tuning operations. Supports both GitHub token-based model testing and full Azure deployment workflows.
    3
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables stateful binary analysis and pwn research through GDB/pwndbg debugging capabilities. Supports loading binaries, setting breakpoints, memory analysis, compilation with sanitizers, and process management for vulnerability research.
  • A
    license
    B
    quality
    C
    maintenance
    Enables interaction with the AssemblyLine 4 malware analysis platform, allowing file submissions, URL analysis, and search capabilities via natural language.
    20
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kevin-valerio/aflpp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server