Skip to main content
Glama
tr4m0ryp
by tr4m0ryp

EvalKit — Classifier Robustness Evaluation Toolkit

Python 3.11+ License Anthropic

Multi-technique evaluation toolkit for testing AI safety classifier robustness against query decomposition, obfuscation, and multi-agent orchestration attacks. MCP plugin for Claude Code.

Quick Start

uv sync                          # install everything
claude                           # MCP tools auto-loaded from .mcp.json

Related MCP server: llamator-mcp-server

Architecture

User Query → SPLITTER → [Encoder → Wrapper → ApiClient] × N → MERGER → Report

Usage

In Claude Code (MCP)

Tool

Purpose

eval_classifier_robustness

Full eval pipeline

eval_decompose_query

Preview query decomposition

eval_obfuscation_evasion

Test homoglyph substitution

eval_status

Check configuration

Via CLI

python3 run.py decompose "query" 5        # decompose into sub-queries
python3 run.py eval "query"               # full evaluation pipeline
python3 run.py obfuscate "text"           # test obfuscation

Benchmark

python3 benchmark.py                     # dry run (no API key)
python3 benchmark.py --quick             # single query smoke test
python3 benchmark.py --json report.json  # save JSON results
python3 benchmark.py --html report.html  # save HTML report
ANTHROPIC_API_KEY=sk-... python3 benchmark.py  # live test

Configuration

Parameter

Values

Default

Description

obfuscation

none, light, moderate, aggressive

moderate

Homoglyph replacement level

framing

fiction, study_guide, academic, documentation, translation, none

study_guide

Narrative framing strategy

max_pieces

1–20

10

Max sub-query decompositions

padding_tokens

0–10000

5000

Long-context padding per query

multi_agent

true, false

true

Multi-agent orchestration

helper_enabled

true, false

true

Helper model with filters removed

Project Structure

evalkit/
├── evalkit/             # Core modules
│   ├── splitter.py      # Query → sub-questions
│   ├── encoder.py       # Unicode homoglyph engine
│   ├── wrapper.py       # Narrative wrapping
│   ├── api_client.py    # API client + model routing
│   ├── merger.py        # Output stitching + metrics
│   ├── context_builder.py  # Multi-turn conversation
│   ├── agent_router.py  # Agent pack coordination
│   └── models.py        # Data classes + enums
├── evalkit_server.py    # MCP server (FastMCP)
├── run.py               # CLI wrapper (no MCP needed)
├── benchmark.py         # Test matrix runner
├── tests/               # Pytest test suite
├── docs/                # Documentation
├── .mcp.json            # Claude Code auto-discovery
└── CLAUDE.md            # Claude Code instructions

Research Techniques

See docs/TECHNIQUES.md for detailed documentation of each technique.

References

License

MIT — authorized security research and defense evaluation only.

Available Tools

4 tools
eval_classifier_robustnessC

Process a query through the configured evaluation stages.

Returns a formatted analysis with per-segment routing information, aggregate metrics, and processing results.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
topicNocomputer security
obfuscationNomoderate
framingNostudy_guide
max_piecesNo
padding_tokensNo
multi_agentNo
helper_enabledNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It mentions output format but does not state whether the tool is read-only, requires authentication, or has side effects. The analysis nature suggests safety, but it's 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.

Conciseness4/5

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

The description is concise at two sentences with no wasted words. However, front-loading is acceptable.

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 8 parameters, no annotations, and an output schema, the description is notably incomplete. It glosses over evaluation stages, parameter roles, and output specifics.

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% (no parameter descriptions), and the tool description adds no meaning beyond parameter names. It does not explain 'query', 'topic', 'obfuscation', or other parameters.

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 the tool processes a query through evaluation stages and returns analysis, which is moderately clear. However, it is vague about what 'configured evaluation stages' entails and does not differentiate from sibling tools like eval_decompose_query or eval_obfuscation_evasion.

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 context, prerequisites, or exclusions.

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

eval_decompose_queryC

Split a query into conceptual sub-components for analysis.

Divides the input into constituent parts based on topic boundaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_piecesNo
auto_splitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits. It only states that the query is split into parts based on topic boundaries. It does not mention side effects, whether the operation is read-only, how the splitting algorithm works, or any constraints. This is insufficient for a behavioral understanding.

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 concise at two sentences, with no redundant information. The first sentence states the core purpose, and the second adds detail. It is front-loaded and efficient, though some might argue it is too brief given the missing parameter details.

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 presence of an output schema (not shown), the description does not need to explain return values, but it still lacks information about parameters, usage context, and behavioral traits. The tool has three parameters with no description, which makes it incomplete for effective use.

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 for parameters, so the description must compensate. However, the description does not mention any of the three parameters (query, max_pieces, auto_split) or their semantics. It only describes the high-level function, providing no meaning beyond the parameter names in the schema.

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 splits a query into conceptual sub-components based on topic boundaries. It is specific about the action and resource, and while it doesn't explicitly differentiate from siblings, the sibling tools have distinct purposes (robustness, evasion, status), so confusion is unlikely.

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, contexts, or scenarios where the tool is appropriate or inappropriate. The description lacks any exclusions or alternative tool names.

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

eval_obfuscation_evasionB

Analyze character-level text transformations.

Applies configurable character substitutions and reports detected patterns in the input text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
levelNomoderate

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

The description states the tool applies character substitutions and reports patterns, indicating a non-destructive analysis. However, it does not disclose specifics like scope of patterns, required permissions, or edge cases. With no annotations, the description carries the full burden but gives only basic transparency.

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 concise: two sentences covering the action and mechanism. It front-loads the purpose. However, it could be more structured (e.g., separate 'when to use' section). Still, every sentence earns its place.

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 2 parameters and no annotations, the description is insufficient for an agent to use it correctly. It lacks details on input format, level options, and output nature (though output schema exists). For a simple analysis tool, it meets the bare minimum but leaves gaps.

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%. The description does not explain the 'text' or 'level' parameters. 'Configurable character substitutions' vaguely hints at 'level', but does not describe expected values or effect. The description adds no semantic value beyond what the schema provides, which is minimal.

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: analyzing character-level text transformations and reporting detected patterns. The verb 'analyze' paired with the resource 'character-level text transformations' is specific. Sibling tools have distinct purposes (classifier robustness, query decomposition, status), so this tool 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 explicit guidance on when to use this tool versus alternatives. The description implies it's for detecting obfuscation/evasion, but does not provide when-not-to-use or mention sibling tools. An agent would need to infer usage 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.

eval_statusA

Check server configuration and connection status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, and the description only states the tool 'check's configuration and status, which is a generic read behavior. No additional behavioral context (e.g., auth needs, side effects) is disclosed beyond the obvious.

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 purpose without any redundant or extraneous information.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, output schema present), the description adequately covers its purpose. No additional details are necessary for this self-contained status check.

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 no parameters, so the description does not need to add meaning beyond the schema. A baseline score of 4 is appropriate as there is no information to provide.

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 'check' with resources 'server configuration and connection status', clearly distinguishing it from sibling tools like eval_classifier_robustness which have different purposes.

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 tool is for checking status, and sibling names suggest distinct use cases (e.g., robustness, decomposition), but no explicit guidance on when to use or avoid using this tool is given.

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.

  1. 4 tool updatesv0.2.0
    • First observedeval_classifier_robustness
    • First observedeval_decompose_query
    • First observedeval_obfuscation_evasion
    • First observedeval_status

TDQS

B3.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct evaluation function: robustness classification, query decomposition, obfuscation analysis, and server status. No overlap in purpose.

Naming Consistency4/5

All tools share the 'eval_' prefix, but the suffixes vary in pattern (noun_noun for classifier_robustness, verb_noun for decompose_query, noun_noun for obfuscation_evasion, and single noun for status). Mostly consistent with minor deviation.

Tool Count5/5

Four tools is well-scoped for an evaluation kit, covering multiple evaluation stages without excess or deficiency.

Completeness4/5

The set covers core evaluation operations and status checking, though a tool for retrieving historical results or configuring evaluations would round it out. Minor gap, not severe.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers