Skip to main content
Glama
legionultramax

Harris HawkEye MCP

Harris HawkEye MCP

Detection Engineering Command Center for Claude Code

A Model Context Protocol (MCP) server purpose-built for detection engineers. Indexes 12,800+ detection rules from five major detection ecosystems (Sigma, KQL/Sentinel, Splunk ESCU, Elastic, Sublime), enriches them with MITRE ATT&CK v18.1, Atomic Red Team, LOLBAS, LOLFarm (lolol.farm), and 15+ threat intelligence sources — then exposes everything through 122 tools and 8 Claude Code skills that implement the full detection engineering lifecycle.

The primary output is kill-chain correlated queries (KQL + SPL + Sigma), not isolated atomic rules.

Tools Skills Detections MITRE Techniques ART TI Sources LOLFarm


What It Does

Capability

Description

Multi-source detection search

Query 12,810 rules (KQL 5,051 · Sigma 3,108 · Splunk ESCU 1,966 · Elastic 1,689 · Sublime 996) from one interface

MITRE ATT&CK enrichment

835 techniques, 187 groups, 787 software, 52 campaigns, 20,048 relationships — all local, all queryable

Atomic Red Team validation

1,770 adversary simulation tests cross-referenced against your detection rules for coverage gaps

LOLFarm intelligence

Aggregated Living-Off-The-Land data from 7 sources: LOLDrivers, HijackLibs, LOLRMM, LoFP, WADComs, LOTS, MalAPI

LOLBAS hard gate

Every binary-scoped rule must enumerate all known abuse patterns before a single condition is written

Threat intelligence

15+ sources: abuse.ch (URLhaus, ThreatFox, MalwareBazaar), AlienVault OTX, CISA/FBI/NSA/NCSC-UK/CERT-EU, Malpedia, NVD/EPSS, ANY.RUN

CVE-to-detection

Input a CVE ID → get KQL, SPL, and Sigma rules with EPSS scores and KEV status

Coverage engine

138 telemetry mappings, 4-state classification (COVERED/DETECTABLE/PARTIAL/GAP), Pareto-optimal log source recommendations

Knowledge graph

Persist decisions, learnings, and entity relationships across sessions — tribal knowledge that compounds

Kill-chain synthesis

Stitch atomic rules into correlated multi-phase queries that fire on full attack sequences, not individual events


Related MCP server: Security Detections MCP

Architecture

                    ┌─────────────────────────────────────────┐
                    │          Claude Code + 8 Skills          │
                    │  advisory-ingest / threat-report-parser  │
                    │  → data-source-mapper → detect-engineer  │
                    │  → detection-validator → killchain-synth │
                    │  → coverage-reporter → navigator-layer-gen│
                    └──────────────────┬──────────────────────┘
                                       │ MCP Protocol
                    ┌──────────────────▼──────────────────────┐
                    │        Harris HawkEye MCP Server         │
                    │                                          │
                    │  ┌─────────┐ ┌──────────┐ ┌───────────┐ │
                    │  │Detection│ │ Threat   │ │ MITRE     │ │
                    │  │Tools(15)│ │ Intel(59)│ │ ATT&CK(11)│ │
                    │  └─────────┘ └──────────┘ └───────────┘ │
                    │  ┌─────────┐ ┌──────────┐ ┌───────────┐ │
                    │  │ART (6)  │ │Coverage  │ │LOLFarm(12)│ │
                    │  │         │ │Engine (6)│ │           │ │
                    │  └─────────┘ └──────────┘ └───────────┘ │
                    │  ┌─────────┐ ┌──────────┐ ┌───────────┐ │
                    │  │Knowledge│ │Sublime   │ │ Report    │ │
                    │  │Graph (8)│ │Security(4)│ │Generator(1)│ │
                    │  └─────────┘ └──────────┘ └───────────┘ │
                    └──────────────────┬──────────────────────┘
                                       │
                    ┌──────────────────▼──────────────────────┐
                    │     SQLite (sql.js WASM) — 97 MB DB      │
                    │                                          │
                    │  12,810 detections │ 835 techniques       │
                    │  1,770 ART tests   │ 138 telemetry maps   │
                    │  LOLFarm 7 tables  │ Knowledge graph      │
                    └─────────────────────────────────────────┘

Quick Start

Prerequisites

  • Node.js 18+

  • Claude Desktop or Claude Code

Installation

git clone https://github.com/legionultramax/Detection-Engineering-MCP.git
cd Detection-Engineering-MCP

# Install dependencies
npm install

# Build
npm run build

Download Detection Rules

Clone the four rule repositories into the rules/ directory:

# SigmaHQ
git clone https://github.com/SigmaHQ/sigma.git rules/sigma

# Splunk Security Content (ESCU)
git clone https://github.com/splunk/security_content.git rules/splunk

# Elastic Detection Rules
git clone https://github.com/elastic/detection-rules.git rules/elastic

# Azure Sentinel (KQL)
git clone https://github.com/Azure/Azure-Sentinel.git rules/sentinel

Configure Claude Desktop

Add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "harris-hawkeye": {
      "command": "node",
      "args": ["<path-to>/security-detections-mcp/dist/index.js"],
      "env": {
        "SIGMA_PATHS": "<path-to>/security-detections-mcp/rules/sigma/rules",
        "SPLUNK_PATHS": "<path-to>/security-detections-mcp/rules/splunk/detections",
        "ELASTIC_PATHS": "<path-to>/security-detections-mcp/rules/elastic/rules",
        "KQL_PATHS": "<path-to>/security-detections-mcp/rules/sentinel/Hunting Queries",
        "STORY_PATHS": "<path-to>/security-detections-mcp/rules/splunk/stories"
      }
    }
  }
}

Restart Claude Desktop after configuration. First launch auto-indexes all rules into SQLite (~2 minutes).

Environment Variables

Variable

Description

Required

SIGMA_PATHS

Comma-separated paths to Sigma rule directories

Yes

SPLUNK_PATHS

Comma-separated paths to Splunk ESCU detection directories

Yes

ELASTIC_PATHS

Comma-separated paths to Elastic rule directories

Yes

KQL_PATHS

Comma-separated paths to Sentinel KQL directories (auto-discovers sibling Detections/ and Solutions/ dirs)

Yes

STORY_PATHS

Path to Splunk analytic stories

Optional

OTX_API_KEY

AlienVault OTX API key (free)

For OTX tools

MALPEDIA_API_KEY

Malpedia API key (free)

For full Malpedia access


Detection Engineering Skills

Eight Claude Code skills implement the full detection engineering lifecycle. Each skill is a self-contained workflow that calls MCP tools — nothing is hallucinated from training data.

Advisory / Threat Report / Vendor Blog / DFIR Writeup
        │
        ├──────────────────────────┐
        ▼                          ▼
┌────────────────────┐  ┌────────────────────┐
│   advisory-ingest  │  │threat-report-parser│  Parse unstructured intel →
│  CISA/vendor → gap │  │  scored rules out  │  scored deployment-ready rules
└────────────────────┘  └────────────────────┘
        │                          │
        └──────────────┬───────────┘
                       ▼
┌────────────────────┐
│  data-source-mapper│  Confirm: do we have the telemetry to detect this?
└────────────────────┘
        │
        ▼
┌────────────────────┐
│  detect-engineer   │  Build: Sigma + KQL + SPL rules grounded in ART + LOLBAS + LOLFarm
└────────────────────┘
        │
        ▼
┌────────────────────┐
│detection-validator │  Prove: ART-mapped test runbook, DEPLOY-READY verdict
└────────────────────┘
        │
        ▼
┌────────────────────┐
│  killchain-synth   │  Correlate: single multi-phase query across all phases
└────────────────────┘
        │
        ▼
┌────────────────────┐
│  coverage-reporter │  Document: hunt cards + optional Word (.docx) export
└────────────────────┘
        │
        ▼
┌────────────────────┐
│navigator-layer-gen │  Visualize: ATT&CK Navigator JSON layers
└────────────────────┘
        │
        ▼
    Production SIEM

Skill

What It Does

Trigger

detect-engineer

Writes production-ready Sigma, KQL, SPL, ESCU YAML, or Elastic TOML rules. LOLBAS is a hard gate — every binary-scoped rule must enumerate all known abuse patterns first. LOLFarm enriches with driver, DLL hijack, RMM, and FP intelligence. 6-dimension validation (Evasion, Fields, Paths, FP, Syntax, LOLFarm).

"Write a detection for X", "Sigma for T1003", "my rule FPs too much"

advisory-ingest

Parses CISA advisories, vendor reports, DFIR writeups. Extracts T-IDs, CVEs, IOCs, validates against local data, produces prioritized gap table.

"New CISA advisory dropped", "check this report"

threat-report-parser

Turns unstructured intel (vendor blogs, Red Team writeups, malware analysis, conference talks) into scored, deployment-ready Sigma/KQL/SPL detection rules. Deeper than advisory-ingest — fully operationalizes a report.

"Parse this Mandiant blog into rules", "operationalize this Red Team writeup"

killchain-synth

Stitches atomic rules into correlated multi-phase queries (KQL let-join, SPL phase-scored, Sigma correlation). Only fires when the full attack sequence is observed on the same host/identity within a time window.

"Correlate these techniques into one alert"

detection-validator

Maps detection conditions to ART test artifacts, scores field-level coverage, generates executable test runbooks. Issues DEPLOY-READY / DEPLOY-WITH-CAUTION / DO NOT DEPLOY verdict.

"Will this rule actually fire?"

data-source-mapper

Maps techniques to required MITRE data sources, identifies collection gaps, outputs exact Sysmon XML / audit policy / GPO configuration.

"Do I have the logs needed for T1003?"

coverage-reporter

Produces structured hunt cards with confidence and priority scores, optionally exports as Word document.

"Generate hunt report", "export to Word"

navigator-layer-gen

Generates ATT&CK Navigator-compatible JSON layers: coverage heatmaps, actor mapping, gap analysis overlays.

"Generate a navigator layer"


Data Indexed

Detection Rules — 12,810

Source

Rules

Format

Azure Sentinel (KQL)

5,051

KQL/YAML

SigmaHQ

3,108

YAML

Splunk ESCU

1,966

YAML

Elastic

1,689

TOML/YAML

Sublime Security

996

YAML

MITRE technique coverage: 602 of 835 techniques (72.1%) have at least one detection rule mapped.

MITRE ATT&CK v18.1

Entity

Count

Techniques

835

Threat Groups

187

Malware

696

Tools

91

Campaigns

52

Mitigations

268

Data Sources

38

Data Components

109

Relationships

20,048

Atomic Red Team — 1,770 Tests

Platform

Tests

Windows

1,205

Linux

384

macOS

245

Cloud (AWS/Azure/GCP)

42

Container

19

LOLFarm — 7 Sources

Aggregated Living-Off-The-Land intelligence from lolol.farm:

Source

What It Covers

Seed Entries

LOLDrivers

Vulnerable kernel drivers used in BYOVD attacks (hashes, CVEs, actor attribution)

10

HijackLibs

DLL hijacking opportunities (phantom, sideloading, search order, env variable)

10

LOLRMM

Legitimate RMM tools abused for C2/persistence (executables, network artifacts, registry)

10

LoFP

Known false positives mapped to ATT&CK techniques with suppression logic

20

WADComs

Offensive AD tools and commands (Impacket, BloodHound, Rubeus, Mimikatz, CrackMapExec)

10

LOTS

Legitimate domains/services abused for data exfil and C2 (pastebin, Discord, ngrok, etc.)

14

MalAPI

Windows API calls commonly used by malware (process injection, credential access, MBR wipe)

12

Seed data provides instant offline availability for the most critical entries. Full databases are expandable via GitHub sync.

Coverage Engine — 138 Telemetry Mappings

Pre-seeded mappings that bridge EventID → MITRE Data Source/Component across 19 event sources: Windows Security, Sysmon, PowerShell, MDE, CrowdStrike, Linux auditd, AWS CloudTrail, Azure AD, and more.


Tools

Detection Tools (15)

Tool

Description

search_detections

Full-text search across all enriched fields (FTS5)

get_detection

Get full rule details by ID

list_by_mitre

List detections by ATT&CK technique ID (includes logsource, data_sources, process_names)

list_by_severity

Filter by severity level

list_by_mitre_tactic

Filter by ATT&CK tactic

list_by_process_name

Find rules referencing a specific executable

list_by_cve

Find rules tagged with a CVE

list_by_logsource

Filter Sigma rules by logsource (product/category/service)

list_by_data_source

Find rules by required data source

get_stats

Detection statistics by source and severity

analyze_coverage

ATT&CK technique coverage analysis

identify_gaps

Detection gaps for threat profiles

cve_to_detection

Generate KQL/SPL/Sigma from CVE ID

convert_yara_to_sigma

Convert YARA to Sigma (draft — always refine)

convert_sigma_to_kql

Convert Sigma to KQL for Sentinel

MITRE ATT&CK Tools (11)

Tool

Description

get_threat_group

APT details, aliases, techniques

search_threat_groups

Search groups by keyword

get_software

Malware/tool details with technique mapping

search_software

Search software by keyword

lookup_mitre_technique

Full technique details, detection notes, data sources

search_mitre_techniques

Search techniques by keyword

get_groups_using_technique

All groups using a specific technique

get_software_using_technique

All software using a specific technique

get_mitigations

Defensive controls per technique

get_data_sources

Required data sources for detection

list_data_sources

All MITRE data sources with components

Atomic Red Team Tools (6)

Tool

Description

art_get_tests

All ART tests for a technique (with platform filter)

art_search

Full-text search across 1,770+ tests

art_get_test

Full test details by GUID

art_validate_technique

Cross-reference ART tests against detection rules

art_get_stats

Index statistics

art_coverage_report

Batch coverage validation across technique sets

LOLFarm Tools (12)

Tool

Description

lookup_loldriver

Look up a vulnerable driver by name or SHA256 hash

lookup_hijacklib

Look up DLL hijacking opportunities by DLL or executable name

lookup_lolrmm

Look up RMM tool abuse details (executables, network artifacts, registry)

lookup_lofp

Get known false positives for a technique ID with suppression logic

lookup_wadcom

Look up offensive AD tool/command details

lookup_lots_domain

Check if a domain is a known legitimate service abused for C2/exfil

lookup_malapi

Look up a Windows API for malware usage context

search_lolfarm

Unified cross-source search across all 7 LOLFarm databases

list_loldrivers

List all indexed vulnerable drivers

list_lolrmm

List all indexed RMM tools

list_hijacklibs

List all indexed DLL hijack opportunities

get_lolfarm_context

Key tool — get all LOLFarm intelligence for a technique ID (queries all 7 tables, returns only sources with data)

Threat Intelligence Tools (59)

Category

Tools

Core Intel (7)

lookup_mitre_technique, search_mitre_techniques, lookup_lolbas, list_lolbas, check_cisa_kev, get_threat_profile, analyze_ioc

abuse.ch (12)

urlhaus_lookup_url/host/tag, threatfox_search_ioc/family/tag, threatfox_get_recent_iocs, bazaar_lookup_hash, bazaar_search_family/tag, bazaar_get_recent_samples, bazaar_get_imphash_siblings

AlienVault OTX (7)

otx_pivot_ip/domain/hash/url, otx_search_actor, otx_get_pulse_iocs, otx_subscribed_feed

Government/CERT (10)

cisa_search_advisories, ncsc_uk_search, nsa_search_advisories, fbi_flash_search, cert_eu_search, anssi_search, jpcert_search, acsc_search, cccs_search, govt_joint_advisory_search

Correlation Engine (4)

ti_multi_source_ttp_lookup, ti_actor_full_profile, ti_hunt_package, ti_daily_brief

Vulnerability Intel (10)

nvd_cve_lookup, epss_score_lookup/bulk_check, project_zero_search, exploit_db_search, rapid7_search, qualys_search, tenable_search, zdi_search, google_tag_search

Malware Research (9)

malpedia_search/actor_profile/family_profile, anyrun_trending, bleeping_search, malwarebytes_search, sans_isc_search, vx_underground_search, misp_warninglist_check

Coverage Engine Tools (6)

Tool

Description

coverage_ingest_log

Parse raw logs or structured input, map to MITRE data sources

coverage_assess_session

Full ATT&CK matrix assessment — classifies every technique into 4 states

coverage_gaps_detail

Detailed gap report with missing data sources and remediation

coverage_compare

Compare before/after sessions — shows improvement

coverage_recommend

Pareto-optimal log source recommendations ranked by gap closure

coverage_list_mappings

View all 138 telemetry mappings and session history

Knowledge Graph Tools (8)

Tool

Description

create_entity

Create entity in knowledge graph

search_entities

Search entities by name/description

create_relation

Create relation between entities

log_decision

Log analytical decision with reasoning

get_decisions

Retrieve logged decisions

add_learning

Store insight/learning from analysis

get_learnings

Get learnings by topic

get_knowledge_summary

Summary of knowledge graph contents

Sublime Security & Report Generator

Tool

Description

sublime_search

Search Sublime Security email detection rules

sublime_get_rule

Get full Sublime rule details

sublime_get_stats

Sublime index statistics

sublime_sync

Sync Sublime rules from GitHub

generate_hunt_report

Generate threat hunt report (Word .docx export)


Prompts (6)

Prompt

Description

Parameters

analyze-technique

Analyze a MITRE ATT&CK technique

technique_id

threat-hunt

Generate threat hunting plan

profile

coverage-report

Generate detection coverage report

focus

investigate-ioc

Investigate an indicator of compromise

ioc

detection-review

Review and analyze a detection rule

detection_id

yara-to-sigma

Convert YARA rule to Sigma

yara_rule


Example Workflows

Write a Detection Rule

"Write a Sigma rule for LSASS credential dumping"
"KQL detection for T1059.001 PowerShell abuse — MDE, no Sysmon"
"ESCU YAML for scheduled task persistence"
"Elastic TOML rule for lateral movement via WMI"
"My rule FPs on SCCM — help me tune it"

Hunt an APT

"Full profile on APT29 — what's my coverage?"
"Generate detections for all Volt Typhoon techniques I'm missing"
"Kill-chain correlation query for Lazarus Group attack sequence"

Respond to an Advisory

"Parse this CISA advisory and show me coverage gaps"
"Do I have the telemetry to detect these techniques?"
"Generate a navigator layer showing my gaps vs this threat"

Assess Coverage

"Ingest this Windows Event 4688 log and map it to MITRE"
"What log sources should I enable to close the most gaps?"
"Compare my coverage before and after adding Sysmon"

Investigate IOCs

"Look up this hash in MalwareBazaar and ThreatFox"
"Pivot on this IP across OTX"
"Is this domain on any MISP warninglist?"

Project Structure

security-detections-mcp/
├── src/
│   ├── index.ts                    # Entry point — schema init, auto-indexing, server start
│   ├── server.ts                   # MCP server setup
│   ├── indexer.ts                  # Detection rule indexer (enriched fields, FTS5)
│   ├── db/
│   │   ├── connection.ts           # SQLite (sql.js WASM) + FTS5 + migrations
│   │   ├── threat-intel.ts         # Threat intel schema (LOLBAS, CISA KEV)
│   │   ├── knowledge.ts            # Knowledge graph schema
│   │   ├── mitre-attack.ts         # MITRE ATT&CK STIX v18.1 parser
│   │   ├── atomic-red-team.ts      # ART repo sync + YAML indexer
│   │   ├── coverage-engine.ts      # Coverage engine + 138 telemetry mappings
│   │   ├── lolfarm.ts              # LOLFarm 7-table schema + query functions
│   │   └── sublime-rules.ts        # Sublime Security rules
│   ├── handlers/
│   │   ├── tools.ts                # Tool dispatch handler
│   │   ├── prompts.ts              # Prompt definitions (6)
│   │   └── resources.ts            # Resource handler (stats, coverage, LOLFarm)
│   └── tools/
│       ├── registry.ts             # Tool registry + defineTool pattern
│       ├── index.ts                # Tool aggregation — registerAllTools()
│       ├── detections/             # 15 detection search/analysis tools
│       ├── threat-intel/           # 59 TI tools
│       │   ├── index.ts            # Core: abuse.ch, OTX, LOLBAS, IOC analysis
│       │   ├── government/         # CISA, FBI, NSA, NCSC-UK, CERT-EU, ANSSI, JPCERT, ACSC, CCCS
│       │   ├── correlation/        # Multi-source correlation engine
│       │   ├── exploit/            # NVD, EPSS, Exploit-DB, Rapid7, Qualys, Tenable, ZDI
│       │   └── community/          # Malpedia, ANY.RUN, SANS ISC, BleepingComputer
│       ├── mitre-attack/           # 11 MITRE ATT&CK query tools
│       ├── atomic-red-team/        # 6 ART validation tools
│       ├── coverage-engine/        # 6 coverage assessment tools
│       │   ├── parser.ts           # Log parser (XML, JSON, auditd, CEF, k=v)
│       │   ├── mapper.ts           # Telemetry → MITRE data component mapper
│       │   └── assessor.ts         # Graph traversal + 4-state classifier
│       ├── lolfarm/                # 12 LOLFarm tools
│       │   ├── index.ts            # Tool definitions + lazy seed loading
│       │   └── seed.ts             # Curated seed data (86 entries across 7 sources)
│       ├── knowledge/              # 8 knowledge graph tools
│       ├── sublime/                # Sublime Security rule tools
│       └── report-generator/       # Hunt report generator (Word .docx)
├── rules/                          # Downloaded detection rule repos
│   ├── sigma/                      # SigmaHQ
│   ├── splunk/                     # Splunk ESCU + analytic stories
│   ├── elastic/                    # Elastic detection rules + MITRE STIX bundle
│   └── sentinel/                   # Azure Sentinel KQL
├── dist/                           # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md

~/.claude/skills/                   # Claude Code skills (per-user, not in repo)
├── detect-engineer/
│   ├── SKILL.md                    # 7-step pipeline, 5-platform output, LOLBAS gate, LOLFarm validation
│   └── references/                 # sigma-template, fp-*, kql-patterns, spl-patterns, validation-rubric, etc.
├── advisory-ingest/
├── threat-report-parser/
├── killchain-synth/
├── detection-validator/
├── data-source-mapper/
├── coverage-reporter/
└── navigator-layer-gen/

How the detect-engineer Skill Works

The detect-engineer skill is the core rule authoring pipeline. When you ask "write a detection for X", it runs a 7-step process:

  1. Classify — New rule, fix/tune, convert, or validate? Which platform(s)?

  2. Coverage assessment — Parallel queries: list_by_mitre, search_entities, get_learnings, get_lolfarm_context, and lookup_lolbas (for binaries)

  3. Coverage gate — Score existing coverage. ≥95% = refine path. <95% = build path. Zero = full build.

  4. Author — Behavioral invariant analysis (what's hard for the attacker to change?), narrowing test (would an admin trigger this?), evasion test (can the attacker bypass by renaming one thing?). FP filters sourced per-logsource from reference files.

  5. Validate — 6-dimension scoring: Evasion, Fields, Paths, FP, Syntax, LOLFarm. Composite < 3.0 triggers iteration.

  6. Output — Structured format with coverage score, validation matrix, FP documentation, data requirements, and gaps.

  7. Persist — Entities, learnings, and decisions saved to knowledge graph for future sessions.

Platform disambiguation: "Splunk"/"SPL" → bare SPL query. "ESCU"/"security_content" → full YAML with tstats + RBA + tests. "Elastic TOML" → .toml rule file. "KQL"/"Sentinel" → bare KQL. Default = Sigma only.


Technology

  • Runtime: Node.js 18+ with TypeScript (ES modules)

  • Database: sql.js — SQLite compiled to WebAssembly, runs in-process with no native dependencies

  • Protocol: Model Context Protocol (MCP) over stdio

  • Indexing: Auto-indexes on first startup, incremental re-index on source changes

  • Storage: ~/.cache/security-detections-mcp/detections.db (~97 MB)


License

MIT

Available Tools

129 tools
add_learningA

Add a learning or insight gained during analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for categorization
topicYesTopic area (e.g., "ransomware", "powershell", "lateral movement")
sourceNoSource of the learning
insightYesThe insight or learning
confidenceNoConfidence in this learning 0-1

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool 'Adds' something, implying a write operation, but it does not disclose whether entries are append-only, deduplicated, persisted for later retrieval, or what kind of response is returned. For a mutation tool, this is a meaningful 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?

The description is a single, front-loaded sentence that states the action, object, and context without any redundant phrasing. It is appropriately sized for a simple mutation tool whose parameters are fully self-documented in the schema.

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 schema fully describes the parameters, so the invocation details are mostly covered. However, the description does not mention where the learning is stored, whether it can be retrieved later, or how it relates to sibling tools like get_learnings, leaving some context incomplete for an agent deciding whether and how to call it.

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 the input schema already documents all five parameters, including examples for topic and the 0-1 range for confidence. The description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 applies.

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

Purpose4/5

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

The description uses a specific verb ('Add') and a specific resource ('learning or insight gained during analysis'), making the tool's purpose clear. It distinguishes from search tools and even from log_decision by framing this as capturing analysis-derived knowledge, though it does not explicitly name sibling alternatives.

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?

'Gained during analysis' provides a clear contextual trigger for when to use this tool: when the agent has produced a learning or insight while analyzing. It does not explicitly describe exclusions or alternatives, but the purpose of adding knowledge is well-enough scoped.

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

analyze_coverageB

Get MITRE ATT&CK coverage stats: tactic breakdown, top 10 covered techniques, and weak-spot tactics (coverage < 50% of best tactic). Returns ~2KB. Filter by source_type to scope to a single rule source.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_typeNoFilter by source: sigma, splunk_escu, elastic, kql

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It conveys that this is a read-only reporting operation via 'Get' and 'Returns', and adds the useful detail that the payload is ~2KB. It does not discuss auth, rate limits, or default behavior when source_type is omitted, but the risk profile appears low.

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 compact and front-loaded with the main purpose, followed by a helpful size hint and a concise parameter note. Every sentence adds value, though the output list is slightly dense.

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

Completeness4/5

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

Given the simple one-parameter surface, the description adequately explains what results are returned, including a payload size estimate. With no output schema, it sufficiently covers return expectations, although it could clarify the all-sources default behavior when source_type is not provided.

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 the schema already documents the parameter. The description adds the scoping intent ('scope to a single rule source') and implies the filter is optional, but it does not specify what happens when the parameter is omitted.

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 retrieves MITRE ATT&CK coverage stats and enumerates the exact outputs: tactic breakdown, top 10 covered techniques, and weak-spot tactics. It is specific about the resource and result, though it does not explicitly differentiate itself from sibling tools like get_coverage_summary or get_top_gaps.

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 explains how to use the optional source_type filter but gives no guidance on when to choose this tool over the many overlapping MITRE/coverage-related siblings. There are no explicit alternatives or exclusions, leaving the agent to infer the appropriate context.

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

analyze_iocC

Identify the type of an Indicator of Compromise and provide analysis guidance

ParametersJSON Schema
NameRequiredDescriptionDefault
iocYesThe IOC value to analyze (hash, IP, domain, URL, etc.)

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 carries the full burden of behavioral disclosure. It says the tool identifies IOC type and provides analysis guidance, but it does not describe what analysis is performed, whether external lookups occur, or what the output looks like. This is thin but not contradictory.

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 the core action front-loaded and no filler. The phrase 'analysis guidance' is somewhat vague, but the overall structure is compact and easy to parse.

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 single-parameter tool, the definition is minimally sufficient for invocation, but with no output schema or annotations it does not explain what the returned guidance looks like or how it relates to sibling IOC search tools. An agent can call it correctly but may not know what to expect in response.

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%, and the schema already documents the ioc parameter as 'hash, IP, domain, URL, etc.' The description adds the idea of identifying the type but no additional parameter-level detail, so the baseline score of 3 is appropriate.

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 a specific verb ('Identify') and resource ('type of an Indicator of Compromise') and adds that it provides analysis guidance. However, it does not explicitly differentiate this tool from sibling IOC lookup tools such as threatfox_search_ioc or otx_pivot_hash, so the distinction is somewhat implicit.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many sibling IOC lookup and pivot tools. It neither states conditions for use nor names alternatives, leaving the agent to infer selection 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.

art_coverage_reportA

Batch validation of detection coverage across multiple MITRE techniques using Atomic Red Team tests. For each technique, checks if ART tests exist and if detection rules are present. Returns an overall coverage matrix, prioritized gaps, and per-technique status. Use for threat actor profile validation or coverage audits.

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idsYesArray of MITRE technique IDs to validate (e.g., ["T1059.001", "T1547.001", "T1505.003"])

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does a solid job: it discloses the operational behavior (checks for ART test existence and detection rule presence per technique) and the return artifacts (coverage matrix, prioritized gaps, per-technique status). It implies a read-only report operation, though it does not explicitly confirm read-only status or clarify whether prior coverage data ingestion is required.

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 compact and front-loaded, with the core purpose in the first clause and the output list and use cases following. There is minor redundancy between 'Batch validation of detection coverage' and 'For each technique, checks if ART tests exist and if detection rules are present,' but each sentence still earns its place.

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 single-parameter tool with no output schema and no annotations, the description is reasonably complete: it covers inputs, mechanism, return values, and use cases. The main gaps are the lack of guidance on choosing among the many overlapping coverage/ART siblings and no mention of dependencies or edge-case behavior for invalid technique IDs.

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 the baseline is 3 and the schema already documents technique_ids with format examples. The description's 'batch... across multiple MITRE techniques' reinforces the plural/array intent but adds no new syntax, format, or constraint information beyond what the schema provides.

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 names a specific verb (batch validates), a resource (detection coverage across MITRE techniques), and a method (Atomic Red Team tests), then spells out the exact checks performed and outputs produced. It clearly differentiates from siblings like art_validate_technique (singular) and generic analyze_coverage by emphasizing batch validation across multiple techniques.

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 states when to use the tool ('threat actor profile validation or coverage audits'), giving clear context rather than leaving it implied. However, it does not name alternatives or exclusion conditions, which matters given the crowded sibling field of analyze_coverage, identify_gaps, coverage_gaps_detail, and art_validate_technique that an agent could confuse this with.

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

art_get_statsA

Get summary statistics about indexed Atomic Red Team tests: total tests, techniques covered, breakdown by platform and executor type, top techniques by test count, and repository sync status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It signals a read-only operation via 'Get' and adds useful context that data is 'indexed' and includes repository sync status. It does not detail rate limits or authentication, but for a simple stats retrieval this is adequate.

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

Conciseness5/5

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

A single sentence that front-loads the core purpose and then lists the specific summary categories. Every word contributes value, with no filler or redundancy.

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?

For a tool with no parameters and no output schema, the description thoroughly describes the expected return content. An agent knows exactly what kinds of statistics it will receive and can invoke it without additional inference.

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

Parameters4/5

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

The tool has zero parameters, and the empty schema already communicates that. The description adds no parameter-level detail because none is needed; this aligns with the baseline of 4 for parameterless 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 uses a specific verb and resource ('Get summary statistics about indexed Atomic Red Team tests') and enumerates the concrete outputs (total tests, techniques covered, platform/executor breakdown, top techniques, sync status). This clearly distinguishes it from siblings like art_search or art_get_test, which focus on individual tests or search results.

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 gives clear context: use this tool when you need an overview of indexed Atomic Red Team test statistics. However, it does not explicitly name alternatives or state when not to use it, especially among similarly named tools like get_stats or get_mitre_attack_stats, so some ambiguity remains.

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

art_get_testA

Get full details of a specific Atomic Red Team test by its GUID. Returns complete attack command, cleanup command, input arguments with defaults, dependencies, and platform requirements.

ParametersJSON Schema
NameRequiredDescriptionDefault
guidYesAtomic test GUID (UUID format)

TDQS

A3.8/5.0
Behavior3/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 discloses the operation is a read ('Get') and lists the returned content: attack command, cleanup command, arguments with defaults, dependencies, and platform requirements. It does not mention behavior on missing/invalid GUID, potential errors, or whether it is strictly read-only, but the core behavior is transparent.

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?

One sentence with no filler. It front-loads the purpose and then packs the return fields into a single efficient clause. Every word contributes to the agent's understanding.

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 single-parameter lookup with no output schema or annotations, the description is nearly complete: it explains input, purpose, and what the response contains. It omits edge cases like invalid GUID or non-mutating guarantees, but an agent can invoke it correctly with the information given.

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 fully documents the guid parameter as 'Atomic test GUID (UUID format)'. The description only says 'by its GUID,' adding no new semantic detail beyond the schema. Baseline of 3 applies because the schema handles parameter documentation.

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?

States a specific verb and resource: 'Get full details of a specific Atomic Red Team test by its GUID.' The phrase 'by its GUID' and 'specific' clearly distinguish this from sibling art_get_tests (which presumably lists multiple tests) and art_search. An agent can identify this tool as the singular, ID-based lookup.

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: call this when you already have the test GUID and need full details. However, it never names alternatives or states when not to use it, such as 'to search by name or technique, use art_search instead.' Compared to the best examples, this leaves routing to inference.

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

art_get_testsA

Get all Atomic Red Team adversary simulation tests for a MITRE ATT&CK technique. Returns test names, attack commands, cleanup commands, platforms, executor type, and input arguments. Use to understand the full attack surface for a technique.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNoOptional: filter by platform — windows, linux, macos, containers, iaas
technique_idYesMITRE technique ID (e.g., "T1059.001", "T1547.001")

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the tool's return behavior by listing the kinds of information returned (test names, commands, cleanup commands, platforms, executor type, input arguments), which helps the agent anticipate output. It does not mention side effects or auth requirements, but the 'Get' semantics imply a read-only operation.

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

Conciseness5/5

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

Two dense sentences deliver the core purpose, the return contents, and the intended use without filler. The action and resource are front-loaded, and every clause adds useful 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 retrieval tool with two parameters, the description adequately covers what the tool does, what it returns, and why to use it. The lack of an output schema is mitigated by the explicit return-field list. Minor omissions like behavior on invalid technique IDs or pagination do not seriously hinder correct invocation.

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 the input schema fully documents both `technique_id` and `platform`. The description's mention of 'MITRE ATT&CK technique' reinforces the primary parameter but does not add substantial meaning beyond the schema, so 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 ('Get') and the precise resource ('all Atomic Red Team adversary simulation tests for a MITRE ATT&CK technique'). It also enumerates the returned fields, distinguishing it from the singular sibling `art_get_test` by emphasizing 'all tests' and 'full attack surface'.

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 explicit intended use: 'Use to understand the full attack surface for a technique.' It does not enumerate exclusions or explicitly compare to alternatives like `art_get_test`, but the plural scope and the stated purpose give clear context for when this tool is appropriate.

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

art_map_conditionsA

Static analysis: parse a Sigma rule's detection conditions and cross-reference each one field-by-field against Atomic Red Team test artifacts. Returns a structured match matrix showing which conditions are MATCHED (verified against ART command text), INFERRED (parent process from executor type), UNABLE_TO_VERIFY (registry/network/access mask — ART doesn't record these), or NOT_IN_ART (no test covers this pattern). Also identifies ART tests the rule would miss. Pure string analysis — never executes anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
sigma_ruleYesFull Sigma rule YAML text (the complete rule, not just the detection block)
technique_idYesMITRE technique ID to match against (e.g., "T1059.001", "T1140")

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explicitly discloses 'Pure string analysis — never executes anything' and enumerates the four match categories, which is important behavioral context. It does not cover auth or rate limits, but those are less critical for a static analysis tool.

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 dense but every sentence earns its place: it explains the analysis type, the output categories, the additional gap identification, and the safety guarantee. It is slightly long but well-structured and front-loaded with the core purpose.

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?

There is no output schema, so the description appropriately explains the return value by listing match statuses and the missed-tests identification. It is complete enough for an agent to understand what the tool does and what it returns, though exact output structure is not specified.

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 the schema already documents both parameters fully. The description adds general context about field-by-field cross-referencing but does not add parameter-specific meaning beyond what the schema provides.

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 ('parse', 'cross-reference') and resource ('Sigma rule's detection conditions' against 'Atomic Red Team test artifacts'). It clearly distinguishes itself from sibling ART tools by describing the match matrix output and the unique condition-status taxonomy.

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 clearly implies when to use this tool: when you need to map Sigma rule conditions to ART coverage. It does not explicitly name alternative tools or state when not to use it, but the static-analysis framing and 'never executes anything' provide clear context.

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

art_validate_techniqueA

Cross-reference Atomic Red Team tests against existing detection rules for a MITRE technique. For each ART test, checks whether any detection rule in the repo matches the attack artifacts. Returns a per-test validation matrix with COVERED/GAP status and an overall coverage percentage. Use this to find blind spots in rules you thought were complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idYesMITRE technique ID (e.g., "T1059.001")

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it delivers by explaining the per-test check behavior and the return value: a validation matrix with COVERED/GAP status and overall coverage percentage. It does not explicitly state read-only/no side effects, but the described behavior strongly implies it, and no contradiction exists.

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?

Three sentences with no filler: core action, detailed behavior/return, and usage guidance. The most important information is front-loaded, and every sentence earns its place.

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 single-parameter tool with no output schema, the description adequately covers the operation and the return format (matrix with coverage status and percentage). It could mention edge cases like 'no tests found' or 'no matching rules', but overall it is complete enough for an agent to decide to invoke it and understand the result.

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%, and the schema already documents technique_id as a MITRE technique ID with an example. The tool description reinforces that the technique is used for cross-referencing ART tests, but adds no new parameter-specific format or constraints beyond the schema. 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 uses a specific verb ('Cross-reference') and resource ('Atomic Red Team tests against existing detection rules for a MITRE technique'), clearly distinguishing it from related siblings like art_get_tests or get_coverage_summary. It states exactly what the tool does and the scope of its operation.

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 final sentence 'Use this to find blind spots in rules you thought were complete' provides clear usage context. It does not explicitly name alternatives or exclusions, but the purpose is distinct enough among siblings (e.g., art_coverage_report, analyze_coverage) that the guidance is reasonably clear.

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

bazaar_get_imphash_siblingsA

ELITE PIVOT: Find all MalwareBazaar samples sharing the same PE import hash (imphash). Reveals variants compiled from the same codebase — catches threat actors who forget to randomise their builds.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
imphashYesPE import hash (imphash) to pivot on

TDQS

A3.7/5.0
Behavior3/5

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

The description discloses the core behavior: it queries MalwareBazaar for all samples sharing an imphash and indicates a read-style operation. However, because no annotations are provided and there is no output schema, it does not convey return structure, pagination, or behavior such as whether results are limited by the limit parameter beyond the schema note.

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 compact—two sentences that communicate the action and the threat-intelligence value. The 'ELITE PIVOT' label is somewhat stylistic but not harmful, and the key functional information appears first.

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 two-parameter query tool with no output schema, the description is mostly sufficient: it states what the tool does, why it matters, and the primary lookup key. It falls short of complete because it does not describe the return format or explicitly guide selection against sibling bazaar 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?

With 100% schema description coverage, the baseline is already covered. The description adds meaningful context beyond the schema by explaining that imphash matches imply shared codebase origin and variant discovery, which helps an agent understand the analytical value of the imphash parameter.

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 a specific verb and resource: 'Find all MalwareBazaar samples sharing the same PE import hash (imphash).' This clearly identifies the tool's function and the main query parameter. It does not explicitly contrast itself with sibling tools like bazaar_lookup_hash, but the imphash-scoped behavior is unambiguous.

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

Usage Guidelines4/5

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

The description gives clear context for when this tool is valuable: when pivoting from an imphash to reveal variants compiled from the same codebase. It implies the use case of hunting for loosely-related malware families, though it does not explicitly name alternatives or state 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.

bazaar_get_recent_samplesB

Retrieve the most recently submitted samples from MalwareBazaar for ambient threat intel sync.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitYesNumber of samples to retrieve (1–100, default 25)

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 carries the full burden of behavioral disclosure, yet it only says 'Retrieve' and 'most recently submitted.' It does not describe response format, pagination, ordering guarantees, rate limits, or any side effects. The verb implies a read operation, but with zero annotation support, this is minimal disclosure.

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

Conciseness4/5

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

The description is one concise sentence with the core action and resource front-loaded. The trailing purpose clause 'for ambient threat intel sync' is somewhat vague but does not add unnecessary bulk.

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 one-parameter read tool, the description sufficiently identifies the operation, source, and general purpose. However, with no output schema and no annotations, the agent is left without return-shape or behavioral context, making the overall completeness adequate but not strong.

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%, and the input schema already fully documents the single 'limit' parameter with its range and default. The tool description adds no parameter-level detail, so the baseline score of 3 is appropriate.

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 a specific action, resource, and scope: 'Retrieve the most recently submitted samples from MalwareBazaar.' This clearly distinguishes it from lookup/search siblings by focusing on recent submissions rather than hash, family, or tag queries. It does not explicitly name a sibling alternative, so it falls just short of a 5.

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

Usage Guidelines3/5

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

The phrase 'for ambient threat intel sync' implies a recurring background intelligence-gathering use case, but no explicit when-to-use or when-not-to-use conditions are given. There are no named alternatives or exclusions, leaving the agent to infer the appropriate context from the sibling list.

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

bazaar_lookup_hashA

Look up a malware sample in MalwareBazaar by SHA256, MD5, or SHA1. Returns imphash, malware family, tags, and vendor detections.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesFile hash (SHA256, MD5, or SHA1)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It usefully discloses return content (imphash, malware family, tags, vendor detections) and implies a read-only lookup, but it does not mention potential API prerequisites, rate limits, or error 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?

The description is a single, front-loaded sentence that states the action, the resource, the accepted input formats, and the return fields. Every word earns its place and there is no filler.

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 one-parameter lookup tool with no output schema, the description covers purpose, accepted input, and key return fields. It could add explicit context about external API access or that the operation is read-only, but the essential information needed to invoke it correctly is present.

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% and already documents the hash parameter with accepted types. The description's mention of 'SHA256, MD5, or SHA1' merely restates the schema, adding no new semantic value beyond it.

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

Purpose4/5

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

The description clearly states a specific verb ('Look up'), a resource ('a malware sample in MalwareBazaar'), and the accepted hash types ('by SHA256, MD5, or SHA1'). It distinguishes itself from family/tag search siblings by focusing on hash-based lookup, though it does not explicitly name any alternative sibling.

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?

Usage is implied: an agent should use this tool when it has a file hash to resolve. However, the description provides no explicit when-not-to-use guidance or alternatives such as bazaar_search_family or bazaar_get_imphash_siblings.

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

bazaar_search_familyA

Search MalwareBazaar for all samples belonging to a malware family. Returns hashes, imphashes, and file metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50, max 100)
familyYesMalware family / signature name (e.g. "Emotet")

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does mention return fields, which is useful, but it claims to return 'all samples' while the schema's limit parameter caps results at 100, making the description misleading about actual scope. It also omits pagination and limit 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?

The description is two short sentences with no filler. The primary action and scope are front-loaded, and the return-value sentence earns its place by compensating for the missing output schema.

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 two-parameter search tool with fully documented schema, the description is mostly adequate: it states the resource, the query concept, and the return fields. However, the 'all samples' wording conflicts with the limit parameter, and there is no guidance on how this relates to sibling family/tag/hash search tools.

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 the schema already documents both parameters. The description adds no significant semantic detail beyond restating the 'malware family' concept, which keeps it at 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 uses a specific verb ('Search'), names the resource ('MalwareBazaar'), and defines the scope ('all samples belonging to a malware family'). It also states the return payload (hashes, imphashes, file metadata), which differentiates it from sibling tools like bazaar_lookup_hash or bazaar_search_tag.

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 when to use the tool: when you need samples by malware family. However, it provides no explicit when-not-to-use guidance or alternatives, leaving the agent to infer the choice from the tool name and sibling list.

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

bazaar_search_tagA

Search MalwareBazaar for malware samples by tag (e.g. "keylogger", "ransomware", "loader").

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYesMalwareBazaar tag to search
limitNoMax results (default 50)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It communicates that this is a read-only search operation returning malware samples, which is adequate, but it does not mention result format, pagination, rate limits, or external API behavior. For a simple search tool this is acceptable but not richly transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states the action, source, and search key, then gives useful examples. Every word earns its place and there is no redundant or vague filler.

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 two-parameter search tool with no output schema and no annotations, the description is mostly complete. It identifies the source, the search dimension, and example values, and the schema covers the parameters. It could be slightly more complete by noting what fields are returned, but that is not required for correct invocation.

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?

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by providing concrete example tag values ('keylogger', 'ransomware', 'loader'), which helps an agent understand what valid inputs look like. The limit parameter is not described in prose, but the schema already documents it with a default.

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 ('Search'), a specific resource ('MalwareBazaar'), and a specific dimension ('by tag') with concrete examples. This clearly distinguishes it from sibling tools like bazaar_search_family and bazaar_lookup_hash, which search by different keys.

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 clearly implies the tool is for finding MalwareBazaar samples when you have a tag such as 'keylogger' or 'ransomware'. It does not explicitly state when not to use it or name alternatives, but the context is clear enough for an agent to select it over family/hash/recents searches.

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

check_cisa_kevA

Check if a CVE is in CISA Known Exploited Vulnerabilities catalog

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE ID (e.g., CVE-2021-44228)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It accurately conveys a read-only membership check, but it does not disclose the return shape (e.g., boolean vs. matched record), behavior for CVEs not in the catalog, or data-source freshness. This is adequate for a simple check but not rich.

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

Conciseness5/5

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

One front-loaded sentence with no filler. The acronym is expanded and the exact function is stated without redundancy.

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 one-parameter membership check with no output schema, the description is nearly complete: it states the action and input format. It falls short of 5 only because it does not specify the return value contract or mention alternatives when users need broader CVE metadata.

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 cve_id parameter already has a description and example in the schema. The tool description adds no separate parameter semantics, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Check if a CVE is in CISA Known Exploited Vulnerabilities catalog.' This clearly distinguishes it from sibling CVE/advisory lookups such as nvd_cve_lookup and cisa_search_advisories, despite not naming them.

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 intended use case (verify KEV membership for a CVE) is clear, but the description provides no guidance on when not to use it or which sibling to prefer for other CVE/advisory lookups. Given several similar-looking CISA/NVD tools in the sibling list, explicit routing would strengthen it.

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

cisa_search_advisoriesB

Search CISA cybersecurity advisories and alerts for a keyword, CVE, actor, or malware family. Supports filtering by type (advisory / alert / all). Advisories from CISA carry the highest confidence for active exploitation. Cached 1 hour.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAdvisory type filter (default: all)
limitNoMax results (default: 10)
queryYesSearch keyword: CVE ID, actor name, malware family, or advisory topic

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full burden, and it does add one genuine behavioral trait: 'Cached 1 hour,' which tells the agent how fresh results will be. However, it does not disclose return format, no-result behavior, rate limits, or any access requirements, so the disclosure is partial rather than complete.

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?

Three short sentences, with the purpose front-loaded in sentence one and usage/behavioral context packed into the final sentence. The second sentence (type filter) mildly duplicates the schema enum, but nothing is wasted and the description remains compact.

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 low-complexity search tool, the essentials are covered: what is searched, how to filter, and freshness (1-hour cache). But with no output schema and no annotations, the description leaves the return shape and error/empty-result behavior undocumented, which an agent would have to discover at call time.

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%: query, type, and limit each have inline descriptions, so the schema already carries the heavy lifting. The description slightly echoes the query parameter (keyword, CVE, actor, malware family) and the type enum, but adds no new syntax, formatting, or default details beyond the schema — matching the baseline for high coverage.

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 a specific verb ('Search'), a clear resource ('CISA cybersecurity advisories and alerts'), and the supported search subjects (keyword, CVE, actor, malware family). It is distinguishable from sibling advisory-search tools like nsa_search_advisories and fbi_flash_search by the CISA attribution, though it never names an alternative explicitly the way a top-tier definition would.

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 claim that 'Advisories from CISA carry the highest confidence for active exploitation' implies this is a good default when actively-exploited vulnerabilities matter, but it is never stated as an explicit when-to-use rule. No exclusions or alternatives (e.g., nsa, cert_eu, ncsc_uk) are mentioned, so an agent must infer routing from the CISA attribute alone.

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

convert_sigma_to_kqlA

Convert Sigma detection rules to Kibana Query Language (KQL) for Elastic Stack (Kibana, Elasticsearch). Uses Elastic Common Schema (ECS) field mappings and simple field:value syntax. Supports modifiers, wildcards, and complex conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeframeNoTime window for the query (default: 24h). Examples: 1h, 7d, 30d
sigma_ruleYesThe full Sigma rule in YAML format
target_platformNoTarget platform: elastic (Elastic Stack/Kibana) - default: elastic
include_commentsNoInclude explanatory comments in KQL output (default: true)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully mentions ECS field mappings and support for modifiers, wildcards, and complex conditions, but does not state the output format, error behavior for invalid YAML, or effects of parameters like include_comments and timeframe.

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?

Three concise sentences, each adding distinct value: the conversion target, the mapping approach, and supported features. No repetition or filler.

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 explains the core purpose well, but there is no output schema and no explicit statement of what the tool returns. It also does not describe how the configurable parameters affect the output, leaving moderate gaps for an agent.

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 the baseline is 3. The description adds context about ECS mappings and supported syntax, which hints at acceptable sigma_rule input, but it does not provide parameter-specific meaning beyond what the schema already states.

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 transformation: 'Convert Sigma detection rules to Kibana Query Language (KQL) for Elastic Stack (Kibana, Elasticsearch).' It uses a specific verb and resource, and the direction of conversion is unambiguous, distinguishing it from the sibling convert_yara_to_sigma.

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 intended use is implied by the tool name and conversion direction, but the description does not explicitly state when to use this tool versus alternatives such as convert_yara_to_sigma, nor does it give any exclusions. An agent can infer usage, but guidance is not explicit.

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

convert_yara_to_sigmaA

Convert a YARA rule to an approximate Sigma rule. Best-effort conversion focused on string/hex conditions mapped to process_creation logs (CommandLine). Always include a warning that manual review is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
productNoTarget product (default: windows)
yara_ruleYesThe full YARA rule text to convert
title_overrideNoCustom title for the generated Sigma rule
logsource_categoryNoSigma logsource category (default: process_creation)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and it largely delivers: it discloses that output is approximate/best-effort, names the mapping strategy, and states the invariant that a manual-review warning is always included. It stops short of describing error behavior for invalid YARA or the exact output format, but the core quality caveat is 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?

Two sentences with no filler; the action, scope, and required warning are each stated once and front-loaded. Every clause 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?

For a moderately complex transformation tool with no output schema, the description conveys purpose, fidelity caveat, and scope but leaves the return format unstated and does not say how unsupported YARA constructs are handled. An agent can likely call it correctly, but it would be guessing about the response shape.

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% — every parameter (yara_rule, product, title_override, logsource_category) already has a description, so the baseline is 3. The description adds mild context by tying the conversion to process_creation/CommandLine, aligning with the logsource_category default, but adds no syntax or formatting detail beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource — 'Convert a YARA rule to an approximate Sigma rule' — and immediately distinguishes this conversion direction from the sibling convert_sigma_to_kql. It also bounds the scope by naming supported condition types (string/hex) and the target log source (process_creation CommandLine).

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?

Usage context is present but implied: the 'focused on string/hex conditions' and 'mapped to process_creation (CommandLine)' phrasing tells an agent which YARA rules are suitable, but there is no explicit when-to-use statement, exclusions, or pointer to alternatives such as convert_sigma_to_kql. An agent must infer that non-string/hex rules will convert poorly.

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

coverage_assess_sessionA

Run a full MITRE ATT&CK coverage assessment for a session. For each technique in the ATT&CK matrix, determines if it is COVERED (data + rules exist), DETECTABLE (data exists but no rules), PARTIAL (some data sources present), or GAP (no data sources). This is the core engine that answers: what can we detect, what can't we detect, and what logs are missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID to assess. Must have ingested logs via coverage_ingest_log first.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does a solid job: it explains that every technique in the matrix is evaluated, enumerates the four statuses, and frames the tool's purpose as answering what can/cannot be detected and what logs are missing. It could add expected performance/cost or whether it persists anything, but the core behavior is transparent.

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?

Two sentences, no filler, and front-loaded with the verb and resource. The status taxonomy is presented compactly and the purpose statement earns its place.

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 single-parameter tool with no output schema, the description gives enough to understand what is computed and the status semantics. It does not explicitly state the return format or side effects, but the per-technique assessment language implies the result shape sufficiently.

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 already fully documents session_id and states the ingestion prerequisite, so the description adds little parameter-level meaning beyond 'for a session.' Baseline 3 applies because schema coverage is complete.

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 names a specific action ('Run a full MITRE ATT&CK coverage assessment for a session') and defines the resource and output categories (COVERED/DETECTABLE/PARTIAL/GAP). It is clear, but it does not explicitly differentiate this from sibling coverage tools like analyze_coverage or coverage_gaps_detail.

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?

It gives clear context: this is the core engine for answering detectability and log-gap questions, and the schema adds the prerequisite that logs must be ingested first. It does not explicitly say when to prefer 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.

coverage_compareA

Compare coverage between two assessment sessions. Shows which techniques improved (GAP→PARTIAL→DETECTABLE→COVERED) and how many gaps were closed. Use to answer: "If I add Sysmon, how much does my coverage improve?"

ParametersJSON Schema
NameRequiredDescriptionDefault
session_afterYesSession ID of the comparison (after adding new log sources)
session_beforeYesSession ID of the baseline (before)

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It clearly states that the tool compares sessions and reports improvement direction along a defined maturity path (GAP→PARTIAL→DETECTABLE→COVERED), which gives an agent a good sense of expected behavior. It does not explicitly state that the operation is read-only, but 'Compare' and 'Shows' strongly imply no mutation.

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?

Two sentences, no filler, and the primary purpose is front-loaded. The second sentence provides a practical example that adds contextual value without padding.

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?

The tool is simple: two required parameters, no nested objects, no output schema, and no annotations. The description explains what it compares, what it returns, and even gives a representative question it answers, making it sufficiently complete for an agent to invoke correctly.

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

Parameters4/5

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

The schema already describes both parameters at 100% coverage, so the baseline is 3. The description adds meaningful semantic context by defining session_before as the baseline and session_after as the comparison after adding new log sources, which helps the agent map the parameters correctly to the use case.

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

Purpose5/5

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

The description clearly states a specific action—comparing coverage between two assessment sessions—and describes the output (technique improvements and gaps closed). This is distinct from sibling tools like analyze_coverage or identify_gaps, which operate on a single session, and the example use case reinforces its unique purpose.

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 gives a concrete scenario ('If I add Sysmon, how much does my coverage improve?') that tells an agent when to use this tool. It does not explicitly mention when not to use it or name alternatives like analyze_coverage, but the two-session comparison framing is clear enough for typical selection.

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

coverage_gaps_detailA

Get detailed gap report for a coverage session. Shows every technique that is GAP or PARTIAL, with exactly which data sources are missing and remediation steps. Filterable by tactic and coverage status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default: 50)
session_idYesSession ID (must have run coverage_assess_session first)
status_filterNoFilter by coverage status: GAP, PARTIAL, DETECTABLE, COVERED, or omit for all non-COVERED
tactic_filterNoFilter by MITRE tactic (e.g., "execution", "persistence", "credential-access")

TDQS

A3.8/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 and does state the report contents (GAP/PARTIAL techniques, missing sources, remediation steps) and filterability. However, it does not disclose the default status behavior (all non-COVERED per schema) and the phrase 'every technique that is GAP or PARTIAL' sits slightly awkwardly with that default.

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?

Three short sentences, front-loaded with the core action and output content, and every sentence earns its place. No fluff or repetition.

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 4-parameter reporting tool with no output schema, the description covers the main output and filtering semantics well. It is slightly incomplete because it omits the prerequisite relationship to coverage_assess_session and does not differentiate from overlapping gap-report siblings, though the schema compensates for the prerequisite.

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 the baseline applies; the schema already documents session_id, filters, values, and limit. The description only adds that results are filterable by tactic/status, which mirrors the schema rather than 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 uses a specific verb ('Get'), names the resource ('coverage session'), and defines the deliverable: every GAP or PARTIAL technique with missing data sources and remediation steps. This content and 'detailed' wording distinguish it from summary/top-gap siblings.

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?

It implies use after a coverage session and shows filtering options, but does not state when to prefer it over sibling tools like identify_gaps, get_top_gaps, or coverage_summary, nor give exclusions. The prerequisite is only present in the schema, not the description.

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

coverage_ingest_logA

Ingest a sample log into a coverage assessment session. Parses the log to extract event source, event ID, and fields, then maps to MITRE ATT&CK data sources and data components. Supports Windows Event XML, Sysmon, JSON (EDR/Cloud), auditd key-value, and CEF formats. You can also provide event_source + event_id + fields directly instead of a raw log. Creates a new session if session_id is not provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoOptional: list of field names present in the log. If omitted with raw_log, fields are auto-extracted. If omitted with event_source+event_id, all fields from the mapping are assumed.
raw_logNoRaw log text to parse. Provide this OR (event_source + event_id).
event_idNoEvent ID (e.g., "4688", "1", "ProcessRollup2", "DeviceProcessEvents"). Use with event_source.
session_idNoSession ID to add this log to. If omitted, a new session is created.
event_sourceNoEvent source identifier (e.g., "windows_security", "sysmon", "crowdstrike", "mde", "linux_auditd", "aws_cloudtrail", "azure_ad"). Use with event_id instead of raw_log.
session_nameNoName for a new session (used only when creating a new session).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It covers parsing behavior, supported log formats, the structured-input alternative, and automatic session creation when session_id is absent. It is transparent about the core side effects (creating/adding to a session), though it does not detail success/failure semantics or whether existing session data is modified.

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 compact and front-loaded; the first sentence states the purpose, and subsequent sentences add only necessary operational detail. There is no redundant phrasing or filler.

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 no output schema and no annotations, the description provides substantial context: input modes, supported formats, mapping behavior, and session creation. The main gap is that it does not describe what is returned or how success is signaled, but the core invocation requirements are well covered.

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?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful value by enumerating supported parseable formats (Windows Event XML, Sysmon, JSON, auditd, CEF) and clarifying the mutual exclusivity of raw_log vs event_source+event_id, which is only tersely indicated in the schema. This goes beyond the bare schema definitions.

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 opens with a specific verb and resource: 'Ingest a sample log into a coverage assessment session.' It then clearly states what the tool does with the log—extracts event source, event ID, and fields, and maps to MITRE ATT&CK data sources/components. This distinguishes it from sibling analysis tools like coverage_assess_session and coverage_gaps_detail.

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

Usage Guidelines3/5

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

The usage context is clear: ingest logs into sessions, with optional raw log or structured event_source/event_id input. However, it does not explicitly say when to prefer this tool over related coverage session tools, nor does it state any exclusions or preconditions. Usage is implied rather than directly contrasted with alternatives.

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

coverage_list_mappingsA

List all known telemetry-to-MITRE mappings (Event ID → Data Source/Component). Use to see which event sources/IDs the coverage engine understands. Also shows session statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_source_filterNoFilter by event source (e.g., "sysmon", "windows_security", "mde")

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden of behavioral disclosure. 'List' implies a read-only operation, and mentioning session statistics adds some context. However, it does not describe response format details, pagination, or whether the optional filter changes the session statistics 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?

Two concise sentences deliver the core purpose, the output format, and the intended use case with no filler. The most important information is front-loaded.

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

Completeness4/5

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

For a simple read-only listing tool with one optional filter and no output schema, the description covers what the tool does, what it returns conceptually, and when to use it. Slightly more detail about the session statistics would be beneficial, but overall it is sufficiently 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?

The single parameter has 100% schema description coverage, so the schema already explains 'event_source_filter'. The description reinforces that event sources can be filtered but adds no additional meaning beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List all known telemetry-to-MITRE mappings' and defines the exact output shape '(Event ID → Data Source/Component)'. This clearly differentiates it from sibling tools focused on coverage summaries, gaps, or technique counts.

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?

It explicitly tells the agent when to use it: 'Use to see which event sources/IDs the coverage engine understands.' It does not name alternative tools or state when not to use it, but the use case is clear enough among the many coverage-related siblings.

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

coverage_recommendA

Pareto-optimal log source recommendations. Analyzes coverage gaps and ranks missing data sources by how many technique gaps they would close. Answers: "Enable these 5 log sources to close 80% of your gaps." Prioritizes by actor usage (techniques used by more actors = higher priority).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID (must have run coverage_assess_session first)
max_recommendationsNoMaximum recommendations to return (default: 10)

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does this well by explaining the analysis logic, ranking criteria, and prioritization by actor usage, plus an illustrative output example. It does not explicitly state that the operation is read-only or describe the exact return format, but 'analyzes' and 'recommendations' strongly imply a non-mutating analysis 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 three sentences with no filler. It front-loads the core purpose, then adds the ranking logic, an illustrative answer, and the prioritization rule. Every sentence contributes meaningful information without repeating schema content.

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 two-parameter tool, the description is largely complete: it explains what the tool does, how it prioritizes, and gives an example of the kind of output it produces. The prerequisite that session_id must come from coverage_assess_session appears only in the schema, not the main description, and there is no output schema, but the example partially compensates for the missing return-shape detail.

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%, with both session_id and max_recommendations already documented in the input schema. The description adds no additional parameter-level detail beyond what the schema provides, so the 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 opens with a specific, informative phrase: 'Pareto-optimal log source recommendations.' It then explains exactly what the tool does: analyzes coverage gaps, ranks missing data sources by technique gaps closed, and prioritizes by actor usage. This clearly distinguishes it from sibling tools like coverage_gaps_detail or identify_gaps, which focus on listing gaps rather than recommending sources.

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

Usage Guidelines3/5

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

The description implies the use case: after assessing coverage, get ranked recommendations for log sources to enable. The schema also notes that session_id must come from coverage_assess_session. However, the description does not explicitly state when to prefer this tool over siblings like coverage_gaps_detail or get_top_gaps, nor does it provide exclusion criteria.

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

create_entityB

Create an entity in the knowledge graph (e.g., technique, actor, tool, detection)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEntity name
typeYesEntity type: technique, actor, tool, detection, vulnerability, campaign
reasoningNoWhy this entity is being created/tracked
propertiesNoAdditional properties as key-value pairs
descriptionNoDescription of the entity

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 of behavioral disclosure, but it only says 'Create' without explaining side effects, duplicate handling, whether existing entities are updated, or whether any validation occurs. An agent cannot know if creating an entity with an existing name fails, overwrites, or creates a duplicate.

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

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the core action ('Create an entity in the knowledge graph') and uses the parenthetical examples efficiently, earning every word.

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 creation tool with a fully documented schema, the description is adequate to make a correct call. However, the absence of annotations and output schema means return values, duplicate behavior, and required relationship to existing entities are not disclosed, leaving some operational context missing.

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 the baseline is met and the schema already documents all five parameters. The description adds examples like 'technique, actor, tool, detection', but these mostly mirror the schema's type enum and do not enrich parameter meaning beyond it.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Create an entity in the knowledge graph', with concrete examples of entity types. It naturally distinguishes itself from sibling tools like create_relation and search_entities, so an agent can tell what this tool does at a glance.

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 about when to use this tool versus alternatives such as create_relation or search_entities. The knowledge graph context and examples imply a use case, but there is no stated condition, prerequisite, or exclusion, leaving the agent to infer when creation is appropriate.

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

create_relationB

Create a relation between two entities in the knowledge graph

ParametersJSON Schema
NameRequiredDescriptionDefault
reasoningNoWhy this relation exists
source_idYesSource entity ID
target_idYesTarget entity ID
confidenceNoConfidence score 0-1 (default: 1.0)
descriptionNoDescription of the relation
relation_typeYesRelation type: uses, detects, mitigates, targets, exploits, etc.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states that it 'creates' a relation, implying a mutation, but does not mention whether existing relations are overwritten, whether validation occurs, what happens on duplicate relations, or whether this is reversible. For a state-changing tool with zero annotation coverage, this is a notable gap.

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

Conciseness4/5

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

One clear sentence that is concise and front-loads the action and object. It wastes no words, though it could have used the spare space meaningfully to add behavioral or usage detail.

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

Completeness2/5

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

For a mutating tool with no annotations and no output schema, the description is under-specified: it doesn't mention whether the graph becomes immediately persistent, what happens if source/target entities don't exist, how relation_type is constrained, or what the response/return behavior is. Given the mutation risk and the large sibling list, the description should provide more context.

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 structured fields already document all 6 parameters. The description adds no additional semantic meaning beyond what the input schema provides, such as relation_type vocabularies, expected formats, or constraints on source/target IDs. Baseline 3 is appropriate since schema fully covers parameter meaning.

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?

States a specific verb ('create') and resource ('relation between two entities in the knowledge graph'). It clearly describes what the tool accomplishes but does not differentiate it from sibling tools like create_entity or search_entities; although the name is fairly descriptive, the description doesn't explicitly contrast with related graph tools.

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

Usage Guidelines3/5

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

The description implies its use when the agent needs to establish a relation in the knowledge graph, but it provides no explicit guidance about when to use create_relation versus create_entity or search_entities, nor any conditions or alternatives. The context is clear enough from the resource noun, but there are no stated exclusions or alternatives.

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

cve_to_detectionA

Convert a CVE into actionable SIEM detection logic. Fetches CVE details from NVD, maps to MITRE ATT&CK techniques, and generates detection queries in KQL (Sentinel), Splunk SPL, and Sigma formats with threat hunting hypotheses, false positive considerations, and response actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE identifier (e.g., CVE-2024-1234)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations present, the description carries the burden of behavioral disclosure, and it does a solid job: it reveals that the tool fetches external CVE data from NVD, maps it to ATT&CK, and produces multi-format detections with additional artifacts. It does not discuss output format beyond formats and components, or side effects, but the described behavior is clearly non-mutating.

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 dense but efficient: the primary purpose is front-loaded, and the subsequent clauses list the process and deliverables without filler. It is slightly long and could be broken into cleaner sentences, but every segment adds useful 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 complex generate-from-CVE tool with no output schema, the description covers the important bases: input, data sources, output formats, and auxiliary content such as false positives and response actions. It doesn't specify the exact response structure or failure modes, but enough is present for an agent to invoke it and interpret the result.

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 the structural baseline applies: the schema already explains cve_id with an example. The description adds no parameter-specific semantics or syntax details, so it neither improves nor harms parameter understanding.

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 and resource: converts a CVE into SIEM detection logic. It goes beyond a simple lookup by naming the pipeline (NVD fetch, MITRE ATT&CK mapping) and concrete outputs (KQL, Splunk SPL, Sigma), which clearly distinguishes it from sibling tools like nvd_cve_lookup, list_by_cve, and the standalone Yara/Sigma converters.

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 use case is clear: when an agent has a CVE identifier and needs actionable detection content, this is the tool. It doesn't explicitly state exclusions or name alternatives such as nvd_cve_lookup for plain CVE metadata, so it falls just short of explicit routing guidance.

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

epss_bulk_checkA

Batch EPSS score lookup for multiple CVEs. Rank CVEs by exploit probability to focus patching effort. Returns sorted list with risk tiers. Ideal for enriching vulnerability scanner output.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idsYesList of CVE IDs to score (max 100)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden, and it does state the output behavior: returns a sorted list with risk tiers. It doesn't cover errors, rate limits, or exact tier definitions, but the read-only lookup nature is implied and no contradiction exists.

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?

Three focused sentences with the main action first and no filler. Every sentence adds useful context about what the tool does, why it matters, and when to use it.

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 single-parameter lookup with no output schema, the description covers the input, the primary behavior, and the return shape (sorted list with risk tiers). It could add CVE format guidance or tier definitions, but nothing critical is missing for selecting and invoking the 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?

The schema already fully documents cve_ids and the max of 100; the description adds no parameter-level detail beyond reaffirming multiple CVEs. With 100% schema coverage, 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?

States a specific action ('Batch EPSS score lookup') and target ('multiple CVEs'), and the phrase 'Batch' plus 'multiple' distinguishes it from sibling epss_score_lookup. The purpose of ranking by exploit probability is also clearly conveyed.

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?

Gives concrete use contexts: prioritizing patching and enriching scanner output. It doesn't explicitly state when to prefer epss_score_lookup for a single CVE, but the batch framing makes that boundary reasonably clear.

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

epss_score_lookupA

Get the FIRST EPSS (Exploit Prediction Scoring System) probability score for a CVE. EPSS predicts the probability of exploitation in the wild within 30 days — essential for CVE prioritization beyond raw CVSS scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE ID (e.g., CVE-2024-3400)

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention what happens for unknown CVEs, the exact return format (e.g., float 0-1 vs percentage), or any rate limits or external API dependencies. The 'FIRST' qualifier hints at behavior but is insufficient for a tool with zero annotation coverage.

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

Conciseness5/5

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

Two sentences with no fluff. The action is front-loaded, and the EPSS explanation earns its place by clarifying why the score matters. Every word contributes to understanding.

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 one-parameter read-only lookup, the description is mostly complete: it names the resource, the input, and the output type ('probability score'). However, with no output schema, it could be more explicit about the return format and error behavior. Still, the tool is simple enough that an agent can likely call it correctly based on this description.

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%, and the single parameter cve_id is already documented with an example. The description adds contextual meaning about EPSS but does not provide additional parameter syntax or format details beyond what the schema already offers, matching the baseline for high schema 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 uses a specific verb ('Get') and resource ('FIRST EPSS probability score for a CVE'), clearly distinguishing it from the sibling epss_bulk_check by emphasizing 'FIRST'. It also explains what EPSS is, leaving no ambiguity about the tool's function.

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 states a clear use case ('essential for CVE prioritization beyond raw CVSS scores') but does not explicitly mention when to use this tool versus alternatives like epss_bulk_check or nvd_cve_lookup. No exclusions or alternative routing are provided, so usage guidance is implied rather than explicit.

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

generate_hunt_reportA

Generates a formatted Word document (.docx) threat hunt report from structured hunt card data. Saves the file to C:\Users{username}\Desktop\Threat Hunting Reports{Actor}_{Date}.docx. Creates the output folder automatically if it does not exist. Input must include report metadata and an array of hunt cards (one per technique). Each card must contain: hunt_id, hypothesis_name, objective, priority, confidence, mitre_mapping (with group aliases), prerequisites, expected_artifacts, risks, log_sources, coverage_status, query (Sigma YAML), true_positive_criteria, and escalation_path. Returns the full output file path on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesReport date in YYYY-MM-DD format
actorYesCanonical threat actor name, e.g. "MuddyWater"
cardsYesArray of hunt card objects, one per technique hunted
titleYesReport title, e.g. "Threat Hunt Report — MuddyWater (2026-03-11)"
analystYesAnalyst name or team name
actor_idYesMITRE ATT&CK group ID, e.g. "G0069"
classificationYesClassification marking, e.g. "TLP:AMBER"
executive_summaryYes2–3 sentence executive summary of coverage state and key risks

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosing side effects. It does so well by stating that it saves to a specific desktop path, creates the output folder automatically if missing, and returns the full output file path on success. It does not mention overwrite behavior or error conditions, but the main write side effects and return behavior are transparently disclosed.

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 front-loaded with the core action and then provides the output path, file-creation behavior, and return value in a logical order. The enumeration of required card fields is somewhat redundant with the schema, but it is compactly presented and helps an agent assemble valid input without parsing the full nested schema.

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

Completeness4/5

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

Given the tool's complexity and rich input schema, the description covers the essentials: what the tool generates, where it saves, folder auto-creation, key input structure, and the success return value. It does not explain formatting details, overwrite behavior, or error handling, but for invocational purposes the provided information is sufficient alongside the detailed schema.

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 the baseline is 3. The description mostly restates what the schema already encodes, such as required top-level fields and card-level requirements. It adds minor context like 'one per technique' and 'query (Sigma YAML)', but these are already present in or implied by the schema, so the parameter semantics are adequate but not enhanced.

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 starts with a specific verb and resource: 'Generates a formatted Word document (.docx) threat hunt report from structured hunt card data.' It clearly distinguishes this tool from the many sibling search/lookup tools by being the only one focused on report generation. It also states the output file path and return value, leaving no doubt about what the tool accomplishes.

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 context is clear: this tool is for producing a Word report from structured hunt card data, and it explicitly lists required input ('report metadata and an array of hunt cards'). It does not explicitly name alternatives or state when not to use it, but among the sibling tools, none competes with this generation function, so the usage context is reasonably unambiguous.

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

get_coverage_summaryA

Get tactic-level detection counts as a compact object (~200 bytes). Faster and smaller than analyze_coverage. Use for quick orientation before deeper analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_typeNoOptional: filter by source (sigma, splunk_escu, elastic, kql)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It adds useful behavioral context: the response is a compact object of roughly 200 bytes and the tool is faster/smaller than analyze_coverage, implying a read-only summary operation. It does not detail error behavior or exact output keys, but for a simple read-only summary this is reasonably transparent.

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 three short, purposeful sentences with no filler. It front-loads what the tool does, then adds size/performance characteristics and a usage recommendation. Every sentence earns its place.

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?

This is a low-complexity tool with one optional parameter and no output schema or annotations. The description sufficiently conveys purpose, output size, and when to use it. However, because no output schema exists and the description only says 'compact object (~200 bytes)', the exact response shape is left somewhat approximate.

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 source_type property is already documented with its allowed values (sigma, splunk_escu, elastic, kql). The description does not add any extra parameter semantics, so the baseline score of 3 applies.

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 opens with a specific verb and resource: 'Get tactic-level detection counts as a compact object'. It clearly scopes the tool to tactic-level summary counts and explicitly contrasts it with analyze_coverage as a faster/smaller alternative, making it easy to distinguish.

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 names analyze_coverage as a sibling alternative and positions this tool as the quick-orientation option: 'Use for quick orientation before deeper analysis.' This implies when to choose it, though it does not explicitly spell out when-not-to-use it or what conditions should trigger analyze_coverage instead.

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

get_data_sourcesA

Get required data sources and log types to detect a MITRE technique. Answers "What logs do I need for T1021?"

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idYesMITRE technique ID (e.g., "T1021", "T1059.001")

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It clearly indicates a read-style operation that returns data sources and log types for a technique, but it does not disclose output shape, empty-result behavior, or sub-technique handling. These are minor gaps for a simple lookup, but the description is still somewhat 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?

The description is two short sentences with no filler. The action and resource are front-loaded, and the second sentence adds a concrete example question that reinforces the tool's purpose.

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?

With a single well-documented parameter and no output schema, the description gives enough information for an agent to call the tool correctly. It could mention return formatting or invalid-ID behavior, but for a simple lookup these are not critical gaps.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter description already includes the format and examples ('T1021', 'T1059.001'). The tool description only repeats the T1021 example and adds no additional semantic meaning beyond what the schema provides.

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

Purpose4/5

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

The description uses a specific verb ('Get') and a specific resource ('required data sources and log types') tied to a MITRE technique, and the example question 'What logs do I need for T1021?' makes the intent concrete. It does not explicitly name sibling tools like list_data_sources or lookup_mitre_technique, but the scope is clear enough to avoid obvious confusion.

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 a clear use case: answering what logs are needed for a given MITRE technique. It does not state when not to use this tool or name alternatives, but the example question gives sufficient context for an agent to select it appropriately.

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

get_decisionsB

Get recent logged decisions (tribal knowledge)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum decisions to return (default: 20)
searchNoOptional search term

TDQS

B3.3/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 burden of behavioral disclosure. It only mentions recency and logging status; it does not explain ordering, pagination, search behavior, or whether this is a read-only operation beyond the verb 'Get'.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. The parenthetical '(tribal knowledge)' adds useful context without extra 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?

For a simple read tool with zero required parameters and full schema coverage, the core purpose is conveyed. However, with no annotations and no output schema, the description leaves ambiguity about what constitutes a 'decision' and how results are ordered or filtered.

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 covers both parameters at 100%, including the default limit of 20 and optional search. The description adds no parameter-level semantics, but the schema is sufficient, so baseline 3 applies.

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

Purpose4/5

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

The description uses a specific verb ('Get') and resource ('recent logged decisions'), with the parenthetical 'tribal knowledge' clarifying the content type. It distinguishes itself from generic get_* tools, though it does not explicitly differentiate from similar siblings like get_learnings.

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

Usage Guidelines3/5

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

The phrase 'recent logged decisions' implies when to use the tool, but there is no explicit guidance about alternatives or exclusions. With siblings like get_learnings and log_decision nearby, an agent could benefit from clearer routing.

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

get_detectionA

Get full details of a specific detection by ID. Returns query logic, logsource (product/category/service), data_sources, process_names, platforms, CVEs, and false_positives. Use this to extract detection conditions for kill-chain correlation.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDetection ID

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It clearly signals a read-only lookup ('Get', 'Returns') and spells out the exact data returned, so an agent knows what to expect. It does not cover error/not-found behavior, but for a simple getter this is a minor omission rather than a transparency failure.

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?

Two sentences, no filler. The first sentence names the operation and resource, the second lists the useful return fields and a concrete use case. Every clause earns its place.

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 one-parameter getter with no output schema and no annotations, the description is nearly complete: it names the input, the output fields, and a use case. Minor omissions such as invalid-ID behavior or output formatting are low-impact for this tool, but would have made it fully 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% and the only parameter, id, is described as 'Detection ID'. The description reinforces that this ID selects a specific detection but adds no additional format, source, or validation semantics beyond the schema, so it meets the baseline but not more.

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 and resource ('Get full details of a specific detection by ID') and enumerates the returned fields. This makes it clearly distinct from search_detections and the list_by_* siblings, which are about finding detections rather than retrieving a single detection's full record.

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?

It gives a concrete trigger for use: 'Use this to extract detection conditions for kill-chain correlation.' This is clearer than no guidance, but it does not explicitly state when not to use it or name alternatives such as search_detections, so it stops short of a 5.

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

get_groups_using_techniqueB

Find all threat groups that use a specific MITRE technique.

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idYesMITRE technique ID (e.g., "T1059", "T1059.001")

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 carries the full burden of behavioral disclosure. It only restates the core function and does not mention return format, exact-match requirements, sub-technique handling, or behavior for unknown technique IDs.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes to conveying 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?

For a simple one-parameter read tool, the schema covers the input well and the description states the core purpose. However, with no output schema, the description does not clarify the return shape or edge-case behavior, leaving some ambiguity for an agent.

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 already fully documents the single parameter technique_id with format and examples, giving 100% schema coverage. The description adds no additional parameter-level meaning, so the baseline score of 3 applies.

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

Purpose4/5

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

The description clearly states the action ('Find all threat groups') and the resource ('MITRE technique'), making the tool's purpose easy to grasp. It is implicitly distinguished from siblings like get_software_using_technique by focusing on threat groups, but it does not explicitly name or contrast any sibling.

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 gives no guidance about when to use this tool versus alternatives such as search_threat_groups, lookup_mitre_technique, or get_software_using_technique. There are no exclusions, prerequisites, or context cues beyond the basic purpose.

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

get_knowledge_summaryA

Get a summary of the knowledge graph contents

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavior. The verb 'get' implies a read-only operation, and the tool has no parameters, so invocation risk is low. However, the description does not disclose what the summary contains, how it is computed, or any limitations.

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 clear sentence with no filler. It is front-loaded and appropriately sized for a parameterless tool.

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

Completeness4/5

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

For a zero-parameter tool with no output schema, the description gives the essential purpose and enough distinctiveness from siblings. It could say a bit more about what 'summary of the knowledge graph contents' means, but nothing critical is missing for invoking the tool correctly.

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

Parameters4/5

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

The tool has zero parameters, so the input schema is trivially complete. Description-level parameter explanation is unnecessary, and the baseline of 4 applies.

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

Purpose4/5

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

The description uses a specific verb ('Get') and a clearly identified resource ('knowledge graph contents'). It is distinct from siblings like get_coverage_summary or get_stats because it explicitly targets the knowledge graph, though it does not elaborate on what kind of summary is produced.

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 gives no guidance on when to prefer this tool over alternatives, nor any indication of context or prerequisites. With dozens of sibling tools, an agent cannot tell whether this is the right choice or when a more specific summary tool should be used.

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

get_learningsB

Get learnings/insights by topic

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default: 20)
topicNoFilter by topic

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 carries the full behavioral burden. It implies a read-only retrieval via the verb 'Get' but does not disclose what the output looks like, how results are ordered, whether pagination applies, or whether any side effects or state changes are involved.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant wording. It communicates the core operation efficiently.

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 two-parameter retrieval tool, the description plus schema is minimally viable for invoking it correctly. However, because there is no output schema and no sibling differentiation, the description leaves some gaps around return values and when to prefer this tool over similar ones.

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 already describes both parameters completely (limit and topic), so the description adds little beyond restating that topic acts as a filter. With 100% schema description coverage, a baseline of 3 is appropriate.

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 a specific action ('Get') and resource ('learnings/insights') with a filtering criterion ('by topic'). It is clear enough to understand the basic function, though it does not differentiate itself from siblings like add_learning or get_knowledge_summary.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no exclusions, and no mention of related tools. The usage is only implied by the phrase 'by topic', leaving the agent to infer context.

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

get_lolfarm_contextA

Get LOLFarm intelligence relevant to a MITRE ATT&CK technique. Tiered response: "summary" (default, ~500 tokens — counts + top names per source) for Step 1 recon, "detailed" (~2.5k tokens — top 15 per source with key fields) when authoring, "full" (everything — use sparingly). After summary, use per-source lookup_* tools for deep-dives instead of escalating mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoResponse verbosity. Default "summary" for cheap recon. Escalate only when needed.
technique_idNoMITRE technique ID (e.g., "T1059.001", "T1562.001", "T1574.002"). Optional in summary mode — omitted technique returns a corpus-wide overview.

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries full behavioral burden and does it well: it discloses tiered response sizes in tokens, default behavior, content shape (counts + names, top 15 per source, key fields, everything), and a strong recommendation to avoid 'full.' It does not cover aspects like rate limits or exact response fields, but for a read-oriented context tool this is solid 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 compact and front-loaded: purpose first, then mode behavior, then a routing rule. Every sentence adds value; there is no filler or repetition of the tool name beyond the first useful sentence.

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?

For a tool with no annotations and no output schema, the description gives enough to select, invoke, and interpret results: modes, token sizes, default behavior, content differences, and the alternative tool path. An agent can decide summary vs detailed vs full and know what to expect from each.

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?

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by explaining mode escalation semantics and that omitting technique_id in summary mode returns a corpus-wide overview. This goes beyond the schema's per-parameter descriptions, making the tool safer and easier to invoke correctly.

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 opens with a specific verb and resource: 'Get LOLFarm intelligence relevant to a MITRE ATT&CK technique.' It clearly differentiates from sibling tools by framing this as a tiered context-gathering tool and noting that deep-dives should go through lookup_* tools instead. An agent can understand what this tool is for and how it differs from search_lolfarm and the per-source lookup tools.

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?

Usage guidance is explicit per mode: summary for Step 1 recon, detailed when authoring, full only sparingly. It also tells the agent to prefer per-source lookup_* tools for deep-dives instead of escalating mode, which directly addresses the alternative-tool decision an agent must make.

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

get_mitigationsA

Get MITRE ATT&CK mitigations for a specific technique. Answers "How do I mitigate T1059?"

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idYesMITRE technique ID (e.g., "T1059", "T1059.001")

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic function and does not mention what the response contains, whether it returns structured mitigation data, or any limitations. For a tool with no annotation safety hints, this is a notable 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?

The description is two short sentences with no filler. The core action is front-loaded, and the example question adds clarity without unnecessary length.

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 one-parameter lookup, the description is mostly sufficient, but because there is no output schema and no annotations, an agent is left without details about the response shape or any behavioral caveats. It is adequate but not fully 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?

The input schema already fully documents the single parameter, technique_id, with a clear example. The description reinforces that the parameter is a specific technique ID but adds no new semantic detail beyond the schema.

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

Purpose5/5

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

The description clearly states a specific verb and resource: getting MITRE ATT&CK mitigations for a specific technique. The example question 'How do I mitigate T1059?' reinforces the exact purpose and distinguishes it from sibling tools that handle techniques, groups, software, or data sources.

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 intended use is implied: call this when you need mitigations for a specific technique ID. However, there is no explicit guidance about when not to use it or which alternative tools might be better suited for related needs, such as getting detections or data sources.

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

get_mitre_attack_statsB

Get statistics about the indexed MITRE ATT&CK data (groups, software, techniques, etc.)

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 full burden. 'Get' clearly implies a read-only operation, and 'indexed' usefully scopes the data source. However, it doesn't disclose what form the statistics take, whether they are computed on demand, or any other behavioral nuances beyond the word 'indexed'.

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

Conciseness5/5

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

A single compact sentence with no filler. The action and resource are front-loaded, and the parenthetical examples add useful context without bloating the description.

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 is trivially easy to call with no parameters, but since there is no output schema, the description doesn't say what the returned statistics look like. Given several similar sibling statistics tools, an agent could still pick the wrong one without clearer differentiation.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is trivially 100%. Per the baseline for a zero-parameter tool, the description appropriately has no need to elaborate on parameters.

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

Purpose4/5

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

The description uses a specific verb ('Get') and resource ('statistics about the indexed MITRE ATT&CK data') and gives examples of the entities involved. However, it doesn't differentiate from overlapping siblings like get_stats, get_technique_count, and get_coverage_summary, so some ambiguity remains.

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

Usage Guidelines2/5

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

No guidance is given on when to choose this tool over the many sibling statistics tools, such as get_stats, get_technique_count, or get_coverage_summary. The agent must infer usage 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_softwareC

Get details about MITRE ATT&CK software (malware or tools) by name. Includes Cobalt Strike, Mimikatz, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSoftware name (e.g., "Cobalt Strike", "Mimikatz", "PsExec")

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It says 'Get details' but doesn't disclose what fields are returned, whether the lookup is exact or fuzzy, case sensitivity, or whether a missing name returns null or errors. It's a simple read, but the agent is still left guessing about the behavior.

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

Conciseness4/5

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

The description is two sentences and entirely relevant. It front-loads the core purpose and gives examples without padding. Minor room for improvement in adding usage guidance, but the structure is 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?

For a simple single-parameter lookup with no output schema, the description is mostly adequate: it says what the tool does and what input it takes. However, since there is no output schema and no annotations, a bit more context about the response or matching behavior would make it 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 description coverage is 100%, so the schema fully documents the 'name' parameter with examples. The description reiterates the same examples (Cobalt Strike, Mimikatz) and adds 'PsExec' via the schema, but doesn't add meaning beyond the schema. Baseline 3 applies.

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 'Get details about MITRE ATT&CK software (malware or tools) by name' with a specific verb and resource. It names examples (Cobalt Strike, Mimikatz), which adds clarity. It doesn't explicitly differentiate from sibling search_software, but the 'by name' lookup semantics are somewhat implied.

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 gives no explicit guidance on when to use this tool vs. the many sibling tools like search_software, malpedia_search, or get_software_using_technique. The examples imply a known-name lookup, but there is no stated exclusion or routing guidance.

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

get_software_using_techniqueA

Find all malware and tools that use a specific MITRE technique.

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idYesMITRE technique ID (e.g., "T1059", "T1055")

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It clearly implies a read-only search and defines the scope as malware and tools, but it does not disclose return format, handling of unknown technique IDs, or whether results are limited to ATT&CK software entries.

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

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the action and object, and every word contributes to 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?

This is usable for a one-parameter lookup, but with no output schema and no annotation context, it omits what the returned list contains and how it differs from several nearby MITRE-related siblings. It is minimally complete but not richly contextual.

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 already provides 100% coverage for technique_id, including a clear example format. The description adds minimal semantic context ('malware and tools that use a specific MITRE technique') but does not meaningfully expand beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Find') with a clear resource ('all malware and tools') and a precise subject ('specific MITRE technique'). It distinguishes itself from siblings like get_groups_using_technique at a glance.

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 about when to use this tool versus alternatives such as list_by_mitre, lookup_mitre_technique, or get_groups_using_technique. The intended context is only implied by the name and description.

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

get_statsA

Get statistics about indexed detections including counts by source, severity, and MITRE coverage

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral transparency burden. It discloses that the tool returns aggregated counts by source, severity, and MITRE coverage, which is useful. However, it does not mention whether the result is a single summary object, how the stats are scoped in time, or any freshness/availability 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?

The description is a single, front-loaded sentence with no filler. Every word contributes to conveying what the tool returns, and it is appropriately sized for a zero-parameter tool.

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

Completeness4/5

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

For a zero-parameter, no-output-schema tool, the description is largely complete: it names the resource and the return dimensions. It could have added a note distinguishing it from sibling statistics/coverage tools, but nothing essential to invoking it correctly is missing.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to add about parameters. The baseline of 4 applies because no parameter information is needed.

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 names a specific verb and resource: getting statistics about indexed detections, and specifies the main output dimensions (counts by source, severity, MITRE coverage). It is clear, though it does not explicitly differentiate itself from similarly named sibling tools like get_mitre_attack_stats or get_coverage_summary.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus the many related sibling tools such as search_detections, list_by_mitre, list_by_severity, or get_coverage_summary. The description implies it is an aggregate statistics endpoint, but it does not state conditions or alternatives.

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

get_technique_countA

Get the detection rule count for a single MITRE technique ID (~50 bytes). Use this as a fast pre-check before pulling full detection objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idYesMITRE technique ID (e.g., T1059 or T1059.001)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations present, the description carries the transparency burden. It discloses that the tool returns a count, that the response is small (~50 bytes), and that it is fast. It could mention edge-case behavior (e.g., invalid technique IDs or zero-count results), but for a read-only count tool the provided behavioral context is solid.

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 short sentences with no filler. The core purpose is front-loaded, and the usage hint is packed into the second sentence. The inclusion of '~50 bytes' is concise and informative.

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 single-parameter count tool, the description covers the key information: what it does, when to use it, and rough response size. It could be slightly more complete by noting behavior for empty results or invalid IDs, but nothing critical is missing for an agent to call it correctly.

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 already fully documents technique_id with an example, and schema coverage is 100%. The description adds only the word 'single,' which does not meaningfully increase parameter understanding beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Get') and a specific resource ('detection rule count for a single MITRE technique ID'), making the tool's function immediately clear. It also distinguishes itself from sibling tools by emphasizing it returns only a count rather than full detection objects.

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 positions the tool as 'a fast pre-check before pulling full detection objects,' giving clear guidance on when to use it. It does not name a specific sibling tool like get_detection, but the intended workflow is clear.

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

get_technique_idsA

Get a deduplicated flat list of MITRE technique IDs covered by detection rules (~200 bytes). No full objects. Filter by source_type, tactic, or severity to narrow scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
tacticNoFilter by MITRE tactic (e.g., execution, persistence, defense-evasion)
severityNoFilter by severity: critical, high, medium, low
source_typeNoFilter by source: sigma, splunk_escu, elastic, kql

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It discloses that results are deduplicated, flat, size-limited (~200 bytes), and contain no full objects. It does not mention empty-result behavior or filter combination semantics, but it gives a clear and honest picture of the operation's output characteristics.

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?

Two tightly packed sentences, front-loaded with the core purpose and return shape, followed by filter options. Every word earns its place; there is no redundancy or filler.

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 read-only list tool with three optional documented filters, the description covers what is returned, the output's shape and size, and the available narrowing options. It could add a sentence on whether filters combine and what happens with no filters, but these are minor gaps given the tool's simplicity.

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%, and the description simply restates that the three parameters exist as filters. It adds the phrase 'to narrow scope,' but no additional meaning beyond what the schema already provides for tactic, severity, and source_type.

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 and resource: 'Get a deduplicated flat list of MITRE technique IDs covered by detection rules.' It also explicitly distinguishes its output scope with 'No full objects,' which separates it from sibling tools that return full technique objects or counts.

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 clearly frames the use case: when you need a compact, deduplicated list of technique IDs, optionally narrowed by source_type, tactic, or severity. However, it does not explicitly name alternative tools or state when not to use this tool, so it stops short of full routing guidance.

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

get_threat_groupB

Get details about a MITRE ATT&CK threat group (APT) by name or ID. Returns aliases, description, and linked techniques.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThreat group name (e.g., "APT29", "MuddyWater", "Lazarus Group") or MITRE ID (e.g., "G0016")

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It does state what the tool returns (aliases, description, linked techniques) and implies a read-only operation, but it omits error behavior, case sensitivity, sources, or coverage limits. This is adequate but not deeply transparent.

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 compact sentence with no filler. It front-loads the core action, clearly states the resource, and includes the identifier forms and expected return fields, making every word earn 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?

For a simple one-parameter lookup, the core invocation requirements are covered and the expected output content is specified. However, with no output schema and several close sibling tools, the description does not clarify when to prefer this tool over alternatives or what it deliberately does not return, leaving moderate gaps.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents the 'name' parameter with helpful examples like 'APT29' and 'G0016'. The description only reiterates the 'by name or ID' framing already present in the schema, so it adds no new semantic meaning beyond the baseline.

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

Purpose4/5

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

The description uses a specific verb ('Get details') and clearly identifies the resource ('MITRE ATT&CK threat group') plus the accepted identifier forms (name or ID) and returned fields. It is clear and specific, but does not explicitly differentiate itself from close siblings like get_threat_profile or search_threat_groups, so it does not earn a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many sibling lookup and search tools, and no exclusions or fallback conditions are stated. An agent is left to infer that exact-name/ID retrieval is intended, which is a significant gap in the sibling-rich context.

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

get_threat_profileB

Get a summary threat profile for common attack scenarios

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYesProfile type: ransomware, apt, insider, web-attack, supply-chain

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description carries the burden of explaining behavior. It only says 'Get', implying read-only retrieval, and 'summary', but it does not disclose what the response contains, where the data comes from, or any caveats. This adds little beyond the tool name.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler, making it easy to parse. However, the brevity leaves out useful context about output contents and alternatives.

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 is simple with one fully documented required parameter, so basic invocation is adequately supported. But with no output schema and no annotations, the agent is left guessing about what the 'summary threat profile' actually returns, and sibling differentiation is weak.

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 already documents the sole parameter completely, listing the valid profile types in its description. The tool description adds no new parameter-level meaning, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb and resource: it retrieves a 'summary threat profile' scoped to 'common attack scenarios', which broadly distinguishes it from actor- or family-specific profile tools. However, it does not explicitly differentiate itself from sibling tools such as malpedia_actor_profile or get_threat_group.

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

Usage Guidelines3/5

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

The phrase 'for common attack scenarios' implies the tool should be chosen when a scenario-level summary is needed rather than actor- or campaign-specific intelligence. It does not name alternatives or give explicit when-not-to-use guidance, so usage context must be inferred.

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

get_top_gapsA

Get the top 5 uncovered (or least-covered) technique IDs for a threat profile (~300 bytes). Returns only IDs — use as a fast triage signal before calling identify_gaps for full detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
threat_profileYesThreat profile: ransomware, apt, initial-access, persistence, credential-access, defense-evasion

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses key behavior: returns only IDs, returns a top-5 subset, and is lightweight (~300 bytes). It does not explain the exact meaning of 'uncovered (or least-covered)' or the response format, but it gives meaningful behavioral context beyond the schema.

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?

Two sentences with no wasted words. The main function is front-loaded, and the second sentence clarifies output scope and relationship to a sibling tool. Every clause earns its place.

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?

The tool is simple with one parameter and no output schema. The description covers what it returns, how many items, and when to use it. Minor ambiguity remains about whether results are ordered or what the exact list format is, but the description is adequately complete for an agent to select and call the 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% and the schema already documents threat_profile, including valid example values. The description does not add parameter-level detail beyond what the schema provides, so the baseline of 3 applies.

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 and resource: get the top 5 uncovered or least-covered technique IDs for a threat profile. It explicitly differentiates itself from the sibling identify_gaps by calling itself a fast triage signal and noting that it returns only IDs.

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?

It explicitly tells the agent when to use this tool: as a fast triage signal before calling identify_gaps for full detail. This names the alternative and gives a clear condition, leaving little to inference.

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

identify_gapsB

Find detection gaps for a threat profile (ransomware, apt, initial-access, persistence, credential-access, defense-evasion). Returns per-technique rule counts and zero-coverage gap IDs. Use source_type to scope to a specific rule source. Call with no arguments to list available profiles and a coverage overview across all of them.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNoThreat profile: ransomware, apt, initial-access, persistence, credential-access, defense-evasion. Omit to get an overview across all profiles.
source_typeNoOptional: filter by source (sigma, splunk_escu, elastic, kql)

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It usefully discloses the return format (per-technique rule counts and zero-coverage gap IDs) and the special no-argument mode behavior. It does not address safety, auth requirements, invalid-profile handling, or pagination, which keeps it at a 3.

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?

Three sentences, front-loaded with the primary purpose, followed by return semantics and parameter guidance. No redundancy with the schema and no filler; it is slightly less tight than an ideal definition only because the parameter guidance repeats what the schema already says.

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 output schema and no annotations, the description does explain what the return value contains and covers both invocation modes. But it does not clarify what the 'coverage overview' includes, what an invalid profile produces, or how it differs from the closely related coverage/gap siblings, leaving meaningful gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters, setting the baseline at 3. The description adds only mild reinforcement ('Use source_type to scope to a specific rule source') and the no-argument overview behavior is already captured in the profile parameter description. No meaningful semantic value beyond 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 states a specific verb+resource ('Find detection gaps') and enumerates the valid threat profiles, which an agent can act on directly. It also discloses the return payload (per-technique rule counts, zero-coverage gap IDs). It does not explicitly differentiate from overlapping siblings like analyze_coverage or get_top_gaps, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description gives concrete invocation guidance: use source_type to scope to a rule source, and call with no arguments to get a profile list plus coverage overview. However, it never states when to choose this tool over the many close siblings (analyze_coverage, get_coverage_summary, get_top_gaps, coverage_gaps_detail), leaving tool-selection largely implied.

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

list_by_cveA

Find detection rules tagged with a specific CVE identifier across all rule sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default: 50)
cve_idYesCVE identifier (e.g., CVE-2024-1234 or just 2024-1234)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Find' implies a read-only search, and the scope is stated, but nothing is disclosed about the result shape, pagination behavior tied to the limit parameter, or failure behavior for malformed CVE identifiers. This is adequate but not rich.

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

Conciseness5/5

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

A single well-formed sentence that front-loads the key action and resource, then appends the important scope qualifier ('across all rule sources'). Zero filler or redundancy.

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 two-parameter list tool with fully documented parameters, the description is mostly sufficient. However, with no output schema and no annotations, it leaves unstated what the returned detection rules look like, and it offers no routing guidance relative to the closely related cve_to_detection and nvd_cve_lookup siblings.

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%, with both parameters documented: cve_id includes a format example and limit states its default. The description itself adds no parameter-level detail beyond echoing the CVE filter, but the schema already does the heavy lifting, so baseline 3 applies.

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 ('Find'), a concrete resource ('detection rules tagged with a specific CVE identifier'), and a scope boundary ('across all rule sources'). This clearly differentiates it from sibling list_by_* tools that filter on different dimensions (list_by_mitre, list_by_severity, list_by_process_name) and from per-source searches.

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

Usage Guidelines3/5

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

The phrase 'across all rule sources' implies this is the source-agnostic CVE search, contrasting with per-source tools like anssi_search or jpcert_search. However, the description does not explicitly state when to prefer this over related CVE-adjacent siblings like cve_to_detection, nvd_cve_lookup, or search_detections, leaving the routing largely to inference.

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

list_by_data_sourceB

Find detection rules that require a specific data source or log type (e.g., Sysmon Events, Process Creation Events, DeviceProcessEvents).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default: 50)
data_sourceYesData source or log type name (e.g., Sysmon Events, DeviceProcessEvents, AWS CloudTrail)

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description must carry the behavioral disclosure burden itself. The verb 'Find' reasonably signals a read-only query rather than a mutation, but the description does not disclose matching semantics, case sensitivity, pagination behavior, or whether the result is a list of full rules or summaries.

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, clear sentence with no filler. The core action and target resource are front-loaded, and the examples are useful without adding unnecessary length.

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 is simple, with two documented parameters and one required field, so the description is arguably sufficient to invoke it. However, it lacks an output shape description and does not address the closely related list_by_logsource sibling, leaving an agent without enough context to choose correctly among similar detection-listing tools.

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 the schema already documents both parameters. The description adds the requirement concept and examples, but those examples largely mirror the schema's own examples, so it provides little additional meaning beyond the structured input definitions.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Find detection rules that require a specific data source or log type.' It clearly states what the tool does and gives concrete examples. However, it does not differentiate from the similarly named sibling list_by_logsource, which appears to serve a nearly identical purpose.

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 gives no guidance on when to use this tool versus alternatives such as list_by_logsource or search_detections. It only describes the action without stating exclusions, preconditions, or the distinguishing conditions that should route an agent here.

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

list_by_logsourceA

Filter Sigma detection rules by logsource category, product, or service (e.g., product=windows, category=process_creation, service=sysmon).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default: 50)
productNoLog source product (e.g., windows, linux, aws, azure)
serviceNoLog source service (e.g., sysmon, security, system, powershell)
categoryNoLog source category (e.g., process_creation, network_connection, registry_event)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that it filters, but does not explain whether multiple criteria are combined with AND/OR, what happens when no filters are provided, how results are ordered, or what the return format is.

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

Conciseness5/5

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

A single, front-loaded sentence communicates the tool's purpose and includes illustrative examples without wasted words. It is appropriately concise for a simple filtered-list tool.

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 optional-parameter filter tool, the description is adequate but not complete. It does not clarify whether parameters can be combined, whether at least one is required, or what the response looks like, and there is no output schema or annotations to fill those gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds concrete examples for product, category, and service, which reinforces the schema, but it does not add meaningfully new semantics beyond what the property descriptions already 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 states a specific action ('Filter Sigma detection rules') and the exact filtering dimensions (logsource category, product, or service), with concrete examples. This clearly distinguishes it from sibling tools like list_by_mitre, list_by_severity, and search_detections.

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?

Usage is implied: use this tool when you need to filter Sigma rules by logsource fields. However, it does not explicitly mention when not to use it or name alternatives such as search_detections or list_by_data_source, leaving some routing to inference.

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

list_by_mitreA

List detections mapped to a MITRE ATT&CK technique ID. Returns logsource (product/category), data_sources, and process_names per rule — use these to rank candidates before calling get_detection. Rules with non-empty process_names are more artifact-specific than generic ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default: 50)
technique_idYesMITRE technique ID (e.g., T1059 or T1059.001)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It explains that the tool returns logsource, data_sources, and process_names per rule, and adds an interpretive heuristic: rules with non-empty process_names are more artifact-specific. This is valuable behavior context beyond the schema. It does not cover all edge cases or operational details, but it is substantial.

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?

Three sentences, each earning its place: the primary function, the returned fields and their role in ranking, and a useful decision heuristic. It is tightly written with no filler or repetition.

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 lookup tool with two parameters and no output schema, the description provides the essential return fields and a downstream recommendation. It explains the purpose, output semantics, and how to interpret results. It could mention when to prefer other list tools, but the core context needed to call and use the tool correctly is present.

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 both parameters are already documented in the input schema. The description adds the conceptual role of technique_id in filtering detections, but no additional parameter-level detail. Baseline 3 is appropriate because the schema does the heavy lifting.

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 and resource: 'List detections mapped to a MITRE ATT&CK technique ID.' It also specifies the key input concept (technique ID), which clearly distinguishes it from sibling tools like list_by_mitre_tactic and list_by_cve. This is a precise, non-tautological definition.

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 gives clear usage context: 'use these to rank candidates before calling get_detection.' This tells the agent when in a workflow to call it and how the returned data should be used. It does not explicitly mention alternatives or state when not to use it, but the sequencing guidance is strong enough for a 4.

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

list_by_mitre_tacticA

List all detections mapped to a MITRE ATT&CK tactic (e.g., execution, persistence, defense_evasion, credential_access).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default: 50)
sourceNoOptional source filter: sigma, splunk_escu, elastic, kql
tacticYesMITRE tactic name (e.g., execution, persistence, defense_evasion, lateral_movement)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden, and its main signal is that 'List' denotes a read-only operation with no mutation or destructive side effects. It also discloses the scope ('all detections mapped to a tactic'), but adds nothing about pagination behavior, result ordering, or response shape — though the absence of an output schema makes some of that expected. The read-only profile and core behavior are conveyed, but little behavioral nuance beyond that.

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

Conciseness5/5

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

A single front-loaded sentence that leads with the action, names the resource, and includes useful inline examples. There is no filler, no repetition of schema details, and 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?

For a simple 3-param list tool, the description plus a fully documented schema covers the essential calling contract: what it returns conceptually and which parameters are needed. However, the crowded sibling field makes the missing routing guidance a genuine completeness gap, and the absence of any return-format or pagination context leaves the agent to guess at results beyond 'detections.' Adequate, but with clear gaps in an annotation-free, output-schema-free context.

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 the schema already documents tactic, limit, and source, earning the baseline 3. The description adds only marginal value: one new example tactic (credential_access) beyond the schema's examples, and the framing that results are 'all detections' for the given tactic. It does not clarify the source filter semantics or how limit interacts with the required tactic 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 states a specific verb and object — 'List all detections' — and pins the filtering dimension to 'MITRE ATT&CK tactic' with concrete example values (execution, persistence, defense_evasion, credential_access). The explicit 'tactic' wording separates it from the similarly named sibling list_by_mitre, and the filter dimension clearly distinguishes it from list_by_severity, list_by_process_name, and list_by_cve. There is no ambiguity about what this tool does.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives — it never mentions list_by_mitre, search_detections, list_by_severity, or any other sibling, and gives no exclusion criteria. The use case is only implied by the name and one-liner, which is inadequate given a sibling list of 120+ tools with several list_by_* variants. An agent gets no help deciding between this and the closely named list_by_mitre.

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

list_by_process_nameA

Find detection rules that reference a specific process name or executable. Uses the process_names field extracted during indexing.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default: 50)
processYesProcess or executable name (e.g., powershell.exe, mimikatz.exe)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully reveals that matches come from the process_names field extracted during indexing, which helps explain why results may be limited. But it does not disclose whether the operation is read-only, how matching is performed, what the return shape is, or any pagination/error 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?

Two short sentences contain only useful information: the action, the resource, the filter, and the underlying field. The description is front-loaded with the primary purpose and has no redundant phrasing.

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 straightforward list/filter tool, the required parameter and default limit are documented, and the source field is mentioned. The absence of an output schema and any note about result format, empty results, or pagination prevents a perfect score, but the essential details for correct invocation are present.

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 both process and limit already explained in the input schema. The description adds the process_names field context, which is helpful background, but it does not materially expand on the schema's parameter meanings. 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?

Starts with a specific verb ('Find') and names both the resource ('detection rules') and the exact filter ('process name or executable'). The second sentence distinguishes it from sibling list_by_* tools by explicitly tying it to the process_names indexing field, so an agent can differentiate it from list_by_mitre, list_by_severity, etc.

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 use case is clear from the tool name, parameter, and description, and the mention of the process_names field implies the data source. However, the description does not explicitly state when to prefer this tool over alternatives like search_detections or other list_by_* tools, nor does it indicate when it should not be used.

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

list_by_severityB

List detections filtered by severity level

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default: 50)
sourceNoOptional source filter
severityYesSeverity: critical, high, medium, low

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'List detections filtered by severity level' and does not mention read-only guarantees, pagination, default limits, output shape, or any side effects. 'List' implies a read operation, but little else is disclosed.

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

Conciseness5/5

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

The description is one short, front-loaded sentence with no redundant wording. Every word earns its place, and the core operation is immediately clear.

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 is simple and the schema covers all parameters, but there are no annotations, no output schema, and no guidance on how this differs from similar list_by_* tools. The description provides the minimum viable context for invocation but leaves behavioral and selection nuances unstated.

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 the input schema already documents severity, limit, and source. The description adds no parameter-specific meaning beyond naming the 'severity level' filter, which meets the baseline but does not exceed it.

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

Purpose4/5

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

The description uses a specific verb ('List'), names the resource ('detections'), and states the filtering axis ('severity level'), so an agent can infer what the tool does. It does not explicitly differentiate itself from sibling list_by_* tools, so it stops short of a 5.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus the many sibling tools such as list_by_mitre, list_by_cve, or list_by_process_name. The description states what the tool does but provides no exclusions, prerequisites, or alternative routing.

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

list_campaignsA

List MITRE ATT&CK campaigns, optionally filtered by search query.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional search query to filter campaigns

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the query-filter behavior already present in the schema and does not mention read-only nature, pagination, result limits, freshness, or any other operational 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?

The description is a single, direct sentence with no filler. The core action and resource are front-loaded, and the optional filter is stated concisely.

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 is simple with one optional parameter and no output schema, so the description is minimally adequate for invoking it. Still, it omits any context about return shape, pagination, or how results are ordered, which 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% and the schema already explains the optional query parameter as filtering campaigns. The description adds no additional meaning beyond what the input schema provides, so the 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 states a specific verb ('List') and a distinct resource ('MITRE ATT&CK campaigns'), and it notes the optional search filter. Among the many sibling tools, none other is dedicated to campaigns, so the resource name clearly differentiates it.

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 intended use case is implied: list campaigns, optionally filtered by a search query. However, there is no explicit guidance about when to prefer this tool over the many related list/search siblings, nor any exclusions or context about campaign-specific workflows.

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

list_data_sourcesA

List all MITRE ATT&CK data sources with their data components.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. The word 'List' reasonably implies a read-only operation, and 'with their data components' indicates what is returned. However, it does not disclose output shape, size limits, pagination, or any additional behavioral context, leaving some burden unmet.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler. It front-loads the action and resource, and every word contributes meaningful information about what the tool returns.

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 no-parameter listing tool, the description largely suffices: it names the domain (MITRE ATT&CK), the object (data sources), and the included detail (data components). It falls short only by not distinguishing itself from a similarly named sibling, which is a meaningful gap in this large tool catalog.

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 there is no parameter ambiguity to resolve. The schema already fully covers the absence of arguments, and the description adds no contradictory parameter information. The zero-parameter baseline of 4 is appropriate.

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

Purpose4/5

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

The description clearly states a specific action ('List all') and resource ('MITRE ATT&CK data sources'), and even notes the output includes data components. However, it does not differentiate this tool from the closely named sibling 'get_data_sources', so an agent could reasonably be unsure which sibling to call.

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 gives no guidance on when to use this tool versus alternatives such as 'get_data_sources' or 'list_by_data_source'. It implies a full list use case with 'all', but does not state exclusions, prerequisites, or situations where a sibling tool would be more appropriate.

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

list_hijacklibsB

List all known DLL hijacking candidates. Optional filter by hijack type (Phantom, Sideloading, Search Order, Environment Variable).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional hijack type filter: "Phantom", "Sideloading", "Search Order", "Environment Variable"

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 carries the full burden. It states the operation is a list/read, but it does not disclose output format, source of the data, freshness, pagination, or any other behavioral traits. The description is not misleading, but it is thin on behavioral context.

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

Conciseness5/5

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

The description is two short sentences with no filler. The primary purpose is stated first, and the optional filter is added in the second sentence. 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?

For a simple list tool with one fully documented optional parameter, the description is minimally adequate. However, with no annotations and no output schema, it would benefit from stating what fields are returned or what 'known' means. The lack of usage guidance and behavioral details leaves some gaps, but the low complexity keeps it at a passing level.

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 the schema already documents the optional 'type' parameter with the same hijack type values. The description repeats this information without adding meaningful new semantics beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states a specific verb and resource: 'List all known DLL hijacking candidates.' It also defines the optional filter dimension. However, it does not explicitly distinguish itself from the sibling lookup_hijacklib, which likely handles individual lookups rather than listing all candidates.

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

Usage Guidelines2/5

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

The description implies the tool is for listing candidates and optionally filtering by hijack type, but it provides no guidance on when to choose this tool over alternatives such as lookup_hijacklib or list_lolrmm. There are no exclusions or explicit comparison to sibling tools.

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

list_lolbasA

List all known LOLBAS (Living Off The Land Binaries) with their primary abuse type

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description must carry behavioral disclosure. It states the output scope ('all known') and one returned field, but does not describe output format, pagination, or data source freshness. For a simple read-only list tool this is adequate but not rich.

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

Conciseness5/5

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

The description is a single sentence with no filler. The action and resource are front-loaded, and every word contributes to the meaning.

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

Completeness4/5

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

For a zero-parameter list tool, the description covers the essential purpose and output content. It lacks an explicit note about output format or limits, but these are less critical given the tool's simplicity.

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

Parameters4/5

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

The tool has zero parameters and the schema is empty, so there is nothing for the description to add. The baseline of 4 applies because no parameter documentation is needed.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('all known LOLBAS'), and specifies the included attribute ('primary abuse type'). This clearly distinguishes it from sibling lookup_lolbas, which would retrieve a specific entry rather than the full set.

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 use when a complete inventory of LOLBAS is needed, but it does not explicitly state when to prefer this over lookup_lolbas or list_lolrmm. No exclusions or alternative routing are provided.

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

list_loldriversA

List all known vulnerable/malicious drivers in the LOLDrivers database. Optional category filter (vulnerable, malicious). Use for BYOVD blocklist generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional: "vulnerable" or "malicious"

TDQS

A4/5.0
Behavior3/5

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

With no annotations and no output schema, the description carries the full burden. It states the core behavior (list all, optional category filter) but provides no information about return format, pagination, or potential size of results. This is adequate for a simple read-only listing but lacks some behavioral detail.

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 with no filler. The action and resource are front-loaded, the optional parameter is clearly mentioned, and the intended use case is added without bloat.

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 only one optional parameter and no output schema, the description provides sufficient information for an agent to call it: list all drivers or filter by category. The missing return-value details are minor given the simple nature of a list 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?

The schema already provides 100% coverage of the single optional category parameter with a description of allowed values. The description repeats this with 'Optional category filter (vulnerable, malicious)' but adds no new param semantics beyond the schema, so a 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 identifies the action as listing all known vulnerable/malicious drivers from the LOLDrivers database, which distinguishes it from siblings like lookup_loldriver (single item lookup) and list_lolbas/list_lolrmm (other databases). The stated purpose of BYOVD blocklist generation adds a specific and unique context.

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 gives an explicit use case: 'Use for BYOVD blocklist generation.' This indicates when to invoke the tool. It does not explicitly contrast it with alternatives or state when not to use it, but the clear use case is sufficient.

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

list_lolrmmA

List all known RMM (Remote Monitoring & Management) tools with their executable names and vendors. Use to build RMM allow/deny lists and T1219 detection rules.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description is the sole source of behavioral information. It clearly communicates that this is a non-mutating enumeration operation returning known RMM tools with their executable names and vendors. It does not mention data freshness or output formatting, but for a simple catalog-list tool this is acceptable and not misleading.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence states the action and output, and the second provides practical usage context. The key differentiating phrase 'List all known' is placed right at the start.

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?

For a zero-parameter enumeration tool with no output schema, the description gives everything an agent needs: what the list contains, what fields are returned, and why an agent would use it. No critical information is missing.

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 there is no parameter burden for the description to carry. The schema already conveys that no input is required, and the description adds the expected output fields, which 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 uses a specific verb ('List all known') with a clear resource (RMM tools) and explicit output fields (executable names and vendors). This clearly distinguishes it from sibling tools like lookup_lolrmm, which would be used for querying a single known RMM entry rather than enumerating the full set.

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 states the intended use: building RMM allow/deny lists and T1219 detection rules. This gives clear context for when to select this tool. It does not explicitly name an alternative or state when not to use it, but the use cases are specific enough to guide an agent.

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

log_decisionB

Log an analytical decision with reasoning for tribal knowledge capture

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for categorization
titleYesShort title for the decision
contextNoContext or situation leading to the decision
decisionYesThe decision made
reasoningYesWhy this decision was made
alternativesNoAlternative approaches considered

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 carries the full burden of behavioral disclosure. It states that the tool logs/persists a decision, but does not describe side effects, whether the entry is immutable, what happens on success, or any required permissions. Minimal behavioral insight beyond the verb 'Log'.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. It states the action, the object, and the purpose in eleven words, making it easy for an agent to parse quickly.

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 logging tool with fully documented parameters, this is close to sufficient. However, the absence of annotations and any mention of output or relationship to get_decisions leaves some uncertainty about expected confirmation and how logged decisions are later retrieved. The description does not fully compensate for the lack of annotations.

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 the baseline is 3. The description adds no parameter-specific semantics beyond the schema; it only reinforces that 'reasoning' is part of the decision log. This is adequate but not additive.

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

Purpose5/5

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

The description uses a specific verb ('Log') with a distinct resource ('analytical decision') and a clear point ('for tribal knowledge capture'). It is easily distinguishable from sibling tools like get_decisions (read) and add_learning (generic knowledge capture).

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

Usage Guidelines2/5

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

The description implies a use case—capturing analytical decisions—but gives no explicit guidance on when to use this tool versus alternatives such as add_learning or get_decisions. No exclusions or selection criteria are provided.

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

lookup_hijacklibA

Look up DLL hijacking candidates for a given DLL name or executable. Returns vulnerable executables, hijack type (Phantom/Sideloading/Search Order), and expected DLL locations. Use for T1574.001/T1574.002 detection engineering.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesDLL name (e.g., "version.dll") or executable name (e.g., "msiexec.exe")

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that this is a read-only lookup and describes the output fields, but it does not mention exact-match behavior, case sensitivity, or what happens when no candidates are 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?

Two focused sentences with no filler. The main action and query types are front-loaded, and the return details are 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?

For a single-parameter lookup tool with no output schema, the description provides sufficient operational context: what to query, what is returned, and the MITRE technique mapping. A small gap is the lack of an explicit sibling alternative for listing all hijack libraries.

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 covers 100% of the parameter with a clear description and examples. The tool description reinforces that 'query' accepts a DLL name or executable name but adds little beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Look up'), identifies the resource ('DLL hijacking candidates'), and states the query types ('DLL name or executable'). It also names the return content (vulnerable executables, hijack type, expected DLL locations), clearly distinguishing it from sibling tools like list_hijacklibs.

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?

It gives a clear use context: 'Use for T1574.001/T1574.002 detection engineering.' It does not explicitly name alternatives or state when not to use this tool, but the intended scenario is clear.

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

lookup_lofpA

Look up known false positives for a MITRE ATT&CK technique. Returns process names, command patterns, descriptions, and suppression logic. Use this during detection rule FP filter authoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idYesMITRE technique ID (e.g., "T1059.001", "T1003.001")

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It states the operation ('Look up') and the output categories, which gives meaningful detail. It does not explicitly declare read-only behavior, but 'Look up... Returns' strongly implies a safe read operation.

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

Conciseness5/5

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

Two concise sentences with no filler. The primary action and return contents are front-loaded, and the usage context is provided in the second sentence.

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 single-parameter lookup with no output schema, the description adequately explains what results will contain and when to use the tool. Additional detail about output structure or empty-result behavior would be nice, but is not necessary for correct invocation.

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% and the single parameter, technique_id, is documented with a format example. The description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Look up known false positives for a MITRE ATT&CK technique,' and names the returned content (process names, command patterns, descriptions, suppression logic). This clearly distinguishes it from other lookup_* siblings such as lookup_mitre_technique.

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 gives explicit context: 'Use this during detection rule FP filter authoring.' It does not name alternatives or exclusions, but for a single-purpose lookup tool the guidance is clear enough.

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

lookup_lolbasB

Look up a Living Off The Land Binary (LOLBAS) by name for abuse techniques

ParametersJSON Schema
NameRequiredDescriptionDefault
binaryYesBinary name (e.g., certutil.exe, mshta.exe)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. 'Look up' implies a read operation but doesn't confirm it, and nothing is stated about exact vs. fuzzy matching, case sensitivity, whether the extension is required, or what happens on no match. For a tool with zero annotation coverage, this is a meaningful 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?

A single sentence with zero filler words. The acronym LOLBAS is expanded for clarity, the verb is front-loaded, and every word carries meaning. Nothing could be trimmed without losing information.

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 one-parameter lookup tool, the essential elements (resource, key, purpose) are present. However, with no output schema and no annotations, the agent learns nothing about the result shape, no-match behavior, or safety profile. This is adequate for a simple tool but leaves room for improvement.

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 'binary' parameter already includes a description with concrete examples (certutil.exe, mshta.exe). The tool description reaffirms the parameter's role ('by name') but adds no format constraints, normalization rules, or matching behavior beyond what the schema provides, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('Look up') with a clear resource (LOLBAS binary), the lookup key (by name), and the purpose (abuse techniques). It distinguishes itself from sibling lookup tools for other resource types (lookup_loldriver, lookup_hijacklib, lookup_wadcom). It doesn't explicitly differentiate from list_lolbas, though 'by name' hints at a targeted single-binary lookup rather than enumeration.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. With a large sibling set including list_lolbas and multiple lookup_* tools differentiated mainly by resource type, the agent must infer selection criteria from the tool name alone. There are no exclusions, prerequisites, or conditions stated.

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

lookup_loldriverA

Look up a vulnerable/malicious driver in the LOLDrivers database by name or hash (SHA256). Returns driver details, hashes for blocklisting, CVEs, and detection guidance. Essential for BYOVD (Bring Your Own Vulnerable Driver) detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesDriver name (e.g., "RTCore64.sys") or SHA256 hash

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of disclosure. It clearly states what the tool does and what it returns (driver details, hashes, CVEs, detection guidance). It does not mention possible limitations such as not-found behavior or data freshness, but for a lookup tool this is reasonably transparent.

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 with no filler. The key action, resource, and input types are front-loaded, and the BYOVD context is added as a meaningful final sentence.

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 one-parameter lookup tool with no output schema, the description adequately explains the return contents and use case. It could be slightly more complete by noting behavior when no match is found, but overall an agent has enough to invoke it correctly.

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 the schema already documents the 'query' parameter well. The description adds the SHA256 detail and the 'name or hash' semantics, but this mostly restates what the schema already conveys. The baseline of 3 is appropriate here.

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

Purpose5/5

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

The description uses a specific verb ('Look up') with a clear resource ('LOLDrivers database') and explains the query types (name or SHA256). It also clarifies the return value and distinguishes itself from sibling list/search tools by focusing on a single driver lookup.

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?

Provides clear context for when to use this tool: for vulnerable/malicious driver lookup and BYOVD detection. It does not explicitly name alternatives or state when not to use it, but the use case is clear enough for an agent to select it correctly among siblings.

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

lookup_lolrmmA

Look up a Remote Monitoring & Management (RMM) tool by name. Returns executable names, network artifacts (domains, ports), registry artifacts, and known abuse by threat actors. Essential for T1219 remote access tool abuse detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_nameYesRMM tool name (e.g., "AnyDesk", "ScreenConnect", "RustDesk")

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does well by stating what the lookup returns: executable names, network artifacts, registry artifacts, and known threat actor abuse. It does not cover output format, exact-match behavior, or error conditions, but the disclosed return categories are meaningful and beyond the schema.

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 with no filler. The primary action is front-loaded, and the second sentence efficiently lists return categories and the detection use case. Every sentence earns its place.

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 single-parameter lookup with no output schema, the description adequately explains what the tool returns and why it matters. It could be slightly more complete by noting whether the name must be exact or by referencing sibling list_lolrmm, but nothing critical is missing for correct invocation.

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 the schema already fully documents the single tool_name parameter. The description adds no additional parameter semantics beyond repeating that the lookup is by name, which keeps this at 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 uses a specific verb and resource: 'Look up a Remote Monitoring & Management (RMM) tool by name.' It clearly distinguishes this from siblings like list_lolrmm and other lookup_* tools by naming the RMM scope and the specific artifact categories returned.

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 gives clear context for when to use the tool: 'Essential for T1219 remote access tool abuse detection.' However, it does not explicitly mention alternatives or when not to use it, such as pointing to list_lolrmm for enumeration or other lookup_lol* tools for different LOL resources.

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

lookup_lots_domainA

Check if a domain is in the LOTS (Living Off Trusted Sites) database — legitimate services abused for C2, exfiltration, or payload hosting. Use for proxy/firewall rule enrichment and T1102/T1567 detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to check (e.g., "pastebin.com", "ngrok.io", "discord.com")

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 the full burden. It clearly states the lookup behavior and explains the LOTS concept, but it does not disclose the return format, whether the match is exact, or any limitations. This is adequate but not rich.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary action is front-loaded, followed by useful context and use cases. Every sentence 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?

For a simple single-parameter lookup, the description covers purpose and use cases. However, with no output schema and no annotations, it does not explain what the response will contain or any caveats about domain format or matching behavior.

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 already provides 100% coverage for the single 'domain' parameter, including examples. The description adds no additional parameter-level meaning, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Check if a domain is in the LOTS database.' It also expands the acronym and explains the threat context, making the tool's purpose unmistakable and distinct from sibling lookup tools like lookup_lolbas or lookup_loldriver.

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 states when to use the tool: 'Use for proxy/firewall rule enrichment and T1102/T1567 detection.' This gives clear context, though it does not mention 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.

lookup_malapiA

Look up a Windows API by name to see its malware behavior mapping. Returns technique associations, malware families using it, and detection notes. Use for understanding what behaviors an API call indicates.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_nameYesWin32 API name (e.g., "VirtualAllocEx", "CreateRemoteThread", "MiniDumpWriteDump")

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It explains the return content (technique associations, malware families, detection notes) and implies a non-mutating lookup. However, it does not mention edge cases like unknown APIs, matching behavior, or any data source caveats.

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 three sentences with no filler. It front-loads the primary action and result, then adds a concise use-case statement. Every sentence contributes value.

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 single-parameter lookup tool, the description covers the invocation context and enumerates the return categories. Since there is no output schema, the description adequately compensates by explaining what the tool returns, though it omits error/edge-case behavior.

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 the input schema already fully documents api_name with examples. The description only restates that the lookup is by name and does not add meaningful parameter semantics beyond the schema.

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

Purpose5/5

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

The description clearly identifies the verb ('Look up'), the resource ('Windows API by name'), and the purpose ('malware behavior mapping'). It also lists specific return content, distinguishing it from sibling lookup tools like lookup_lolbas or lookup_loldriver.

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 states when to use the tool: 'Use for understanding what behaviors an API call indicates.' It does not name alternatives or exclusions, but the use case is clear enough for an agent to select it appropriately among siblings.

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

lookup_mitre_techniqueB

Look up details about a MITRE ATT&CK technique by ID (e.g., T1059, T1059.001)

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idYesMITRE technique ID (e.g., T1059)

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 must carry the transparency burden. 'Look up details' conveys a read-only, non-destructive operation, which is useful, but it does not disclose what details are returned, whether data is fetched live, or any error/edge-case behavior. This is acceptable for a simple lookup, but not rich.

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

Conciseness5/5

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

One sentence with no filler; the action, resource, and ID format are front-loaded. The example 'T1059, T1059.001' is valuable but 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?

For a one-parameter lookup tool, the description is nearly complete for invocation. It names the resource, the input format, and the output type ('details'), though it leaves the exact detail fields unspecified. No output schema exists, so a slightly richer return description would make it fully 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?

The input schema already documents technique_id with the same example, so the description adds no new parameter semantics. Baseline 3 applies because schema coverage is 100%.

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

Purpose4/5

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

The description uses a specific verb ('Look up') and identifies the exact resource ('MITRE ATT&CK technique') plus the input key ('by ID') with concrete examples. It is clearly distinguishable from search-based siblings by the ID-based lookup focus, but it does not explicitly name any alternative tool.

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

Usage Guidelines2/5

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

No guidance is given about when to prefer this tool over search_mitre_techniques, list_by_mitre, or get_technique_ids. The description only states what it does, leaving the agent to infer routing from the tool name and ID parameter.

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

lookup_wadcomA

Search Windows/Active Directory offensive commands by keyword, tool name, or technique. Returns exact commands used by attackers for AD exploitation. Use for building detection conditions from real attack commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch keyword (e.g., "kerberoast", "dcsync", "mimikatz", "bloodhound")

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the key behavior: searching and returning exact offensive commands. However, it does not mention response format, error behavior, rate limits, or any operational constraints. For a simple lookup, this is adequate but not rich.

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

Conciseness5/5

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

Two concise sentences, with the main action and resource front-loaded, followed by the output type and a practical use case. No wasted words.

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

Completeness4/5

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

For a single-parameter lookup tool with no output schema, the description provides enough context: what to search, what input to provide, and what kind of result to expect. It could be more explicit about the return format, but the tool's simplicity keeps this from being a major 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?

Schema coverage is 100% and the schema already describes the query parameter with examples. The description adds value by clarifying that the query can be a keyword, tool name, or technique, which extends the schema's parameter guidance.

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

Purpose5/5

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

The description uses a specific verb ('Search') and clearly identifies the resource: Windows/Active Directory offensive commands. It also states the input types (keyword, tool name, technique) and the output (exact commands used by attackers), which distinguishes it from sibling lookup/search tools.

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 gives a clear use case: 'Use for building detection conditions from real attack commands.' This is practical context for when to invoke the tool, though it does not explicitly mention when not to use it or name alternatives.

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

malpedia_actor_profileA

Get a full Malpedia threat actor profile: aliases, country attribution, motivation, description, and all malware families attributed to this actor. Authoritative source for actor-to-malware mapping. Requires MALPEDIA_API_KEY.

ParametersJSON Schema
NameRequiredDescriptionDefault
actor_idYesMalpedia actor ID (e.g., apt.apt29, crime.fin7) or actor name

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It discloses that the operation is a read ('Get'), requires MALPEDIA_API_KEY, and lists the expected profile contents. However, it does not describe error behavior for unknown actor IDs, response format, or potential API limitations, leaving some behavioral uncertainty.

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 with no filler. It front-loads the action and resource, then provides concrete return-content details and the authentication requirement, making every word useful.

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?

For a single-parameter tool with no output schema, the description is complete enough: it explains what the profile contains, notes the required credential, and establishes the tool's authoritative role. The input schema covers the parameter semantics, so nothing essential is missing for an agent to call and interpret the tool correctly.

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%, and the schema already documents actor_id with concrete examples ('apt.apt29', 'crime.fin7') and the valid alternative form ('or actor name'). The tool description adds no additional parameter meaning beyond framing the result as an actor profile, so the baseline score of 3 applies.

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 and resource: 'Get a full Malpedia threat actor profile', and enumerates the exact contents returned (aliases, attribution, motivation, description, malware families). It further distinguishes the tool as the 'Authoritative source for actor-to-malware mapping', separating it from sibling tools like malpedia_family_profile.

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 clearly positions this tool as the authoritative actor-profile lookup and notes the API key requirement, giving the agent a clear sense of when it applies. It does not explicitly name alternative sibling tools or state when not to use it, so it stops short of full when/when-not guidance.

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

malpedia_family_profileA

Get a full Malpedia malware family profile: alternate names, description, attribution to threat actors, and reference URLs. The authoritative source for malware taxonomy and variant tracking. Requires MALPEDIA_API_KEY.

ParametersJSON Schema
NameRequiredDescriptionDefault
family_nameYesMalpedia family name (e.g., win.cobalt_strike, win.emotet)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explicitly discloses the MALPEDIA_API_KEY requirement, which is a meaningful behavioral constraint. The 'Get' verb implies a read-only operation, but the description doesn't explicitly state that there are no side effects or describe error 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?

Two concise sentences, with the action and content front-loaded and the API key note at the end. No filler or repetitive phrasing.

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?

For a single-parameter lookup with no output schema, the description is complete: it states the required input, the API key prerequisite, and the profile contents the agent can expect. Nothing essential is missing.

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 for the sole parameter is 100%, and the schema already describes family_name with examples. The tool description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.

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?

States a specific action ('Get') and resource ('full Malpedia malware family profile') and lists returned contents. It is clear and distinct from malpedia_actor_profile by resource, but it doesn't explicitly differentiate itself from malpedia_search or other family-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 Guidelines3/5

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

Implies use when a full family profile is needed, which is some guidance, but it never states when not to use it or names alternatives like malpedia_actor_profile or malpedia_search. The context is inferred rather than explicit.

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

misp_warninglist_checkA

Check if an IOC (domain, IP, URL) appears in MISP warning lists. MISP warning lists contain known false positives — legitimate infrastructure that commonly triggers threat intel feeds (Alexa top 1M, Microsoft, Google CDN, etc.). Run this BEFORE pivoting on a domain or IP to avoid wasting time on FPs.

ParametersJSON Schema
NameRequiredDescriptionDefault
iocYesIOC value to check (domain, IP address, or URL)
listsNoWarning lists to check: alexa, microsoft, google, majestic, tranco, mozilla (default: all)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the semantic context well (warning lists = known false positives / legitimate infrastructure, with examples like Alexa top 1M and Google CDN). However, it does not disclose the return format or behavior — e.g., whether the result is a boolean, which specific lists matched, or how multiple lists are aggregated — which matters for an agent deciding how to act on the result.

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?

Three sentences, each earning its place: action, conceptual context, and usage timing. The purpose is front-loaded and there is no fluff. It is slightly information-dense, but appropriately sized for a tool whose domain concept (warning lists) benefits from explanation.

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 2-parameter tool with no annotations and no output schema, the description covers selection and invocation well, including the default 'all lists' behavior captured in the schema. The main gap is the absence of any hint about return values, which an agent would need to interpret the check result in a pivot workflow.

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 the schema already documents both parameters. The description reinforces the IOC types (domain, IP, URL) and provides illustrative context for the lists parameter, but adds little semantic value beyond the schema's own coverage of the parameter names and defaults.

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?

States a specific verb+resource ('Check if an IOC... appears in MISP warning lists') and defines the IOC types covered (domain, IP, URL). It clearly differentiates itself from the many sibling search/pivot tools by explaining its unique role as a false-positive filter, and even gives concrete examples of what these lists contain.

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?

Gives explicit temporal guidance: 'Run this BEFORE pivoting on a domain or IP to avoid wasting time on FPs.' This tells an agent when in a workflow to invoke it, which is strong guidance relative to the many pivot/search siblings. It does not name a specific alternative tool or state an explicit exclusion, so it falls just short of a 5.

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

nsa_search_advisoriesA

Search NSA Cybersecurity RSS feed for security advisories matching a keyword, CVE, actor name, or malware family. NSA cybersecurity advisories and technical guidance. Extracts MITRE techniques, CVEs, and attributed actors. Cached 1 hour.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default: 10)
queryYesSearch keyword: actor name, CVE ID, malware family, or advisory topic

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden; it discloses a 1-hour cache and states that results include extracted MITRE techniques, CVEs, and attributed actors. It does not mention rate limits, pagination, or error behavior, but the disclosed traits are material and go beyond the schema.

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 short and front-loaded, with the first sentence carrying the core purpose and the third adding useful behavioral detail. The second sentence is slightly redundant but not bloated.

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 two-parameter search tool, the description gives enough to invoke it correctly: source, accepted inputs, extraction behavior, and cache freshness. Without an output schema, a note on return shape would improve completeness, but it is not a blocker.

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 the schema already documents query and limit. The description's list of query types largely mirrors the schema's parameter description and adds no new semantic detail.

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 opens with a specific verb ('Search'), names the exact resource ('NSA Cybersecurity RSS feed'), and enumerates supported query types (keyword, CVE, actor name, malware family). This clearly differentiates it from sibling advisory-search tools by source.

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 NSA source is stated up front, giving the agent a clear context for when to invoke this tool. However, it does not explicitly name alternatives or state when not to use it, leaving some routing to inference.

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

nvd_cve_lookupA

Look up a CVE in the NIST National Vulnerability Database (NVD). Returns full record including CVSS v3/v4 scores, affected CPEs, CWE classification, references, and publication dates. Set NVD_API_KEY environment variable for higher rate limits (50 req/30s vs 5).

ParametersJSON Schema
NameRequiredDescriptionDefault
cve_idYesCVE ID (e.g., CVE-2024-3400)

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It adds useful runtime context by explaining the optional NVD_API_KEY environment variable and the rate limit difference (50 req/30s vs 5). It also describes the returned content in enough detail to convey that this is a read-only lookup.

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 three sentences with no filler. It front-loads the core purpose and return value, then adds the rate-limit and API-key context, with every sentence providing actionable 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 one-parameter lookup with no output schema, the description is largely complete: it states the resource, the key returned fields, and a critical rate-limit detail. It could be slightly more precise about the exact response format or error behavior, but nothing essential is missing for an agent to select and invoke the tool correctly.

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 already documents the single parameter with a clear example (CVE-2024-3400), so schema coverage is 100%. The description does not add significant extra parameter semantics beyond reinforcing that the input is a CVE identifier, which meets the baseline for high schema 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 specific action ('Look up a CVE') and the exact resource ('NIST National Vulnerability Database (NVD)'), and it enumerates the returned fields (CVSS v3/v4, CPEs, CWE, references, dates). This makes it easy to distinguish from sibling tools like epss_bulk_check or check_cisa_kev, even without explicitly naming them.

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 when to use the tool: when a full NVD CVE record is needed. It gives a clear context by listing what the record contains, but it does not explicitly state when not to use it or mention alternatives for related lookups such as EPSS scores or CISA KEV status.

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

otx_get_pulse_iocsA

Fetch all indicators from a specific OTX pulse ID. Paginates automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
pulse_idYesOTX pulse ID (24-character hex string)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full responsibility. It discloses one important behavior—automatic pagination—and clarifies it fetches all indicators, not just a sample. However, it does not mention output format, rate limits, auth requirements, or what happens when the pulse ID is invalid, leaving some behavioral gaps.

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

Conciseness5/5

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

The description is one concise sentence that front-loads the main purpose and adds the key behavioral detail of automatic pagination without any filler. Every word earns its place.

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 single-parameter lookup tool with no output schema and no annotations, the description is largely complete: it names the resource, the action, the scope, and the pagination behavior. It could be marginally improved by noting what response shape is returned, but that is not essential for a tool this simple.

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%, with pulse_id already described as a 24-character hex string. The description adds the contextual meaning that the parameter identifies the pulse whose indicators will be returned, but does not add format or syntax details beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states a specific action ('Fetch all indicators') and a specific resource ('a specific OTX pulse ID'), making the tool's purpose immediately identifiable. It also differentiates this tool from OTX siblings like otx_pivot_ip or otx_search_actor by focusing on pulse IDs and indicator collection.

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 when the tool should be used: when you have an OTX pulse ID and want its indicators. However, it does not explicitly mention alternatives or state when not to use it relative to other OTX tools, such as using otx_pivot for actor or hash investigation.

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

otx_pivot_domainA

OTX enrichment for a domain. Returns pulse context, passive DNS history (historical IPs), attributed actors, and malware families.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain or hostname to enrich

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of explaining behavior. It clearly states the tool returns pulse context, passive DNS history, attributed actors, and malware families, which implies a read-only enrichment lookup. It does not discuss rate limits or failure behavior, but for a simple lookup the return behavior is adequately disclosed.

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

Conciseness5/5

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

A single sentence covers purpose and output categories with no filler. The key resource ('domain') and result types are front-loaded, making it easy for an agent to parse quickly.

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?

The tool is a simple one-parameter lookup with no output schema; the description compensates by listing the main output categories. It is largely complete for invocation purposes, though explicit guidance about sibling tools would make it fully self-contained.

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 already provides 100% coverage with 'Domain or hostname to enrich', so the description adds little parameter-level detail beyond repeating 'domain'. Baseline 3 is appropriate because no additional semantics are needed.

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

Purpose5/5

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

The description uses a specific operation ('OTX enrichment for a domain') and lists concrete result categories: pulse context, passive DNS history, attributed actors, and malware families. This makes the tool's scope clear and distinguishes it from the IP/hash/URL pivot siblings.

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

Usage Guidelines3/5

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

The phrase 'for a domain' implies when to use it, and the schema constrains the input to a domain/hostname. However, it does not explicitly state when to prefer this over related pivots (otx_pivot_ip, otx_pivot_url, otx_pivot_hash) or name alternatives.

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

otx_pivot_hashA

OTX enrichment for a file hash. Returns malware families, MITRE techniques, actor attribution, and imphash for sibling sample pivoting.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesFile hash (SHA256, MD5, or SHA1)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral transparency burden. It discloses that this is a lookup-style enrichment returning four specific data categories, but it does not state read-only semantics, authentication requirements, failure behavior, or rate limits. The word 'Returns' implies no side effects, but several behavioral gaps remain.

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

Conciseness5/5

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

The description is a single sentence that immediately identifies the vendor, resource, and output categories with no filler. It is concise, front-loaded, and every phrase contributes useful 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 one-parameter enrichment lookup with no output schema, the description lists the key return categories and explains the purpose of imphash for sibling sample pivoting. It does not cover error behavior or clarify the relationship to bazaar_get_imphash_siblings, but it provides enough context for basic invocation.

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 already documents the single hash parameter with 100% coverage, including accepted formats (SHA256, MD5, or SHA1). The description adds no parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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 performs OTX enrichment on a file hash and enumerates the returned data categories: malware families, MITRE techniques, actor attribution, and imphash. This distinguishes it from other OTX pivot tools by hash type and from non-OTX hash lookups, though it does not explicitly name a sibling.

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?

Usage is implied: use this when you have a file hash and want OTX threat intelligence. The description does not provide explicit when-to-use/when-not-to-use guidance or name alternative tools, so an agent must infer the appropriate context from the tool name and sibling list.

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

otx_pivot_ipA

Full OTX enrichment for an IP address. Returns pulse count, reputation, country, ASN, attributed actors, malware families, MITRE techniques, and pivot suggestions.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYesIPv4 or IPv6 address to enrich

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It lists the expected return fields, which is useful, but it does not mention whether the operation is read-only, whether authentication is required, rate limits, or how pivot suggestions are structured. It adds some transparency but leaves notable gaps.

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

Conciseness5/5

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

The description is a single sentence that front-loads the core purpose and immediately lists the returned data. There is no filler or redundancy.

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 single-parameter enrichment tool with no output schema, the description covers the purpose and enumerates the expected result fields, which is largely sufficient. It could be more complete by noting any prerequisites or limitations, but the core information an agent needs to select and call the tool is present.

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 already fully documents the single 'ip' parameter as 'IPv4 or IPv6 address to enrich' (100% coverage). The description merely repeats 'IP address' without adding format, validation, or usage nuances beyond the schema.

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

Purpose5/5

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

The description states a specific verb ('enrich') and resource ('IP address'), and enumerates the returned data (pulse count, reputation, country, ASN, actors, malware families, MITRE techniques, pivot suggestions). It clearly distinguishes itself from sibling OTX pivot tools by the IP resource.

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

Usage Guidelines3/5

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

The description implies usage for IP enrichment, but it does not explicitly state when to prefer this tool over alternatives such as otx_pivot_domain, otx_pivot_hash, or otx_pivot_url. No exclusions or alternative routing are provided, so guidance is only implicit.

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

otx_pivot_urlA

OTX enrichment for a URL. Returns pulse context, attributed actors, malware families, and suggests domain pivot.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to enrich (must start with http:// or https://)

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does disclose what the tool returns (pulse context, actors, malware families, domain pivot suggestion), which is helpful for a read-style enrichment tool. However, it does not mention whether it makes external network calls, requires authentication, or has rate limitations; those are left unstated.

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 front-loads the core purpose and lists the key outputs without filler. Every clause contributes useful 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 one-parameter enrichment tool, the description covers the purpose, the input type, and the expected outputs. Since there is no output schema, the explicit list of returned context is valuable and mostly sufficient, though it could be slightly stronger by noting that the URL must already be normalized or by clarifying the output format.

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 already documents the url parameter and its http/https requirement with 100% coverage. The description adds contextual meaning by explaining the enrichment purpose, but it does not add new parameter-level details beyond what the schema already contains. Baseline 3 is appropriate since the schema handles parameter semantics well.

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 performs OTX enrichment on a URL and lists the specific outputs: pulse context, attributed actors, malware families, and domain pivot suggestion. This distinguishes it from sibling pivot tools like otx_pivot_ip, otx_pivot_domain, otx_pivot_hash by making the URL focus explicit.

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

Usage Guidelines4/5

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

The phrase 'OTX enrichment for a URL' clearly establishes when this tool is appropriate: when an agent has a URL and needs OTX context. The mention of 'suggests domain pivot' also hints at a follow-up action. However, it does not explicitly exclude or compare against sibling pivot tools, so some inference is still required.

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

otx_search_actorA

ELITE: Search all OTX pulses attributed to a threat actor. Deduplicates IOCs across pulses and returns the actor's full infrastructure — C2 IPs, domains, hashes, MITRE techniques.

ParametersJSON Schema
NameRequiredDescriptionDefault
actor_nameYesThreat actor name (e.g. "APT29", "Lazarus Group", "Volt Typhoon")

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It adds meaningful insight by stating that IOCs are deduplicated across pulses and that the result includes C2 IPs, domains, hashes, and MITRE techniques. It does not mention limitations like pagination or errors, but the key behavioral traits are clear.

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 core sentence is dense and front-loaded, efficiently covering scope, deduplication, and output categories. The 'ELITE:' prefix is a non-functional label that adds no information, preventing a perfect score.

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

Completeness4/5

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

Given the absence of an output schema, the description does well to specify the return categories (C2 IPs, domains, hashes, MITRE techniques). It could also address edge cases such as no results or time range, but the core information an agent needs to invoke and interpret the tool is present.

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 actor_name, including concrete examples. The description reinforces the actor-centric context but adds no additional syntactic or format guidance beyond the schema, so a 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 states a specific verb and resource: 'Search all OTX pulses attributed to a threat actor.' It also clarifies the tool's unique aggregation focus by mentioning deduplication and the return of full infrastructure, which distinguishes it from sibling tools like otx_pivot_ip or otx_pivot_hash.

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 context: use this when you need a threat actor's aggregated infrastructure from OTX pulses. However, it does not explicitly state when to prefer it over alternatives such as otx_pivot_* or otx_get_pulse_iocs, leaving the agent to infer the distinction from sibling names.

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

otx_subscribed_feedA

Fetch OTX subscribed pulses modified since a given timestamp. Use for scheduled ambient threat intel sync.

ParametersJSON Schema
NameRequiredDescriptionDefault
since_isoYesISO-8601 timestamp (e.g. "2025-02-01T00:00:00Z"). Returns pulses modified after this time.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It conveys that this is a read-only fetch of time-filtered pulses, which is useful, but it does not mention pagination, rate limits, auth requirements, or subscription prerequisites.

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?

Two concise sentences with no filler. The primary action and filter are front-loaded, and the follow-up sentence provides a practical use case. 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?

The tool is simple with a single well-documented parameter, but there is no output schema and the description does not address pagination or response volume, which matters for a scheduled synchronization feed. It is adequate but has notable 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 covers 100% of the parameter with a clear description of since_iso. The tool description adds little beyond the schema, but the schema itself fully documents the parameter semantics, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly identifies the action (Fetch), the resource (OTX subscribed pulses), and the filter (modified since a given timestamp). It is specific enough to distinguish from most siblings, though it does not explicitly name alternatives.

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

Usage Guidelines4/5

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

The description states an explicit use case: 'Use for scheduled ambient threat intel sync.' This gives clear context for when to invoke the tool, though it does not explain when not to use it or mention alternative OTX tools.

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

search_detectionsA

Search security detections by keyword across name, description, tags, process names, CVEs, data sources, and more. Uses FTS5 full-text search. Supports Sigma, Splunk ESCU, Elastic, and KQL rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (default: 20)
queryYesSearch keyword or phrase
sourceNoFilter by source: sigma, splunk_escu, elastic, kql
severityNoFilter by severity: critical, high, medium, low

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description must carry the behavioral burden. It does add useful disclosure by mentioning 'Uses FTS5 full-text search', which signals tokenized keyword matching behavior. However, it does not describe return format, result ordering, pagination, or whether results include snippets/highlights, leaving some behavioral ambiguity.

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

Conciseness5/5

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

Two concise sentences deliver the core action, search scope, underlying search mechanism, and supported formats. Every clause adds information, and the most important information is front-loaded.

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

Completeness4/5

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

For a moderately simple keyword search tool, the description covers the search surface, the FTS5 behavior, and the supported detection types. The main gap is the absence of any return-value description, which matters more because no output schema is provided, but the essential calling context is otherwise present.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema. It clarifies what the query parameter will match (name, description, tags, process names, CVEs, data sources) and names the supported rule formats, which helps the agent form better queries even though the source schema already lists the value options.

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 and resource: 'Search security detections by keyword', and enumerates the searchable fields (name, description, tags, process names, CVEs, data sources). It also distinguishes itself from format-specific sibling tools by noting it supports Sigma, Splunk ESCU, Elastic, and KQL rules.

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 establishes the general use case: keyword-based full-text search across detection metadata. However, it does not explicitly say when to prefer this tool over structured alternatives like list_by_severity, list_by_cve, or get_detection, nor does it provide exclusion criteria.

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

search_entitiesA

Search knowledge graph entities by name or description

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional: filter by entity type
queryYesSearch query

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It does add useful scope information: matching is performed on entity name or description, and 'search' implies a read-oriented operation. However, it does not disclose result behavior, matching semantics, pagination, or limits.

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

Conciseness5/5

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

The description is a single sentence with no filler. Every phrase ('knowledge graph', 'entities', 'by name or description') is meaningful, and the core scope is 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?

For a simple two-parameter search tool, the description and schema are functional. However, with no annotations and no output schema, the definition is missing any return-shape or disambiguation details that would help an agent fully understand what to expect or when to choose this over similar search tools.

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 both parameters, so the baseline is 3. The description adds that the query applies to 'name or description', but it does not clarify type value format, behavior, or how the optional filter interacts with the query.

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

Purpose5/5

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

The description uses a specific verb ('Search') against a concrete resource ('knowledge graph entities') and adds the matching scope ('by name or description'). This distinguishes it from the many sibling search_* tools, such as search_detections or search_threat_groups.

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 intended context is clear — search entities in the knowledge graph — but the description does not explicitly say when to prefer this tool over alternatives, nor does it provide exclusions or when-not-to-use guidance. The optional type filter is also left entirely to the schema.

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

search_lolfarmA

Search across ALL LOLFarm sources (drivers, DLL hijacks, RMM tools, false positives, AD commands, abused domains, APIs) with a single query. Optional source filter to narrow results.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch keyword (e.g., "anydesk", "version.dll", "T1055")
sourceNoOptional: filter to one source (drivers, hijacklibs, rmm, wadcoms, lots, malapi)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden, and it does disclose the search scope and filtering option. It does not describe output format, result limits, or pagination, but for a simple search tool those are not critical and no unsafe or unexpected behavior is implied.

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?

Two concise sentences with no filler. The main purpose and full source scope are front-loaded, and the optional filtering behavior is stated clearly and economically.

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 low-complexity, two-parameter search tool, the description is adequate for selecting and invoking the tool correctly. It does not explain the return shape, but the schema handles parameter details and the intended operation is unambiguous.

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 the schema already documents both parameters with examples. The description adds only the 'single query' and 'source filter' emphasis, which is useful but does not need to compensate for missing parameter explanations.

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 performs a search across all LOLFarm sources, enumerating the included source types. The 'single query' phrasing and the all-sources scope distinguish it from source-specific sibling tools like lookup_loldriver or lookup_hijacklib.

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 for broad, cross-source searches and mentions the optional source filter as a way to narrow results. It does not explicitly say when to prefer source-specific lookup tools, but the contrast between 'ALL sources' and 'optional source filter' provides clear context.

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

search_mitre_techniquesB

Search MITRE ATT&CK techniques by keyword

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch keyword (e.g., "powershell", "credential")

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 carries the full burden of behavioral disclosure. It only says 'Search MITRE ATT&CK techniques by keyword' and does not explain output format, matching behavior, result limits, ordering, or any side effects. The read-only nature is implied by 'Search' but not elaborated.

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 clear sentence with no filler or redundant detail. It conveys the essential operation and search criterion economically.

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 one-parameter search tool, the description is minimally adequate, but it does not describe the return value or matching scope, and there is no output schema to compensate. Given the large family of sibling lookup/search tools, a bit more context about what result shape or technique fields are returned would make it 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 description coverage is 100%, and the schema already documents the query parameter with an example. The tool description adds no additional meaning beyond restating 'by keyword,' so the baseline score of 3 applies.

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 ('Search'), the resource ('MITRE ATT&CK techniques'), and the search method ('by keyword'). It is immediately understandable, though it does not explicitly differentiate itself from sibling tools like lookup_mitre_technique or list_by_mitre.

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 gives no guidance about when to use this tool versus alternatives such as lookup_mitre_technique, list_by_mitre, or get_technique_count. There is no indication of preferred use cases, exclusions, or which sibling tools overlap with this search.

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

search_softwareC

Search MITRE ATT&CK software (malware and tools) by keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (e.g., "backdoor", "RAT", "credential")

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 carries the full burden of behavioral disclosure. It only defines scope ('MITRE ATT&CK software') and the search action, but does not describe match behavior, returned fields, result limits, or whether output is a list of software names, IDs, or profiles.

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 clear, front-loaded sentence with no filler. It is appropriately concise for a tool with one parameter, though it sacrifices some potentially useful guidance in favor of brevity.

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 one-parameter search tool, the description plus schema provides enough to make a call, but gaps remain: there is no information about what the tool returns, how results are matched, or how to choose it over closely related siblings. The absence of an output schema and annotations raises the burden, which the description does not fully meet.

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 already covers the single parameter with a description and examples, so schema coverage is 100%. The description adds only the keyword concept, which largely restates the schema's 'Search query' description without introducing meaningful new semantic detail.

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 a specific verb ('Search'), a clear resource ('MITRE ATT&CK software'), and a mechanism ('by keyword'). It is distinct from sibling tools that search techniques or advisories, though it does not explicitly name an alternative.

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 about when to use this tool versus the many sibling search tools, such as search_mitre_techniques, malpedia_search, or get_software. The description implies keyword-based lookup but does not state exclusions or preferred contexts.

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

search_threat_groupsA

Search MITRE ATT&CK threat groups by keyword. Searches name, description, and aliases.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (e.g., "Russia", "ransomware", "financial")

TDQS

A4/5.0
Behavior4/5

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

There are no annotations, so the description carries the full burden. It clearly discloses that the search matches name, description, and aliases, and the operation is a read-only search by the nature of the wording. It leaves out result format details but is adequately transparent for a simple search.

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?

Two efficient sentences with zero repetition or filler. The main action and scope are front-loaded, and the field-matching detail is placed right after.

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 single-parameter search tool with no output schema, the description is functionally complete: it states what is searched, the target data, and example query values. The only minor omission is explicit guidance on how this relates to get_threat_group, but that is not essential for correct invocation.

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 already documents the query parameter at 100% coverage with examples. The description adds that the query is matched against three fields (name, description, aliases), which slightly enriches the parameter meaning, but no additional syntax or formatting rules are needed.

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

Purpose5/5

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

The description states a specific verb and resource: 'Search MITRE ATT&CK threat groups by keyword.' It further clarifies the search scope ('name, description, and aliases'), which distinguishes it from sibling search tools like search_software or get_threat_group.

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

Usage Guidelines3/5

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

The usage is implied by the purpose: users should call this when they need to find a threat group by keyword. However, it does not explicitly compare to alternatives like get_threat_group or search_software, nor state 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.

sublime_get_ruleA

Get a specific Sublime Security rule by its ID, including the full MQL (Message Query Language) detection source, MITRE techniques, and metadata. Use after sublime_search to inspect the complete rule logic.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRule ID from sublime_search (e.g., "sublime_d00893ba-a65a-5b04-88d1-f35512eae291")

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It transparently states that the output includes full detection source, MITRE techniques, and metadata, which is valuable context. It does not mention error cases or access requirements, but 'get' clearly signals a read-only operation.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The core purpose and key output contents are front-loaded, and the usage guidance is appended in a natural second sentence.

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 one-parameter lookup tool with no annotations and no output schema, the description adequately conveys what the tool returns and when to use it. It stops short of covering error behavior or prerequisite details, but nothing critical is missing for an agent to invoke it correctly.

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 already documents the single 'id' parameter with a clear description and example, so schema coverage is 100%. The description merely reinforces that lookup is by ID, adding little beyond the schema, which matches the baseline for high schema 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 tool retrieves a specific Sublime Security rule by ID, listing the key content areas (MQL source, MITRE techniques, metadata). It also distinguishes itself from the sibling sublime_search by framing itself as the follow-up inspection step rather than a search operation.

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 instructs to use this tool after sublime_search to inspect complete rule logic, which provides clear ordering context. It does not explicitly list alternative tools or exclusions, but the single-parameter design and 'get specific rule by ID' framing make the intended use unambiguous.

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

sublime_get_statsA

Get summary statistics about indexed Sublime Security rules: total count, severity breakdown, attack type distribution, top MITRE techniques, and last sync timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It clearly indicates a read-only summary operation and lists the output contents, including the last sync timestamp. It does not mention whether the data could be stale, whether a sync is triggered, or any other side effects, but for a simple stats tool this is acceptable.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action and resource, then lists the specific statistics. Every word adds value and there is no redundancy.

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 does a good job of explaining what the tool returns. It covers the main output categories but does not specify the format or whether the data is live or cached; still, it is sufficient for an agent to call and interpret the result.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so there are no parameter semantics to document. The description appropriately focuses on what the tool returns rather than inputs.

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 ('Get'), a specific resource ('indexed Sublime Security rules'), and enumerates the exact statistics returned. This clearly distinguishes it from siblings like sublime_get_rule and sublime_search, which operate on individual rules or searches.

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: call this when you need summary statistics about indexed Sublime rules. However, it does not explicitly state when to prefer this over siblings like get_stats or get_coverage_summary, nor does it mention any exclusions or alternatives.

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

sublime_syncA

Sync the Sublime Security rules repository (git pull) and re-index all rules into the detection database. Run this to pick up newly published rules. Returns the count of rules indexed and any parse errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce a re-index even if the repository was recently synced (default: false)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the main behavior (git pull, re-index), mentions the return value (count of rules, parse errors), and hints at a possible cooldown via the force parameter. However, it does not clarify whether the operation is additive or destructive, whether it requires special permissions, or what happens on failure beyond parse errors.

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?

Three concise sentences with no fluff: what it does, when to use it, and what it returns. The information is front-loaded and every sentence earns its place.

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 single-optional-parameter tool with no output schema, the description covers the essential invocation context: action, use case, and return value. It could be slightly more complete about error handling and side effects, but nothing critical is missing for basic usage.

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 the only parameter (force) is already documented in the schema. The description adds no additional meaning about the parameter, which is acceptable because the schema covers it fully.

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 action ('Sync the Sublime Security rules repository') and a clear consequence ('re-index all rules into the detection database'). It is clearly distinct from sibling tools like sublime_search, sublime_get_rule, and sublime_get_stats, which serve 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 Guidelines4/5

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

It explicitly says when to use it: 'Run this to pick up newly published rules.' It does not explicitly name alternatives or state when not to use it, but the sibling context makes the intended use clear.

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

suggest_detectionsA

Get detection ideas for a MITRE technique ID as lean stubs (name, source, severity, log hint — no raw query content). ~2KB for up to 10 results. Use to find what rules exist before pulling full content with get_detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_typeNoOptional: filter by source (sigma, splunk_escu, elastic, kql)
technique_idYesMITRE technique ID (e.g., T1059 or T1059.001)

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It reveals that results are lean stubs without raw query content, are limited to ~2KB and up to 10 results, and are intended for triage. It does not explicitly state whether the tool is read-only or if there are side effects, but the tone and use case strongly imply a non-mutating lookup.

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?

Two tight sentences with no filler. The core purpose, output constraints, and usage alternative are all front-loaded and every clause adds 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?

The description is complete for a simple read-style tool: it explains what is returned, the format of each stub, the response size limit, and when to use it. With no output schema, it compensates by describing the return shape, so an agent knows 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?

Schema coverage is 100%, so the parameters technique_id and source_type are already fully described in the schema. The description adds context about the output format and mentions 'source' as a stub field, but it does not need to re-explain parameter meanings. Baseline 3 is appropriate because the schema carries the weight.

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 action ('Get detection ideas for a MITRE technique ID') and a concrete output shape ('lean stubs (name, source, severity, log hint)'). It also distinguishes itself from get_detection by explicitly excluding raw query content, making the tool's unique role clear.

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?

The description gives explicit usage guidance: use suggest_detections to find what rules exist before pulling full content with get_detection. This directly tells the agent when to choose this tool over the closest sibling and frames it as a precursor step.

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

sync_lolfarmA

Pull fresh data from LOLFarm upstream sources (LOLDrivers, HijackLibs, LOLRMM, LoFP, WADComs, LOTS, MalAPI, LOLBAS) into the local cache. Run weekly via scheduled task — most upstream sources update 1-4x per month. Failures in one source never block the others. Returns per-source counts + errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoOptional: sync only one source. Omit to sync all 8 in parallel.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently states the effect (pulling fresh data into cache), partial-failure behavior ('Failures in one source never block the others'), and the return shape ('per-source counts + errors'). This is meaningful context beyond a simple one-line summary.

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 three tight sentences, each carrying distinct value: what it does, when to run it, and how it handles failures/returns. It is front-loaded with the core purpose and contains no filler or redundant restatement.

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?

For a single-optional-parameter sync tool, the description is complete: it specifies the data sources, the scheduling context, the failure-isolation behavior, and the return summary. There is no output schema, but the description covers the essential return information ('per-source counts + errors') without needing further detail.

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 already documents the optional 'source' parameter with a full enum and an explanatory description including the 'omit to sync all 8 in parallel' behavior. The tool description adds no additional parameter-level detail, so it stays at the baseline 3 for high schema 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 uses a specific action verb ('Pull fresh data') with a clear resource ('LOLFarm upstream sources') and destination ('local cache'). It enumerates the exact upstream source families, making it easy to distinguish from the many lookup/search sibling tools such as lookup_lolbas or search_lolfarm.

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 gives explicit scheduling context ('Run weekly via scheduled task') and a rationale tied to upstream update frequency (1-4x per month). It does not explicitly name alternative tools or state when not to use it, but the cadence and cache-focused wording imply it is a maintenance operation rather than an ad-hoc lookup.

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

threatfox_get_recent_iocsA

Retrieve the ThreatFox recent IOC feed for ambient threat intel sync. Returns all IOCs submitted in the last 1, 7, or 30 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysYesLookback window in days: 1, 7, or 30

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does state that the tool returns all IOCs submitted in the selected lookback window, which is useful, but it does not mention output format, pagination, rate limits, or how large the feed might be. This is adequate for a simple read-only retrieval but leaves some behavioral details unspecified.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary action and resource are front-loaded, and the parameter behavior is stated compactly. Every word earns its place.

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 single-parameter feed retrieval tool, the description provides enough information to select and invoke it correctly: what it retrieves, the time windows, and the intended use case. It lacks an explicit output schema or return-format description, but the absence is less critical for a simple feed endpoint and the description still covers the essential invocation details.

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 already fully documents the single parameter 'days' with an enum of 1, 7, or 30 and a description. The tool description simply restates the same lookback windows ('last 1, 7, or 30 days') without adding new semantic detail, so it meets the baseline but does not go beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Retrieve') and a specific resource ('ThreatFox recent IOC feed'), and clarifies the scope by saying it returns all IOCs submitted in the last 1, 7, or 30 days. This clearly distinguishes it from the sibling search tools like threatfox_search_ioc, which are for targeted lookups rather than feed retrieval.

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

Usage Guidelines4/5

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

The phrase 'for ambient threat intel sync' gives a clear intended use case: background or continuous synchronization rather than a one-off targeted search. It does not explicitly name alternatives or state when not to use it, but the context is clear enough for an agent to route appropriately.

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

threatfox_search_familyA

Get all IOCs in ThreatFox for a specific malware family (e.g. "Cobalt Strike", "Sliver", "AgentTesla"). Returns C2 IPs, domains, and payload hashes.

ParametersJSON Schema
NameRequiredDescriptionDefault
familyYesMalware family name (e.g. "Cobalt Strike")

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden of explaining behavior. It discloses the operation's output categories (C2 IPs, domains, payload hashes) and implies a read-only query through 'Get'. It does not mention pagination, limits, or matching details, but for a simple search tool this is reasonably transparent.

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. It front-loads the action and resource, provides concrete examples, and states return types without any filler or redundant phrasing.

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?

For a one-parameter search tool with no output schema, the description is complete: it explains what the input should be, what action occurs, and what kinds of results are returned. An agent has enough information to select and invoke this tool correctly.

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 only parameter, 'family', is already fully documented in the input schema with an example ('Cobalt Strike'). The description adds the same examples but no additional semantic detail, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Get'), names the resource ('IOCs in ThreatFox'), and identifies the key selector ('for a specific malware family'). It also states what will be returned (C2 IPs, domains, payload hashes), making the tool's purpose unmistakable and distinct from sibling tools like threatfox_search_ioc or threatfox_search_tag.

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 gives clear context: use this tool when you need all IOCs associated with a named malware family. It does not explicitly mention alternatives or exclusion criteria, so it stops short of a 5, but the intended use case is clear.

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

threatfox_search_iocA

Search ThreatFox for any IOC type (IP:port, domain, URL, MD5, SHA256). Returns confidence scores and malware family attribution.

ParametersJSON Schema
NameRequiredDescriptionDefault
iocYesIOC value to search (IP:port, domain, URL, hash)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden. It does disclose the key output (confidence scores and malware family attribution), but it does not mention rate limits, authentication, error behavior for unknown IOCs, or result limits. For a read-only search this is acceptable but 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?

Two sentences with no filler; the action and accepted values are front-loaded, and the return value is stated in the second sentence.

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 single-parameter lookup with no output schema, the description covers what the tool does and what it returns. However, it omits any guidance on choosing among the sibling ThreatFox/Bazaar search tools, so an agent may not know when this is the right call.

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 schema already documents the ioc parameter at 100% coverage, but the description adds specificity by enumerating MD5 and SHA256 alongside the schema's generic 'hash' and clarifies acceptable formats. This is a modest value-add over 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?

States a specific verb ('Search'), a resource ('ThreatFox'), and the accepted IOC types (IP:port, domain, URL, MD5, SHA256). It also names the return value, making it clear this is an IOC-value lookup rather than a family or tag search.

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 threatfox_search_family or threatfox_search_tag; the distinction is only implied by the IOC-value parameter and sibling names. No exclusions or alternative routing are provided.

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

threatfox_search_tagA

Search ThreatFox IOCs by tag (e.g. "c2", "loader", "rat", "ransomware").

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYesThreatFox tag to search

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description must carry the behavioral burden itself. The verb 'Search' implies a non-mutating read operation, which is helpful, but the description does not disclose output format, pagination, exact-match behavior, or any rate-limit or authentication concerns. It is adequate for a simple search but lacks richer behavioral context.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It states the action, target resource, filtering dimension, and examples efficiently. Every part 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?

For a tool with one documented parameter and no output schema, this is minimally viable: the agent knows what to pass and roughly what will happen. However, the lack of any return-value description, usage alternatives, or edge-case behavior leaves some ambiguity. The simplicity of the tool prevents a lower score, but the description could still be more complete.

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 schema already documents the sole parameter with 100% coverage, giving a baseline of 3. The description adds value by providing concrete example tag values ('c2', 'loader', 'rat', 'ransomware'), which help the agent understand what kind of string to pass. It does not specify case sensitivity or accepted format, but the examples improve semantic clarity.

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 a specific action ('Search ThreatFox IOCs') and the key dimension ('by tag'), with concrete examples like 'c2', 'loader', 'rat', and 'ransomware'. It clearly conveys the tool's purpose, though it does not explicitly contrast it with sibling tools such as threatfox_search_ioc or threatfox_search_family.

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

Usage Guidelines3/5

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

The usage is implied: use this when you want ThreatFox IOCs matching a known tag. However, there is no explicit guidance about when to prefer this over related tools like threatfox_search_ioc, threatfox_search_family, or bazaar_search_tag, nor are any exclusions or alternative conditions stated.

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

ti_actor_full_profileA

ELITE CORRELATION: Build the most complete threat actor profile available. Fuses MITRE ATT&CK group data, live vendor blog reports, optional OTX IOC pivot, and detection coverage scores across the actor's top 20 techniques. Use this before any hunting engagement against a named threat actor.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesThreat actor name (e.g., APT29, Lazarus Group, FIN7)
include_iocsNoAlso pivot for IOCs via OTX (default: false)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It does disclose that the tool fuses multiple sources and performs an optional OTX IOC pivot, which is useful. However, it does not state whether the operation is read-only, whether it makes external network calls, what happens when sources fail, or how results are shaped.

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 compact: one sentence defining behavior and one sentence giving the usage context. It front-loads the core value and keeps the guidance actionable. The 'ELITE CORRELATION:' prefix is mild marketing filler, but it does not undermine clarity or consume excessive space.

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 complexity and the absence of an output schema, the description explains what the profile contains but not its return structure, how the top 20 techniques are selected, or how failures elsewhere (e.g., OTX or vendor blogs) are handled. It is adequate for initial selection but not fully self-sufficient for an agent expecting a precise contract.

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 the schema already documents both parameters well. The description adds minor framing by calling the actor a 'named threat actor' and describing include_iocs as an optional OTX pivot, but these mostly restate what the schema already says. This meets the baseline without adding substantial new parameter meaning.

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

Purpose4/5

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

The description uses a specific verb ('Build') and a clear resource ('the most complete threat actor profile available'), then enumerates the fused data sources: MITRE ATT&CK group data, live vendor blog reports, OTX IOC pivot, and detection coverage scores. It is clearly scoped to full actor profiling but does not explicitly name or contrast sibling tools, so it stops short of a 5.

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 states when to use the tool: 'Use this before any hunting engagement against a named threat actor.' This gives an agent a clear trigger condition. However, it does not provide exclusions or name alternative tools for narrower lookups, so it lacks full routing guidance.

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

ti_daily_briefA

Generate a daily threat intelligence brief by scanning recent reports from all 21 vendor and community sources. Automatically extracts MITRE TTPs, CVEs, actors, and malware from each item. Filter by client industries or custom lookback window. Run this daily to stay current on the threat landscape. No Playwright required — all sources are polled directly via RSS.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendorsNoSpecific vendor keys to check (default: all 21 vendors — priority + fallback tiers)
industriesNoClient industries to filter for relevance (e.g., ["healthcare", "finance"])
hours_lookbackNoHours to look back (default: 24, max: 168)

TDQS

A4.2/5.0
Behavior4/5

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

With zero annotations, the description carries the full disclosure burden and credibly meets it: sources are polled directly via RSS, no Playwright/browser automation, and each item is automatically enriched with TTPs, CVEs, actors, and malware. It does not disclose return format or runtime, but the RSS-vs-Playwright clarification and explicit extraction pipeline are substantive behavioral disclosures beyond the schema.

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 with zero waste: purpose, extraction behavior, filtering options, cadence, and the technical RSS/Playwright note each earn their place. The core purpose is front-loaded ahead of details, and nothing redundantly repeats schema content.

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 3-optional-param aggregation tool, the description covers scope, extraction behavior, filtering, cadence, and technical implementation. With no output schema, the return shape is undisclosed and runtime is not hinted, but an agent has enough guidance to invoke it correctly with appropriate parameter choices.

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 the baseline of 3 applies. The description reinforces the schema by echoing industry/lookback filtering and the all-21-vendors default, but adds essentially no new semantics beyond what the schema already provides via defaults, max bounds, and a concrete industries example.

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?

States a specific verb and resource — 'Generate a daily threat intelligence brief' — and gives concrete scope: scanning all 21 vendor and community sources and extracting MITRE TTPs, CVEs, actors, and malware. This clearly differentiates it from the many sibling search/lookup tools like anssi_search or ti_multi_source_ttp_lookup, which target a single source or entity type rather than producing a cross-source daily summary.

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?

'Run this daily to stay current on the threat landscape' is explicit cadence guidance for when the tool is appropriate. It also implies when it is not: a broad aggregation brief rather than a targeted on-demand lookup — but it never names alternatives such as ti_multi_source_ttp_lookup, so exclusions are left to inference. Clear context without explicit when-not-to-use wording.

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

ti_hunt_packageA

ELITE: THE ULTIMATE HUNT TOOL. Given a client context (industry + region + scenario), produce a complete hunt package: relevant threat actors, priority TTPs, detection coverage analysis, coverage gaps, and vendor intelligence — all fused from multi-source data. Output is structured for direct import into a use-case tracker.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionYesClient region (e.g., Middle East, UK, US)
industryYesClient industry (e.g., healthcare, finance, energy)
scenarioYesThreat scenario (e.g., ransomware, espionage, supply-chain)
log_sourcesNoAvailable log sources (e.g., ["sysmon", "crowdstrike", "azure_ad"])
max_techniquesNoMax techniques to analyze (default: 15)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It discloses that the tool fuses multi-source data and returns a tracker-ready artifact, which are useful behavioral traits. However, it does not mention performance/cost, whether any external sources are queried live, or any constraints/limitations.

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

Conciseness3/5

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

The substantive second sentence is dense and well organized, but the opening 'ELITE: THE ULTIMATE HUNT TOOL' is hype that does not earn its place. Overall length is appropriate, but not every sentence carries functional information.

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 complex tool with no output schema, the description gives a useful high-level inventory of returned content and states the intended downstream use. It does not explain how optional parameters log_sources and max_techniques shape the hunt package, nor detail the output structure, leaving moderate gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all parameters. The description only groups industry/region/scenario as 'client context' and adds no detail 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 states a clear, specific verb and resource: 'produce a complete hunt package' from client context, and enumerates distinct deliverables (threat actors, TTPs, coverage analysis, gaps, vendor intelligence). This distinguishes it from sibling tools like ti_actor_full_profile or analyze_coverage, which focus on narrower outputs.

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?

It gives a clear invocation context: when a client context (industry + region + scenario) is available and a full fused hunt package is needed. It does not explicitly name alternative tools or exclusion conditions, so it falls short of full 5, but the trigger condition is unambiguous.

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

ti_multi_source_ttp_lookupA

ELITE CORRELATION: Given a MITRE technique ID, fan out across MITRE ATT&CK, vendor threat intel blogs, and the local detection index. Returns a fused picture: which actors use it, what malware leverages it, recent vendor reports, detection coverage, and telemetry requirements. The definitive first stop for any TTP investigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
technique_idYesMITRE ATT&CK technique ID (e.g., T1059.001)
client_regionNoOptional: client region for relevance context
client_industryNoOptional: client industry for relevance context

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It explains the fan-out behavior across sources and lists the returned information categories: actors, malware, vendor reports, detection coverage, and telemetry requirements. It does not mention latency, failure modes, or rate limits, but it gives a clear and accurate picture of what the tool 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?

The core content is compact and informative, with key input and output details in two functional sentences. The 'ELITE CORRELATION' prefix is unnecessary marketing noise and slightly detracts from conciseness, but the rest is well-structured and front-loaded.

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

Completeness4/5

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

Given the tool's multi-source complexity and lack of an output schema, the description adequately covers what the agent needs to know: required technique ID, the sources consulted, and the types of results returned. It does not detail response shape or empty-result handling, but it is largely complete for invocation and expectation-setting.

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 the baseline is 3. The description reinforces that technique_id is the core input but does not add meaning beyond the schema's own descriptions for client_region and client_industry.

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

Purpose5/5

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

The description clearly states a specific verb and resource: given a MITRE technique ID, it fans out across multiple sources and returns a fused picture. It explicitly names what it aggregates (MITRE ATT&CK, vendor blogs, local detection index) and the output categories, which distinguishes it from more focused sibling lookups like lookup_mitre_technique or list_by_mitre.

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 gives clear context for when to use it: 'the definitive first stop for any TTP investigation.' This tells an agent the intended launch point for broad TTP research, though it does not explicitly name alternatives or list when-not-to-use scenarios.

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

urlhaus_lookup_hostA

Find all malicious URLs hosted on an IP address or domain in URLhaus.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesIP address or domain name (e.g. 192.0.2.1 or evil.com)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations present, the description carries the full disclosure burden. It accurately conveys the lookup action and input scope, but does not mention result format, pagination, exact-match behavior, or whether live URLhaus data is queried. This is adequate but not rich.

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

Conciseness5/5

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

A single, information-dense sentence that states the action, resource, input scope, and data source. There is no redundancy or filler, and the core purpose is front-loaded.

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

Completeness4/5

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

For a simple one-parameter lookup tool, the description is largely complete: it explains what the tool does, what input it accepts, and what output to expect. Minor gaps, such as response shape or result limits, are acceptable for a low-complexity tool with no output schema.

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 defines host as an IP or domain with examples. The description repeats this semantics but adds no additional details such as accepted formats, validation rules, or special host syntax, so it remains at 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 uses a specific verb ('Find') and identifies the resource: malicious URLs hosted on an IP or domain in URLhaus. This clearly differentiates it from urlhaus_lookup_url and urlhaus_lookup_tag while being immediately understandable.

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

Usage Guidelines3/5

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

The description implies the appropriate context: when an analyst has an IP address or domain and wants associated malicious URLs. However, it never explicitly states when to prefer this tool over alternatives like urlhaus_lookup_url 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.

urlhaus_lookup_tagA

Search URLhaus for all malicious URLs associated with a malware tag (e.g. "Emotet", "qakbot", "cobalt-strike").

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYesMalware tag to search (e.g. "Emotet", "AgentTesla")

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of explaining behavior. It clearly states the tool searches an external service and returns URLs matching a tag, which implies a read-only lookup. However, it does not mention output format, pagination, data freshness, rate limits, or any caveats about the 'all' claim.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. It front-loads the action and resource, then gives illustrative tag examples, making it easy to scan and understand.

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 one-parameter read-only lookup, the description is largely complete: it names the source, the query criterion, and the expected result type (malicious URLs). It lacks an explicit return-shape description, but given low complexity and no output schema, this is a minor gap rather than a major 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?

The input schema already fully documents the single 'tag' parameter with type and examples, so schema coverage is 100%. The description adds a few additional tag examples but no new semantic meaning beyond what the schema provides.

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

Purpose5/5

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

The description uses a specific verb ('Search'), a clear resource ('URLhaus'), and a precise scope ('all malicious URLs associated with a malware tag'). It also provides concrete tag examples, making the tool's purpose immediately distinguishable from related URL/host lookups like urlhaus_lookup_url and urlhaus_lookup_host.

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

Usage Guidelines3/5

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

The description implies the tool is for querying by a malware tag to retrieve malicious URLs, but it provides no explicit guidance on when to choose this over similar sibling tools such as threatfox_search_tag or bazaar_search_tag. No exclusions or alternative routing are mentioned.

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

urlhaus_lookup_urlA

Look up a URL in URLhaus to check if it distributes malware. Returns payload hashes, imphashes, and malware tags. Generates pivot suggestions for chained analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL to look up (e.g. http://evil.com/payload.exe)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It discloses that the tool performs a lookup and returns specific data types plus pivot suggestions, which is useful. However, it does not mention any rate limits, authentication needs, or behavior when no results are found. For a read-only lookup tool this is adequate but not exceptional.

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 short sentences with no filler. The core action and purpose are front-loaded, followed by the return values and the pivot-generation feature. Every sentence adds distinct value without redundancy.

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 single-parameter lookup tool with no output schema and no annotations, the description covers the core need: what it does, what it returns, and how it can feed further analysis. It could be more complete by describing the response format or empty-result handling, but the listed outputs and pivot suggestion make it sufficiently actionable.

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 already provides 100% coverage for the single 'url' parameter, including a concrete example. The description does not add meaning beyond what the schema offers—it restates that the tool looks up a URL without adding format constraints, normalization rules, or edge-case guidance. Baseline 3 is appropriate given the schema's completeness.

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

Purpose5/5

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

The description uses a specific verb ('Look up') with a clear resource ('a URL in URLhaus') and states the investigative purpose ('check if it distributes malware'). It also enumerates the return contents (payload hashes, imphashes, malware tags) and pivot suggestions, which distinguishes it from sibling URLhaus tools that look up by host or tag.

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 when to use this tool: when you have a URL and want to check it against URLhaus. The mention of 'Generates pivot suggestions for chained analysis' gives some context for integration into a workflow, but it does not explicitly state when not to use it or name alternatives like urlhaus_lookup_host or urlhaus_lookup_tag.

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. 129 tool updatesv1.0.0
    • First observedacsc_search
    • First observedadd_learning
    • First observedanalyze_coverage
    • First observedanalyze_ioc
    • First observedanssi_search
    • First observedanyrun_trending
    • First observedart_coverage_report
    • First observedart_get_stats
    • First observedart_get_test
    • First observedart_get_tests
    • First observedart_map_conditions
    • First observedart_search
    • First observedart_validate_technique
    • First observedbazaar_get_imphash_siblings
    • First observedbazaar_get_recent_samples
    • First observedbazaar_lookup_hash
    • First observedbazaar_search_family
    • First observedbazaar_search_tag
    • First observedbleeping_search
    • First observedcccs_search
    • First observedcert_eu_search
    • First observedcheck_cisa_kev
    • First observedcisa_search_advisories
    • First observedconvert_sigma_to_kql
    • First observedconvert_yara_to_sigma
    • First observedcoverage_assess_session
    • First observedcoverage_compare
    • First observedcoverage_gaps_detail
    • First observedcoverage_ingest_log
    • First observedcoverage_list_mappings
    • First observedcoverage_recommend
    • First observedcreate_entity
    • First observedcreate_relation
    • First observedcve_to_detection
    • First observedepss_bulk_check
    • First observedepss_score_lookup
    • First observedexploit_db_search
    • First observedfbi_flash_search
    • First observedgenerate_hunt_report
    • First observedget_coverage_summary
    • First observedget_data_sources
    • First observedget_decisions
    • First observedget_detection
    • First observedget_groups_using_technique
    • First observedget_knowledge_summary
    • First observedget_learnings
    • First observedget_lolfarm_context
    • First observedget_mitigations
    • First observedget_mitre_attack_stats
    • First observedget_software
    • First observedget_software_using_technique
    • First observedget_stats
    • First observedget_technique_count
    • First observedget_technique_ids
    • First observedget_threat_group
    • First observedget_threat_profile
    • First observedget_top_gaps
    • First observedgoogle_tag_search
    • First observedgovt_joint_advisory_search
    • First observedidentify_gaps
    • First observedjpcert_search
    • First observedlist_by_cve
    • First observedlist_by_data_source
    • First observedlist_by_logsource
    • First observedlist_by_mitre
    • First observedlist_by_mitre_tactic
    • First observedlist_by_process_name
    • First observedlist_by_severity
    • First observedlist_campaigns
    • First observedlist_data_sources
    • First observedlist_hijacklibs
    • First observedlist_lolbas
    • First observedlist_loldrivers
    • First observedlist_lolrmm
    • First observedlog_decision
    • First observedlookup_hijacklib
    • First observedlookup_lofp
    • First observedlookup_lolbas
    • First observedlookup_loldriver
    • First observedlookup_lolrmm
    • First observedlookup_lots_domain
    • First observedlookup_malapi
    • First observedlookup_mitre_technique
    • First observedlookup_wadcom
    • First observedmalpedia_actor_profile
    • First observedmalpedia_family_profile
    • First observedmalpedia_search
    • First observedmalwarebytes_search
    • First observedmisp_warninglist_check
    • First observedncsc_uk_search
    • First observednsa_search_advisories
    • First observednvd_cve_lookup
    • First observedotx_get_pulse_iocs
    • First observedotx_pivot_domain
    • First observedotx_pivot_hash
    • First observedotx_pivot_ip
    • First observedotx_pivot_url
    • First observedotx_search_actor
    • First observedotx_subscribed_feed
    • First observedproject_zero_search
    • First observedqualys_search
    • First observedrapid7_search
    • First observedsans_isc_search
    • First observedsearch_detections
    • First observedsearch_entities
    • First observedsearch_lolfarm
    • First observedsearch_mitre_techniques
    • First observedsearch_software
    • First observedsearch_threat_groups
    • First observedsublime_get_rule
    • First observedsublime_get_stats
    • First observedsublime_search
    • First observedsublime_sync
    • First observedsuggest_detections
    • First observedsync_lolfarm
    • First observedtenable_search
    • First observedthreatfox_get_recent_iocs
    • First observedthreatfox_search_family
    • First observedthreatfox_search_ioc
    • First observedthreatfox_search_tag
    • First observedti_actor_full_profile
    • First observedti_daily_brief
    • First observedti_hunt_package
    • First observedti_multi_source_ttp_lookup
    • First observedurlhaus_lookup_host
    • First observedurlhaus_lookup_tag
    • First observedurlhaus_lookup_url
    • First observedvx_underground_search
    • First observedzdi_search

TDQS

B3.2/5.0
Disambiguation2/5

The set contains large clusters of functionally identical tools: 10 CERT/government advisory searches and 12+ vendor blog searches differ only by data source, not operation, forcing agents to choose among near-duplicates for the same task. The coverage/gap cluster (analyze_coverage, get_coverage_summary, identify_gaps, get_top_gaps, get_technique_count, get_technique_ids) also has blurry boundaries that the descriptions only partially resolve.

Naming Consistency4/5

Most tools follow a predictable snake_case verb_noun or source-prefixed pattern (e.g., {vendor}_search, threatfox_search_*, lookup_*, list_by_*, art_*, coverage_*), making clusters internally coherent. Minor deviations exist: epss_bulk_check vs epss_score_lookup, check_cisa_kev vs cisa_search_advisories, and analyze_coverage vs get_coverage_summary use inconsistent verbs for the same domain.

Tool Count1/5

At 129 tools, this far exceeds even the 50+ extreme threshold. The bloat is driven largely by 20+ source-parameterized duplicate searches and an 8-tool knowledge graph/tribal knowledge subsystem that feels tangential to the core threat-intel mission. The server could be halved by consolidating sources into a single parameterized search tool without losing scope.

Completeness4/5

The domain surface is unusually comprehensive: IOC lookup/pivoting, CVE enrichment, MITRE ATT&CK querying, detection rule search, coverage assessment sessions, Atomic Red Team validation, query conversion, and hunt report generation form complete end-to-end workflows with few dead ends. Minor gaps exist — knowledge graph entities lack update/delete and detection rules are read-only — but these are peripheral to the server's analysis-oriented purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying and analysis of a unified database of security detection rules across multiple formats, including Sigma, Splunk, Elastic, KQL, and CrowdStrike CQL.
    341
    484
    Apache 2.0
  • F
    license
    B
    quality
    C
    maintenance
    Enables context-aware EVTX hunting with process lineage tracing and rarity baselining to surface real threats from security logs, transforming raw alerts into actionable kill chain intelligence.
    3
    1
    -

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/legionultramax/Detection-Engineering-MCP'

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