Skip to main content
Glama
crowdsecurity

crowdsec-local-mcp

Official

Life is too short to write YAML, just ask nicely!

A Model Context Protocol (MCP) server to generate, validate, and deploy CrowdSec WAF rules & Scenarios.

Features

WAF Rules Features

  • WAF Rule Generation: Generate CrowdSec WAF rules from user input or a CVE reference

  • Validation: Validate syntaxical correctness of WAF rules

  • Linting: Get warnings and hints to improve your WAF rules

  • Deployment Guide: Step-by-step deployment instructions

  • Docker Test Harness: Spin up CrowdSec + nginx + bouncer to exercise rules for false positives/negatives

  • Nuclei Lookup: Quickly jump to existing templates in the official projectdiscovery/nuclei-templates repository for a given CVE

Scenarios Features

  • CrowdSec Scenarios Generation: Generate CrowdSec scenarios

  • Validation: Validate syntaxical correctness of scenarios

  • Linting: Get warnings and hints to improve your scenarios

  • Deployment Guide: Step-by-step deployment instructions

  • Docker Test Harness: Spin up CrowdSec to test scenario behavior

Related MCP server: Gen0Sec WAF Rule MCP Server

Demo

WAF Rules Creation and testing

Scenario Creation and testing

Prerequisites

  • uv 0.4 or newer, which provides the uvx runner used in the examples below.

  • Docker with the Compose plugin (Compose v2).

Installation

You can install the MCP using uvx or use packaged .mcpb file for claude code.

Using .mcpb package

If you're using claude desktop, you can configure the MCP directly by double-clicking the .mcpb file that accompanies the release.

IMPORTANT

On MacOS, configureuv path in the extension settings if uv isn't installed in the standard path.

Using uvx

  • Configure supported clients automatically with uvx --from crowdsec-local-mcp init <client>, where <client> is one of claude-desktop, claude-code, chatgpt, vscode, or stdio:

uvx --from crowdsec-local-mcp init --dry-run claude-code

Run uvx --from crowdsec-local-mcp init --help to see all flags and supported targets.

What init configures

The init helper writes the CrowdSec MCP server definition into the client’s JSON configuration:

  • claude-desktopclaude_desktop_config.json in the Claude Desktop settings directory

  • claude-code → invoke claude mcp command with needed args

  • chatgptconfig.json in the ChatGPT Desktop settings directory

  • vscodemcp.json for VS Code (stable and insiders are both detected)

If the client's configuration file already exists, a .bak backup is created before the MCP server block is updated. When the file is missing you can either pass --force to create it, or point --config-path to a custom location. Combine --dry-run with these options to preview the JSON without making any changes.

By default the CLI launches the server with uvx --from crowdsec-local-mcp crowdsec-mcp. If neither uvx nor uv is available, it falls back to your current Python interpreter; you can override the executable with --command and the working directory with --cwd.

Using the stdio target

stdio does not modify any files. Instead, init stdio prints a ready-to-paste JSON snippet that you can drop into any stdio-compatible MCP client configuration. This is useful when you want to manually wire the server into tools that do not have built-in automation support yet.

Troubleshooting

If you just installed the mcp extension via .mcpb and uv or uvx isn't in the standard path, check the extension settings to configure uv path.

Logging

  • The MCP server writes its log file to your operating system's temporary directory. On Linux/macOS this is typically /tmp/crowdsec-mcp.log; on Windows it resolves via %TEMP%\crowdsec-mcp.log.

Available Tools

24 tools
curl_waf_endpointB

Execute an HTTP request against the local WAF test endpoint (http://localhost:8081)

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoOptional request body
pathYesRequest path (e.g. /, /admin?x=y). Automatically prefixed with http://localhost:8081
methodYesHTTP method to use
headersNoOptional headers to include
timeoutNoOptional curl timeout in seconds

TDQS

B3.3/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 only states the action without disclosing any behavioral traits like idempotency, side effects, or whether it modifies state. For a curl command against a test endpoint, more transparency is needed.

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, efficient sentence with no unnecessary words. It is front-loaded with the action and target.

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 description is adequate for a simple HTTP request tool but does not mention the output format (e.g., response body, status code). Given no output schema, more completeness would be beneficial.

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 100%, so baseline is 3. The description does not add any extra meaning to parameters beyond what the schema already provides, so no improvement.

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 action: executing an HTTP request against a specific local WAF test endpoint (http://localhost:8081). It distinguishes itself from sibling tools, which deal with prompts, rules, and scenarios, not direct HTTP requests.

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 over alternatives or when not to use it. The description lacks any context about use cases, prerequisites, or exclusions.

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

deploy_scenarioC

Retrieve guidance for packaging and deploying a CrowdSec scenario

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/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 convey behavioral traits. It only states 'retrieve guidance', implying a read operation, but fails to disclose details such as authentication needs, rate limits, or what the guidance entails (e.g., static text or dynamic content).

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 sentence with no wasted words. It is concise, though it could be restructured to include more context without sacrificing brevity.

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 lack of annotations, output schema, and parameters, the description should provide more context about the content of the guidance. It is too minimal to fully inform the agent of what to expect.

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?

The input schema has no parameters and coverage is 100% by default, so the baseline score is 3. The description does not add parameter semantics because there are none to describe.

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 specifies the action 'retrieve guidance' and the resource 'for packaging and deploying a CrowdSec scenario', making the purpose clear. However, it does not distinguish itself from sibling tools like 'manage_scenario_stack' which might also involve deployment-related guidance.

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 guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or context for invocation.

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

deploy_waf_ruleB

Get deployment instructions for CrowdSec WAF rules

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/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. 'Get deployment instructions' implies a read-only operation with no side effects, which is adequate. However, it does not disclose if any authentication is required or the format of the instructions.

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 unnecessary words, achieving maximum conciseness.

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 parameters and no output schema, the description is minimal. It lacks details on what the instructions contain or how they are returned, which could leave an agent uncertain about the tool's output.

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?

No parameters exist, so schema coverage is 100%. The description does not need to add parameter meaning. Baseline for 0 params is 4.

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 'Get' and resource 'deployment instructions for CrowdSec WAF rules', distinguishing it from sibling tools that perform actual deployment (e.g., deploy_scenario). However, 'deployment instructions' is somewhat vague and could be more specific.

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. For example, it does not explain that this tool should be used to retrieve instructions before performing an actual deployment with another tool like deploy_scenario.

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

explain_scenarioA
    Shows how crowdsec processes a single log line: what is extracted by the parsers, and which scenarios match.
    A match does not mean an alert is generated, only that the event was of interest for the scenario.
    This tool MUST NEVER be called with multiple log lines. If you need to test whether a scenario generates an alert, use the `test_scenario` tool instead.
    The scenario stack (manage_scenario_stack) must be running to use this tool.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
log_lineYesA single example log line that should trigger the scenario
log_typeYesType of logs the scenario is intended to analyze
collectionsYesList of CrowdSec collections to install alongside the scenario
scenario_yamlYesScenario YAML to explain

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that a match does not imply an alert, that it shows internal processing, and requires a running scenario stack. Does not detail output format but is otherwise transparent about behavior.

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?

Four sentences, no fluff, front-loaded with main purpose. Every sentence provides essential information (purpose, constraint, alternative, prerequisite). Very concise.

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 no output schema, the description explains enough to use the tool: purpose, constraints, prerequisites, and alternative. Could mention output format, but not critical for usage. Sufficient for a diagnostic tool.

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 100% with self-explanatory parameter descriptions. The tool description adds no additional semantic nuance beyond what the schema provides, so baseline score of 3 is appropriate.

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 shows how CrowdSec processes a single log line (extraction and matching), and differentiates from the sibling `test_scenario` tool, making the 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 Guidelines5/5

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

Explicitly says MUST NEVER be called with multiple log lines, directs to `test_scenario` for alert testing, and notes the prerequisite that the scenario stack must be running. Provides clear when-to-use and when-not-to-use guidance.

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

fetch_nuclei_exploitA

Retrieve nuclei templates from the official repository for a CVE to help with generation of WAF rules

ParametersJSON Schema
NameRequiredDescriptionDefault
cveYesCVE identifier to search for (e.g. CVE-2024-12345)

TDQS

A4/5.0
Behavior3/5

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

No annotations provided; description only indicates a read operation without detailing authentication, rate limits, failure modes, or what happens if CVE not found.

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?

Single sentence of 16 words, directly front-loaded with purpose. No unnecessary text.

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 retrieval tool with one parameter, the description adequately explains purpose and context, but could mention return format or error behavior for full completeness.

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 100% and the description adds no extra meaning beyond the schema's 'CVE identifier to search for' with an example. Baseline 3 is appropriate.

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 verb (retrieve), resource (nuclei templates from official repository), and context (for a CVE to help generate WAF rules). It is distinct from sibling tools which involve WAF rule generation, deployment, or scenario management.

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 when needing nuclei templates for a CVE to aid WAF rule generation, but does not explicitly state when to avoid or mention alternatives among sibling tools.

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

generate_waf_ruleB

Get the complete WAF rule generation prompt (main prompt + examples) for CrowdSec

ParametersJSON Schema
NameRequiredDescriptionDefault
nuclei_templateNoOptional Nuclei template to include in the prompt for immediate processing

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, and description gives minimal behavioral context—implies a read operation but doesn't specify auth, side effects, or what happens with the optional 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?

Single sentence, no unnecessary words; effectively conveys purpose.

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?

Lacks output schema, and description only hints at return type (a prompt) without detailing structure or format, which is adequate but incomplete.

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 100% for the single optional parameter; description repeats schema info without adding new meaning.

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 retrieves a 'complete WAF rule generation prompt', distinguishing it from siblings like get_waf_top_level_prompt and get_waf_examples.

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 over alternatives; e.g., lacks comparison with get_waf_prompt or get_waf_examples.

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

generate_waf_testsC

Get the WAF test generation prompt for producing config.yaml and adapted Nuclei templates

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_filenameNoOptional path to the generated rule (e.g. ./appsec-rules/crowdsecurity/vpatch-CVE-XXXX-YYYY.yaml)
nuclei_templateNoOptional Nuclei template to include so the assistant can adapt it for testing

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It does not indicate whether the tool is read-only, whether it creates files, requires authentication, or has side effects. The phrase 'for producing' implies mutation but is vague.

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 that is front-loaded with the key action. It is efficient with no extraneous words.

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 2 optional parameters and no output schema. The description partially addresses what is produced (config.yaml and adapted Nuclei templates) but does not explain the prompt itself nor the full return value. Given sibling tools, more detail would improve completeness.

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 100%, so baseline is 3. The description adds no parameter details but mentions outputs (config.yaml, Nuclei templates) which relate to the parameters, though not explicitly.

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 states the verb 'Get' and resource 'the WAF test generation prompt', and mentions outputs 'config.yaml and adapted Nuclei templates'. It clearly identifies the tool's purpose, though the phrase 'get the prompt' could be misinterpreted as retrieval rather than generation, and sibling differentiation is not explicit.

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 vs alternatives like generate_waf_rule or run_waf_tests. There is no mention of prerequisites, use cases, or exclusions.

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

get_scenario_examplesA

Retrieve example CrowdSec scenarios and annotations

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits beyond the basic action. It does not specify whether the operation is read-only, requires authentication, or has any 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?

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's purpose.

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 tool has no parameters and no annotations, the description is minimal but provides the essential purpose. However, without an output schema, the agent does not know the structure of the returned data. For a simple retrieval tool, this is adequate but not comprehensive.

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 schema coverage is trivially 100%. The description does not need to explain parameters, and it adds no additional meaning. A score of 4 is appropriate as a baseline for no-parameter tools.

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 (Retrieve) and the resource (example CrowdSec scenarios and annotations). It distinguishes from sibling tools like get_waf_examples, which retrieves WAF examples, and other scenario-related tools.

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. The description does not mention contexts, prerequisites, or exclusions. For example, it doesn't clarify that this tool is for retrieving example scenarios rather than WAF examples.

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

get_scenario_expr_helpersA

Retrieve helper expressions for CrowdSec scenario authoring

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only states 'Retrieve helper expressions' with no mention of side effects, cost, or return behavior. The read-only nature is implied but not explicit.

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?

Single sentence, front-loaded with key information, no unnecessary words. Highly efficient.

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 no output schema and no annotations, the description is minimal. It does not explain what 'helper expressions' are or the format of the output, leaving some ambiguity for a simple retrieval tool.

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?

No parameters exist, and schema coverage is 100%. Description adds no parameter details because none are needed. Baseline for zero-parameter tools is 4.

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 clearly states verb 'Retrieve', resource 'helper expressions', and context 'CrowdSec scenario authoring'. Siblings include related get_* tools, but 'helper expressions' is distinct from prompts and examples, so it is well-differentiated.

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 vs siblings. The description does not indicate prerequisites or typical use cases, leaving the agent to infer when 'helper expressions' are needed.

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

get_scenario_promptB

Retrieve the base prompt for authoring CrowdSec scenarios

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description simply states 'Retrieve the base prompt' without revealing any behavioral traits like authentication needs, rate limits, or what the prompt entails. While the tool has no parameters, the lack of context on return format or side effects is a gap.

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?

Single, clear sentence that front-loads the action and resource. No wasted words.

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 no parameters and many sibling tools, the description fails to explain what the base prompt is used for, how it differs from other prompt tools, or what to expect. Agent may struggle to select it appropriately.

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 input schema has zero parameters and 100% documentation coverage. Baseline for 0-param tools is 4, and the description adds no additional semantics since nothing is needed 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?

Description uses specific verb 'Retrieve' and resource 'base prompt for authoring CrowdSec scenarios', clearly distinguishing it from sibling tools like get_scenario_examples or validate_scenario_yaml.

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 such as get_scenario_examples or get_waf_prompt. The agent is left to infer context from the name alone.

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

get_waf_examplesB

Get WAF rule generation examples for CrowdSec

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.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 does not disclose behavioral traits such as output format, content of examples, or any side effects. The description is too sparse.

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 wasted words. However, it could be slightly more informative without sacrificing conciseness.

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 tool has 0 parameters and no output schema, the description is minimal but adequate. However, it could offer more context about the examples (e.g., format, use cases).

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 no parameters, so the description does not need to add parameter information. Baseline score of 4 is appropriate.

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 verb 'Get' and the resource 'WAF rule generation examples for CrowdSec'. It distinguishes itself from sibling tools like get_waf_prompt and generate_waf_rule by specifying 'examples'.

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 guidance on when to use this tool versus alternatives. Siblings include get_waf_prompt and generate_waf_rule, but no distinctions are made.

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

get_waf_promptA

Get the main WAF rule generation prompt for CrowdSec

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description gives no behavioral details. It doesn't disclose whether this is read-only, requires authentication, or what the returned prompt is used for. For a tool with zero parameters, the behavior is simple but still lacks 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?

Single sentence with no redundancy. Every word earns its place.

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 (no params, no output schema), the description is minimally adequate. However, the tool is part of a large family (many sibling prompt tools), and the description does not clarify how 'main' differs from 'top_level' or 'examples', leaving the agent to infer via tool names.

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 with 100% schema coverage, so the baseline is 4. The description adds no parameter semantics, but none are needed. However, it could mention that no inputs 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 clearly states the verb 'Get' and the resource 'main WAF rule generation prompt'. It distinguishes from sibling tools like get_waf_top_level_prompt and get_waf_examples, making the purpose specific.

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 its many siblings (e.g., get_waf_top_level_prompt, get_waf_examples). The agent has no context to decide which prompt tool to invoke.

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

get_waf_pr_promptB

Get the WAF PR preparation prompt for writing test assets and drafting a PR comment

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior1/5

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

No annotations provided, and description fails to disclose any behavioral traits (e.g., read-only, authorization needs, side effects). The sole sentence describes only the content without 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?

Single sentence, front-loaded with verb, no wasted words. Efficient and easy to parse.

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 zero parameters and no output schema, the description provides enough context for a simple retrieval tool. Could be enhanced by noting that the prompt is returned as a string, but mostly complete.

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?

No parameters exist; schema coverage is 100% vacuously. Baseline is 3 per high coverage. Description adds no parameter information but none 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?

Clearly states the tool retrieves a WAF PR preparation prompt for writing test assets and drafting a PR comment, specifying the resource and purpose. Distinguishes from sibling tools like get_waf_examples and prepare_waf_pr.

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?

Implies usage in PR preparation context but does not explicitly state when to use versus alternatives like get_waf_prompt or prepare_waf_pr. No exclusions or conditional guidance provided.

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

get_waf_rule_challenge_promptB

Get the prompt for challenging drafted WAF rules to reduce false positives and weak detections

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 disclose behavioral traits. It only states it gets a prompt, but does not describe what the prompt contains, any side effects, or prerequisites. For a parameterless tool, this is minimal 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?

The description is a single sentence that clearly communicates the tool's purpose without unnecessary words. It is appropriately concise and front-loaded.

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 no parameters, output schema, or annotations, the description is adequate for a simple retrieval tool. However, it lacks details about the prompt's format or usage context, which may be needed given the sibling tools.

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 schema coverage is trivially 100%. The description adds no parameter meaning, but per guidelines, 0 parameters gives a baseline of 4.

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 it gets a prompt for challenging drafted WAF rules, with a specific goal of reducing false positives and weak detections. It distinguishes from sibling tools like get_waf_prompt by specifying 'challenging drafted rules', though the differentiation could be stronger.

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 such as get_waf_prompt or get_waf_top_level_prompt. The description implies it's for challenging rules, but does not provide explicit when-to-use or when-not-to-use information.

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

get_waf_top_level_promptA

Get the top-level CrowdSec WAF workflow prompt that explains how to approach rule and test creation

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It does not disclose whether the operation is read-only, idempotent, or has any side effects. Given it's a getter, basic safety information is missing, though behavior is simple.

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 14 words, efficiently communicating the tool's purpose. It is front-loaded and contains no redundant information.

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 tool with no parameters and no output schema, the description adequately states the tool's function and the type of content. However, it does not clarify the return format (e.g., text or JSON), which is a minor gap.

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 (schema coverage 100%), so baseline is 4. The description adds value by explaining the content of the prompt it returns, which goes beyond the empty 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 verb 'get', the resource 'top-level CrowdSec WAF workflow prompt', and its purpose (explains how to approach rule and test creation). It distinguishes itself from siblings like get_waf_prompt by specifying 'top-level'.

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 this is the starting point for WAF rule and test creation, but does not explicitly state when to use it versus alternatives like get_waf_prompt, get_waf_pr_prompt, or other prompts. No when-not or alternatives are provided.

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

lint_scenario_yamlB

Lint CrowdSec scenario YAML and highlight potential improvements

ParametersJSON Schema
NameRequiredDescriptionDefault
scenario_yamlYesScenario YAML to lint

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description alone must disclose behavioral traits. It only says 'highlight potential improvements' but doesn't specify the nature of improvements, whether it modifies the YAML, or any side effects. Essential behavioral context is missing.

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, efficient sentence with no unnecessary words. It front-loads the core purpose.

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 description lacks details about return values (lint results format), how to interpret output, or any prerequisites. Given the tool has no output schema or annotations, the description should provide more context for an agent to use it effectively.

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 100% for the single parameter 'scenario_yaml', which is described as 'Scenario YAML to lint'. The tool description adds no additional meaning beyond the schema. Baseline 3 is appropriate.

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 verb 'lint' and the resource 'CrowdSec scenario YAML', distinguishing it from sibling tools like 'validate_scenario_yaml' (likely checks correctness) and 'lint_waf_rule' (different resource).

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 explicit guidance on when to use this tool versus alternatives (e.g., 'validate_scenario_yaml'). The description does not mention when not to use it or provide context for selecting this tool over others.

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

lint_waf_ruleA

Lint a CrowdSec WAF rule and provide warnings/hints for improvement

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_yamlYesThe YAML content of the WAF rule to lint

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description must stand alone. It implies read-only behavior ('warnings/hints') but does not explicitly state side effects, auth requirements, or return format. Adequate but could be more explicit.

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?

Single sentence, front-loaded, no unnecessary words. Efficiently communicates the core purpose.

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 simple input (one parameter) and no output schema, the description lacks details about return format or differentiation from similar sibling tools (e.g., validate_waf_rule). Adequate for a simple lint, but could be more complete.

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 100% with description 'The YAML content of the WAF rule to lint' but the tool description adds no additional meaning beyond that. Baseline 3 is appropriate since schema already covers the 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 clearly states the action (lint), the resource (CrowdSec WAF rule), and the outcome (warnings/hints). It distinguishes from sibling tools like validate_waf_rule (validation vs linting) and generate_waf_rule (generation).

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 like validate_waf_rule or lint_scenario_yaml. No prerequisites or context for appropriate use.

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

manage_scenario_stackA

Manage the lifecycle of the scenario testing stack (ONLY USE FOR TESTING SCENARIOS)

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform on the scenario testing stack

TDQS

A3.7/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 only states 'manage the lifecycle' without disclosing potential destructive behaviors (e.g., stopping the stack) or permissions needed. This is insufficient for a lifecycle management 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, well-structured sentence with no wasted words. It includes a useful clarifying note in parentheses.

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 tool with one parameter, the description covers the basic purpose and constraint. However, it lacks details about what each action (start, stop, reload) does and what the return value is, leaving some gaps for agent decision-making.

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 100% and the schema already describes the 'action' parameter with enum values. The description adds no additional meaning beyond the schema, meeting the baseline for high coverage.

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 verb 'manage' and the resource 'scenario testing stack', and adds a usage restriction 'ONLY USE FOR TESTING SCENARIOS' which distinguishes it from sibling tools like manage_waf_stack.

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 explicitly limits usage to testing scenarios, providing clear context. However, it does not mention when not to use or suggest alternatives like manage_waf_stack.

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

manage_waf_stackA

Start or stop the Docker-based CrowdSec AppSec test stack so the rule can be exercised with allowed and blocked requests. If this action fails because docker isn't present or cannot be run, prompt the user to set it up manually.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhether to start or stop the stack
rule_yamlNoWAF rule YAML content to mount into the stack when starting

TDQS

A3.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 fully disclose behavior. It mentions start/stop and failure handling, but does not disclose other behavioral traits such as whether destructive (stopping may have side effects), required permissions, or rate limits. The lack of such detail limits 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?

The description is two sentences, front-loaded with the primary action and purpose. Every sentence adds value: the first states the core function, the second provides fallback guidance. No unnecessary 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 tool with two parameters and no output schema, the description covers the essential purpose, action, and error handling. It sufficiently equips an agent to use the tool correctly, though it could mention the expected outcome of 'start' (e.g., stack running) and 'stop' (stack stopped).

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?

With 100% schema description coverage, the baseline is 3. The description adds minimal extra value beyond the schema (e.g., 'mount into the stack' for rule_yaml). It does not provide additional format or constraints, so it meets the baseline.

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 verb 'start or stop' and the resource 'Docker-based CrowdSec AppSec test stack' with the purpose of exercising rules. It is specific and distinguishes from sibling tools like manage_scenario_stack which focuses on scenarios.

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 provides a clear instruction for failure handling ('prompt user to set up manually'), but lacks explicit guidance on when to use this tool versus alternatives like run_waf_tests or validate_waf_rule. Usage context is implied but not comparative.

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

prepare_waf_prB

Help prepare a pull request in a local clone of the CrowdSec hub repository by adding the generated WAF rule and associated test files.

ParametersJSON Schema
NameRequiredDescriptionDefault
hub_dirYesPath to the local clone of the CrowdSec hub repository
rule_yamlYesGenerated WAF rule YAML content
rule_filenameYesRelative path (from hub root) for the rule file
collection_nameNoTarget collection in the format author/name (mapped to collections/author/name.yaml)
nuclei_filenameYesFilename for the nuclei test template
test_config_yamlYesGenerated AppSec test config.yaml content
test_nuclei_yamlYesGenerated adapted nuclei template content

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It vaguely mentions 'adding' files to a local clone, but does not disclose side effects like file system writes, branch creation, or potential errors. The lack of concrete behavioral details leaves the agent uncertain about what the tool actually does.

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?

Single sentence of 22 words is concise and direct. However, it lacks structural elements like bullet points that could improve readability for such a multi-parameter 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?

Given no output schema and no annotations, the description should explain prerequisites (e.g., hub_dir must be a valid git repo), what happens after file addition, and what the tool returns. It fails to provide enough context for an agent to use it safely, especially as a write operation.

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 covers all 7 parameters with descriptions. The tool description adds no additional semantic depth beyond what the schema already provides. With 100% schema coverage, baseline of 3 is appropriate.

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 verb 'prepare' and the resource 'pull request in a local clone of the CrowdSec hub repository', specifying it adds WAF rule and test files. This distinguishes it from sibling tools like generate_waf_rule which only generate content.

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 after generating rule and tests, but does not explicitly state when to use or when not to use this tool vs alternatives like validate_waf_rule or deploy_waf_rule. No prerequisites or exclusions are mentioned.

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

run_waf_testsA

Start the WAF harness and execute the provided nuclei test template against it. If this action fails because docker isn't present or cannot be run, prompt the user to set it up manually.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_yamlYesCrowdSec WAF rule YAML to load into the harness before running tests
nuclei_yamlYesAdapted nuclei template YAML that should trigger a block (HTTP 403)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses the harness startup and test execution, plus a Docker failure scenario, but does not mention other behavioral aspects like side effects, success behavior, or cleanup. It is adequate but not comprehensive.

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 concise with two sentences: the first states the primary action, the second adds a practical failure hint. No unnecessary words, front-loaded with the core purpose.

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 description covers the basic action and a common failure case, but given no output schema, it does not describe what the tool returns on success (e.g., test results). For a tool that runs tests, this is a notable omission.

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 100% and descriptions are already detailed. The tool description adds no new information beyond what the schema provides for each parameter. Baseline 3 is appropriate.

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: 'Start the WAF harness and execute the provided nuclei test template against it.' This distinguishes it from sibling tools like generate_waf_tests or validate_waf_rule by focusing on running tests rather than generating or validating.

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 provides usage context by explaining the tool's purpose and includes a failure hint about Docker. However, it lacks explicit guidance on when to use this tool versus alternatives, or when not to use it.

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

test_scenarioB

Test a CrowdSec scenario against multiple log lines (effectively replaying the events as if they were occurring in real-time).

ParametersJSON Schema
NameRequiredDescriptionDefault
log_typeYesType of logs the scenario is intended to analyze
log_linesYesList of log lines to test against the scenario
collectionsYesList of CrowdSec collections to install alongside the scenario
scenario_yamlYesScenario YAML to test

TDQS

B3.2/5.0
Behavior2/5

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

The only behavioral hint is 'as if they were occurring in real-time', but no disclosure of side effects, performance, or output format. No annotations exist to supplement, so the description carries full burden but is minimal.

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?

Single sentence conveys the core purpose efficiently. No fluff, and the key action is front-loaded.

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?

No output schema exists, so the description should explain what the tool returns (e.g., alerts, results). It only describes the action, missing expected outcomes or failure conditions.

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 100% with detailed parameter descriptions. The description adds no extra parameter context, but baseline is 3 as schema is sufficient.

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 states a specific verb ('Test'), resource ('CrowdSec scenario'), and clarifies the mode ('replaying the events as if they were occurring in real-time'). It clearly distinguishes from sibling tools like validation or deployment.

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 (e.g., validate_scenario_yaml, lint_scenario_yaml). Does not mention prerequisites or suitable contexts.

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

validate_scenario_yamlB

Validate CrowdSec scenario YAML structure for required fields

ParametersJSON Schema
NameRequiredDescriptionDefault
scenario_yamlYesScenario YAML to validate

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It only mentions validating 'structure for required fields', but does not disclose if the tool is read-only, what it returns on success/failure, or any side effects. The behavioral context is minimal.

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, short sentence that is concise and front-loaded. No redundant information. However, it could be slightly expanded to include return behavior without losing conciseness.

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 lack of an output schema, the description should explain validation outcomes (e.g., returns errors or passes). It also does not clarify whether it parses YAML or checks only required field presence. Compared to sibling tools, the context is insufficient.

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 100% (the sole parameter 'scenario_yaml' has a description). The tool description adds little beyond restating the purpose; it does not elaborate on format expectations or constraints beyond what the schema provides. Baseline 3 is appropriate.

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 validates 'CrowdSec scenario YAML structure for required fields', which is a specific verb+resource combination. It distinguishes from sibling tools like lint_scenario_yaml (which likely focuses on syntax/style) and test_scenario (behavioral testing).

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. There is no mention of prerequisites, when not to use it, or how it differs from lint_scenario_yaml or test_scenario. The description only states what it does, not the context of use.

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

validate_waf_ruleB

Validate that a CrowdSec WAF rule YAML is syntactically correct

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_yamlYesThe YAML content of the WAF rule to validate

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description must convey all behavioral traits. It merely states the tool validates syntactic correctness but does not disclose side effects (e.g., whether it modifies state), network calls, or success/failure behavior. This is insufficient for a mutation-free 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 concise sentence that immediately conveys the tool's essence. It is front-loaded and contains no unnecessary words.

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 tool's simplicity (one required parameter, no nested objects), the description is adequate but lacks information on return values, error handling, or whether validation is against a specific schema version. The lack of annotations leaves 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?

The schema has 100% coverage with a parameter description ('The YAML content of the WAF rule to validate'). The tool description adds 'syntactically correct' but does not elaborate on the parameter's format, length limits, or encoding. Baseline 3 due to high schema coverage, but no added value.

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 verb 'validate' and the specific resource 'CrowdSec WAF rule YAML', and specifies the scope 'syntactically correct'. This distinguishes it from sibling tools like 'lint_waf_rule' which may focus on style or best practices.

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 such as 'lint_waf_rule' or 'validate_scenario_yaml'. There is no mention of prerequisites or context where validation is appropriate.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 24 tool updatesv0.1.0
    • First observedcurl_waf_endpoint
    • First observeddeploy_scenario
    • First observeddeploy_waf_rule
    • First observedexplain_scenario
    • First observedfetch_nuclei_exploit
    • First observedgenerate_waf_rule
    • First observedgenerate_waf_tests
    • First observedget_scenario_examples
    • First observedget_scenario_expr_helpers
    • First observedget_scenario_prompt
    • First observedget_waf_examples
    • First observedget_waf_pr_prompt
    • First observedget_waf_prompt
    • First observedget_waf_rule_challenge_prompt
    • First observedget_waf_top_level_prompt
    • First observedlint_scenario_yaml
    • First observedlint_waf_rule
    • First observedmanage_scenario_stack
    • First observedmanage_waf_stack
    • First observedprepare_waf_pr
    • First observedrun_waf_tests
    • First observedtest_scenario
    • First observedvalidate_scenario_yaml
    • First observedvalidate_waf_rule

TDQS

B3.1/5.0
Disambiguation2/5

Many tools have overlapping purposes, especially the prompt-getting tools (get_waf_top_level_prompt, get_waf_prompt, get_waf_examples, generate_waf_rule). The testing workflow is ambiguous between run_waf_tests, manage_waf_stack, and curl_waf_endpoint. Agents could easily confuse which tool to use for a given task.

Naming Consistency3/5

Most names use snake_case with verb_noun pattern, but verbs vary inconsistently (get, generate, validate, lint, deploy, prepare, fetch, manage, curl, explain, test). Some tools omit the 'waf' prefix (e.g., fetch_nuclei_exploit, manage_scenario_stack) breaking the pattern. The naming is readable but not uniform.

Tool Count3/5

24 tools is on the higher side, but the server covers two distinct domains (WAF rules and scenarios). However, many prompt-related tools could be consolidated (e.g., get_waf_prompt, get_waf_top_level_prompt, get_waf_examples). The count feels slightly bloated.

Completeness4/5

The tool set covers the full lifecycle for both WAF rules and scenarios: generation, validation, linting, testing, deployment, and PR preparation. Minor gaps like missing a direct 'update' operation, but the domain is authoring-oriented, which is well-covered.

Maintenance

ActivitySlowing
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

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/crowdsecurity/crowdsec-local-mcp'

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