Skip to main content
Glama
Cyreslab-AI

ransomware-live-mcp-server

Ransomware.live MCP Server

A Model Context Protocol (MCP) server that provides real-time ransomware victim monitoring through the Ransomware.live API. This server enables AI agents to access comprehensive ransomware threat intelligence data including victim information, group details, and attack trends.

Features

Tools

  • get_api_info: Get basic API metadata and information

  • get_recent_victims: Get the latest disclosed ransomware victims

  • get_group_info: Get detailed information about a specific ransomware group

  • get_all_groups: Get a list of all known ransomware groups

  • get_all_cyberattacks: Get all known cyberattacks

  • get_recent_cyberattacks: Get recently added cyberattacks

  • get_group_victims: Get all victims claimed by a specific ransomware group

  • search_victims: Search for victims by keyword

  • get_country_attacks: Get cyberattacks for a specific country

  • get_country_victims: Get victims from a specific country

  • get_victims_by_date: Get victims by specific year and month

  • get_sector_victims: Get victims from a specific business sector

  • get_cert_contacts: Get national CERT contact information for a country

  • get_yara_rules: Get YARA rules associated with a ransomware group

Pro Tier Tools (require RANSOMWARE_LIVE_API_KEY)

These call the Ransomware.live API PRO and only work when a Pro API key is configured. See Pro Tier Setup below. If called without a key configured, they return a clear error instead of silently falling back to free-tier data.

  • get_negotiation_chat: Get leaked ransomware negotiation chat logs (ransom demands, counteroffers, payment outcomes). Tiered: no arguments lists groups with chats available, group lists that group's chats, group + chatId reads the full message thread.

  • get_ransom_note: Get ransom note text left by ransomware groups. Tiered: no arguments lists groups with notes on file, group lists note identifiers, group + noteName reads the full note text.

  • get_iocs: Get Indicators of Compromise (hashes, IPs, domains, emails, BTC addresses, URLs). No group lists which groups have IoCs and of what types; group returns that group's actual indicator values; optional type filters to one IoC type.

  • get_mitre_ttps: Get a ransomware group's MITRE ATT&CK tactics/techniques (TTPs), exploited CVEs, and tooling, as part of its comprehensive Pro-tier intelligence profile.

Resources

  • ransomware://api/info: Basic information about the Ransomware.live API

  • ransomware://victims/recent: Most recently disclosed ransomware victims

  • ransomware://groups/all: Complete list of all known ransomware groups

  • ransomware://attacks/recent: Recently added cyberattacks

Related MCP server: ZoomEye MCP Server

Installation

  1. Clone or download this MCP server

  2. Install dependencies:

npm install
  1. Build the server:

npm run build

Usage

With Claude Desktop

Add the server config to your claude_desktop_config.json:

{
  "mcpServers": {
    "ransomware-live": {
      "command": "node",
      "args": ["/path/to/ransomware-live-server/build/index.js"]
    }
  }
}

With Other MCP Clients

The server can be started with:

npm start

Or run directly:

node build/index.js

API Information

This server uses the Ransomware.live API v2 which provides:

Pro Tier Setup (optional)

The free tier (above) has no authentication and covers victims, groups, cyberattacks, CERT contacts, and YARA rules. The Pro tier adds ransomware.live's real differentiators: leaked negotiation chat logs, ransom notes, and IoC/MITRE ATT&CK mapping.

  1. Get a free Pro API key at ransomware.live/my.

  2. Set it as an environment variable before starting the server:

    export RANSOMWARE_LIVE_API_KEY="your-api-key-here"

    Or in your MCP client config:

    {
      "mcpServers": {
        "ransomware-live": {
          "command": "node",
          "args": ["/path/to/ransomware-live-server/build/index.js"],
          "env": {
            "RANSOMWARE_LIVE_API_KEY": "your-api-key-here"
          }
        }
      }
    }
  3. The four Pro tools (get_negotiation_chat, get_ransom_note, get_iocs, get_mitre_ttps) become usable. All other tools are unaffected whether or not a key is set.

Pro tier details (from the live API spec):

  • Base URL: https://api-pro.ransomware.live

  • Authentication: X-API-KEY header

  • Rate limit: 500,000 requests/month per key

Data Types

Ransomware Victim

  • victim: Company/organization name

  • group: Ransomware group responsible

  • attackdate: Date of attack (if known)

  • country: Country code (ISO-2)

  • sector: Business sector

  • website: Victim's website

  • description: Additional details

  • press: Related press coverage

  • updates: Status updates

Ransomware Group

  • name: Group name

  • description: Group description

  • locations: Operating locations

  • countries: Target countries

  • profile: Group profile information

  • captive: Has captive payment site

  • parser: Has automated parser

Cyberattack

  • id: Attack identifier

  • victim: Target organization

  • group: Responsible group

  • date: Attack date

  • country: Target country

  • sector: Target sector

  • description: Attack details

Examples

Get Recent Victims

// Get last 10 victims
{
  "tool": "get_recent_victims",
  "arguments": {
    "limit": 10
  }
}

Search for Specific Victims

// Search for victims containing "hospital"
{
  "tool": "search_victims", 
  "arguments": {
    "keyword": "hospital",
    "limit": 20
  }
}

Get Group Information

// Get info about LockBit group
{
  "tool": "get_group_info",
  "arguments": {
    "group": "lockbit"
  }
}

Get Country-Specific Data

// Get victims from Germany
{
  "tool": "get_country_victims",
  "arguments": {
    "countryCode": "DE"
  }
}

Get Sector Analysis

// Get healthcare sector victims
{
  "tool": "get_sector_victims",
  "arguments": {
    "sector": "Healthcare",
    "countryCode": "US"
  }
}

Get a Negotiation Chat (Pro tier)

// Discover which groups have chats
{ "tool": "get_negotiation_chat", "arguments": {} }

// List LockBit3's available chats
{ "tool": "get_negotiation_chat", "arguments": { "group": "lockbit3" } }

// Read a specific chat's full message thread
{ "tool": "get_negotiation_chat", "arguments": { "group": "lockbit3", "chatId": "20240517" } }

Get MITRE ATT&CK TTPs for a Group (Pro tier)

{
  "tool": "get_mitre_ttps",
  "arguments": {
    "group": "blackcat"
  }
}

Error Handling

The server includes comprehensive error handling for:

  • Invalid API responses

  • Network connectivity issues

  • Malformed requests

  • Rate limiting (if applicable)

  • Missing or invalid parameters

Rate Limiting

The Ransomware.live API is free but may have rate limits. The server includes a 30-second timeout for requests and uses appropriate User-Agent headers.

Use Cases

  • Threat Intelligence: Monitor recent ransomware activity

  • Risk Assessment: Analyze sector-specific attack trends

  • Incident Response: Research specific ransomware groups

  • Compliance Reporting: Track regional attack patterns

  • Security Research: Access YARA rules and IOCs

  • CERT Coordination: Find national CERT contacts

Development

Running in Development

npm run dev

Building

npm run build

Testing

We provide multiple comprehensive test suites:

Basic API Connectivity Test

node simple-test.cjs

Complete Tool Testing

node test-all-tools.cjs

Final Documentation Test

node final-test-for-readme.cjs

๐Ÿงช Comprehensive Test Results

All 14 tools have been thoroughly tested and verified working:

โœ… Quick Response Tools (< 1 second)

  1. get_api_info โœ…

    • Duration: ~0.4s

    • Returns: API metadata and current update status

    • Sample: 2025-07-22T20:17:06.022697+00:00

  2. get_recent_victims โœ…

    • Duration: ~0.1s

    • Returns: Latest ransomware victims with full details

    • Sample: blueridgesl.com (SafePay ransomware, US)

  3. get_group_info โœ…

    • Duration: ~0.2s

    • Returns: Detailed ransomware group intelligence

    • Sample: LockBit group with 9 detailed properties

  4. get_all_cyberattacks โœ… (with limit)

    • Duration: ~0.3s

    • Returns: Comprehensive attack database

    • Sample: Kannapolis city attack

  5. get_recent_cyberattacks โœ…

    • Duration: ~0.2s

    • Returns: Most recent attack additions

    • Real-time threat intelligence data

  6. get_group_victims โœ…

    • Duration: ~0.4s

    • Returns: Group-specific victim lists

    • Sample: Bangkok Airways (LockBit victim)

  7. search_victims โœ…

    • Duration: ~0.3s

    • Returns: Keyword-filtered victim searches

    • Sample: Hospital search returns Anadolu Hastaneleri (DireWolf)

  8. get_cert_contacts โœ…

    • Duration: ~0.2s

    • Returns: National CERT contact databases

    • Sample: 109 US CERT contacts

  9. get_yara_rules โœ…

    • Duration: ~0.1s

    • Returns: Malware detection rules

    • Sample: LockBit YARA signatures

โœ… Large Dataset Tools (1-60 seconds)

  1. get_all_groups โœ…

    • Duration: ~45s

    • Returns: Complete ransomware group database

    • Dataset: 275+ known ransomware groups

  2. get_country_attacks โœ…

    • Duration: ~30s

    • Returns: Country-specific attack data

    • Sample: Germany's complete attack history

  3. get_country_victims โœ…

    • Duration: ~35s

    • Returns: National victim databases

    • Dataset: 5,365+ US victims, 800+ German victims

  4. get_victims_by_date โœ…

    • Duration: ~25s

    • Returns: Time-based victim analysis

    • Sample: December 2024 victim surge data

  5. get_sector_victims โœ…

    • Duration: ~40s

    • Returns: Industry-specific threat intelligence

    • Sample: Healthcare sector with hundreds of victims

๐ŸŽฏ Test Performance Summary

  • Success Rate: 100% (14/14 tools working)

  • API Connectivity: โœ… Confirmed live data access

  • Real-time Data: โœ… Current as of 2025-07-22T20:17:06

  • Large Datasets: โœ… Handles 5,000+ victim records

  • Timeout Handling: โœ… Optimized for large responses (2+ minutes)

๐Ÿ“Š Live Data Samples Confirmed

  • Recent Victims: blueridgesl.com, Bangkok Airways, Anadolu Hastaneleri

  • Active Groups: LockBit, SafePay, DireWolf, and 272+ others

  • Geographic Coverage: US (5,365+ victims), Germany (800+ victims)

  • Sector Analysis: Healthcare, Finance, Manufacturing, Government

  • CERT Contacts: 109 US emergency response contacts

  • Detection Rules: Current YARA signatures for major families

๐Ÿ”ง Technical Improvements Made

  • Timeout Optimization: Extended to 2+ minutes for large datasets

  • Memory Handling: Support for 50MB+ API responses

  • Error Handling: Comprehensive validation and graceful degradation

  • Rate Limiting: Built-in delays between API calls

  • Performance Monitoring: Detailed timing and response analysis

Data Sources

All data is provided by Ransomware.live, which aggregates information from:

  • Ransomware group leak sites

  • Threat intelligence feeds

  • Public security reports

  • CERT advisories

  • News sources

  • This data is for legitimate security research and defense purposes

  • Comply with applicable laws and regulations

  • Respect rate limits and API terms of service

  • Use responsibly for threat hunting and incident response

  • Do not use for malicious purposes

Contributing

Contributions welcome! Please submit issues and pull requests for:

  • Bug fixes

  • Feature enhancements

  • Documentation improvements

  • API endpoint additions

License

MIT License - see LICENSE file for details.

Support

For issues with this MCP server:

  • Create GitHub issues

  • Submit pull requests

  • Contact via MCP community channels

For Ransomware.live API issues:

Available Tools

18 tools
get_all_cyberattacksB
Read-only

Get all known cyberattacks

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of attacks to return (max 1000)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety/open-world behavior is covered. The description adds only the 'all known' scope and does not disclose ordering, pagination behavior beyond the schema, or what happens without a limit. There is no contradiction with annotations.

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

Conciseness5/5

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

Four words with no filler, repetition, or unnecessary context. The verb, object, and qualifier are all meaningful and front-loaded.

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

Completeness4/5

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

For a one-parameter read-only tool with an output schema and safety annotations, the description is mostly sufficient. It could be improved by explicitly routing to sibling tools, such as get_recent_cyberattacks, but the core invocation is inferable from the schema and 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?

The single optional 'limit' parameter is fully documented in the schema with min, max, and description, so schema coverage is 100%. The description adds no parameter-level meaning, so 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 clear verb ('get') and a clear resource ('all known cyberattacks'), and 'all' distinguishes it from the sibling 'get_recent_cyberattacks'. However, it does not explicitly name alternatives and 'known' is somewhat vague about scope.

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 for when to use this tool instead of get_recent_cyberattacks, get_country_attacks, or other filtered variants. The only usage signal is the implicit word 'all'.

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

get_all_groupsA
Read-only

Get a list of all known ransomware groups

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and openWorldHint=true, which cover the safety and open-world scoping. The description adds no additional behavioral context (e.g., pagination, ordering, or volume expectations) beyond what the annotations imply. It is consistent with annotations but adds marginal value.

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 waste. The action and scope are front-loaded, and 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 parameterless list tool with an output schema and read-only annotations, the description is sufficient. It does not detail output structure, but the output schema covers that, so nothing critical is missing. Could mention pagination but that is not required at this complexity level.

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 description has nothing to explain. The baseline for 0 params is 4, and the description does not need to compensate for any schema gaps.

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'), resource ('list'), and scope ('all known ransomware groups'). It clearly distinguishes this from siblings like 'get_group_info' or 'get_recent_victims' without needing to open any schema.

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 by the word 'all' โ€“ use this when a complete list of groups is needed rather than details about one group. No explicit alternatives are named, and there are no exclusions or conditions, so it falls short of the 4-5 bar.

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

get_api_infoB
Read-only

Get basic API metadata and information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
groupsNo
versionNo
victimsNo
endpointsNo
descriptionNo

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds no meaningful behavioral context beyond that. It does not describe response conventions, potential rate limiting, or the nature of the 'information' returned. There is no contradiction with the annotations, but the description contributes little independent transparency.

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

Conciseness5/5

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

The description is a single short phrase with no filler words. It front-loads the action and resource, and every word earns its place for a tool this simple.

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 no parameters, a safe read-only annotation, and an output schema present, the description covers the essential invocation context. It might have mentioned that this is the general discovery/metadata endpoint, but that gap is minor given the structured annotations and output schema.

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% by trivially covering everything. With no parameters to document, the description is not required to add meaning, and the baseline for zero-parameter tools 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 names a concrete resource, 'basic API metadata and information,' which is distinct from the data-focused sibling tools like get_all_victims or get_group_info. It does not explicitly name a sibling to differentiate from, but the general 'API metadata' scope is enough to tell it apart from the specific data retrieval tools.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many sibling tools, nor any mention of it as a discovery/capability-introspection endpoint. An agent gets no context about whether it should be called first, or how it relates to siblings like get_api_info or get_mitre_ttps.

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

get_cert_contactsA
Read-only

Get national CERT contact information for a country

ParametersJSON Schema
NameRequiredDescriptionDefault
countryCodeYesISO-2 country code (e.g., US, DE, FR)

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
emailNo
phoneNo
countryYes
websiteNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds the scope of the returned data (national CERT contacts by country) but does not describe output details, freshness, or availability; the existing output schema covers return structure.

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

Conciseness5/5

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

The description is a single efficient sentence with no redundant words. The key resource and scope are immediately front-loaded.

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 lookup with read-only and open-world hints plus an output schema, the description is entirely sufficient. No additional operational guidance is needed.

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 the countryCode parameter. The description's 'for a country' loosely maps to that parameter but adds no details 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') with a concrete resource ('national CERT contact information') scoped by country. This clearly distinguishes it from all sibling tools, which focus on attacks, victims, groups, and other datasets.

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 makes the use case obvious: when the agent needs national CERT contact data for a country. It does not name alternatives, but no sibling tool covers CERT contacts, so no exclusions are necessary.

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

get_country_attacksB
Read-only

Get cyberattacks for a specific country

ParametersJSON Schema
NameRequiredDescriptionDefault
countryCodeYesISO-2 country code (e.g., US, DE, FR)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is known. The description adds no behavioral detail about pagination, limits, or handling of unknown country codes. With annotations covering the main concerns, this is acceptable; there is no contradiction.

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 no filler. The verb and scope are front-loaded, and every word earns its place. It is minimal but appropriately sized for the tool's simplicity.

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, read-only tool with an output schema and full schema coverage, the description is largely sufficient. The main gaps are ambiguity about whether 'country' refers to attack origin or target, and lack of alternative routing, but these are minor given the simple 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%, with countryCode fully described as an ISO-2 code with format and examples. The description only says 'specific country' and adds no extra meaning beyond the schema, 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 states a clear verb ('Get') and resource ('cyberattacks') scoped to a specific country, which distinguishes it from get_all_cyberattacks and get_recent_cyberattacks. It does not explicitly differentiate from get_country_victims beyond the resource name, but the intent is clear.

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. The description does not mention that it is for a single country rather than all attacks, nor does it give exclusions or point to siblings. An agent must infer usage from the tool name alone.

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

get_country_victimsB
Read-only

Get victims from a specific country

ParametersJSON Schema
NameRequiredDescriptionDefault
countryCodeYesISO-2 country code (e.g., US, DE, FR)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint and openWorldHint, so the operational safety is covered. However, the description adds no behavioral context beyond the functional statementโ€”no mention of empty results, pagination, data completeness, or what 'open world' means for the returned data. It neither contradicts annotations nor enriches them.

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

Conciseness5/5

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

The description is a single, focused sentence that front-loads the action and scope. Every word earns its place, and there is no filler, redundancy, or unnecessary background.

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 a single well-documented parameter, read-only annotations, and an existing output schema, the description is mostly adequate. However, it lacks any detail about the result scope (e.g., all historical victims, only current) and does not distinguish itself among the many overlapping sibling tools. This leaves room for an agent to select the wrong tool without additional 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%; the countryCode parameter already has a clear ISO-2 description with min/max lengths. The description's phrase 'specific country' adds no format, example, or semantic detail beyond the schema. Baseline 3 is appropriate because the schema carries the full parameter burden.

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 'Get victims from a specific country' clearly states the action (get), the resource (victims), and the filtering criterion (specific country). It differentiates from siblings like get_all_cyberattacks and get_recent_victims, and the name clarifies it is about victims, not attacks. The purpose is unambiguous and specific.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as search_victims, get_group_victims, get_sector_victims, or get_country_attacks. There are no exclusions, no alternative references, and no context about preferred use cases. An agent must infer usage solely from the name.

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

get_group_infoA
Read-only

Get detailed information about a specific ransomware group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYesName of the ransomware group

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
parserNo
captiveNo
profileNo
countriesNo
locationsNo
descriptionNo
javascript_renderNo

TDQS

A3.7/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the description need not re-establish the safety profile. The description adds little behavioral context beyond 'detailed information', but it is consistent with the annotations and does not contradict them.

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 immediately conveys the tool's action and target. There is no wasted wording or redundant repetition of the tool name.

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?

This is a simple one-parameter, read-only lookup with a full input schema, an output schema, and safety annotations. The description plus structured metadata supplies everything an agent needs to invoke it correctly; return values are already covered by the 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 description coverage is 100%, with the 'group' parameter already documented as 'Name of the ransomware group'. The description's 'specific ransomware group' adds minimal 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 states a clear verb ('Get') and resource ('detailed information about a specific ransomware group'), and the word 'specific' correctly signals that this targets one group rather than all groups. It does not explicitly differentiate from close siblings like get_group_victims, but the purpose is not vague or tautological.

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 'specific ransomware group' implies this tool is for retrieving details about a single named group, which helps distinguish it from get_all_groups. However, it provides no explicit guidance about when to prefer this over get_group_victims or get_all_groups, and no exclusions or alternatives are named.

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

get_group_victimsA
Read-only

Get all victims claimed by a specific ransomware group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYesName of the ransomware group

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already provide readOnlyHint: true, indicating a safe read operation, which the description aligns with. However, it adds no additional behavioral context (e.g., what happens for unknown groups, response structure beyond the output schema, or any rate limits). Since the output schema exists, the description need not explain return format, but it offers no extra operational details.

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 the meaning, and it is appropriately sized for a tool with one parameter and an 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 simple read-only tool with one well-described parameter and an output schema, the description is functionally sufficient. However, it lacks any guidance on distinguishing it from the many sibling tools that also return victim data (e.g., get_country_victims, get_victims_by_date), which would make it more complete for an agent deciding among them.

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% because the single parameter 'group' has a description ('Name of the ransomware group'). The tool description adds nothing beyond that, so it meets the baseline but does not enrich the parameter meaning with examples, constraints, or edge cases.

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 ('Get'), a precise resource ('all victims'), and the scoping condition ('claimed by a specific ransomware group'). This makes its purpose unambiguous and distinguishes it from sibling tools like get_all_groups or get_recent_victims, which target different resources or filters.

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 when a user knows a ransomware group name, but it does not explicitly mention when to choose this over related tools such as search_victims or get_victims_by_date. There is no reference to alternatives or exclusion conditions, so an agent must 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.

get_iocsA
Read-only

[Pro tier, requires RANSOMWARE_LIVE_API_KEY] Get Indicators of Compromise (file hashes, IPs, domains, emails, BTC addresses, URLs) for ransomware groups. Call with no group to see which groups have IoCs and of what types; add group to get that group's actual indicator values. Optionally filter to one IoC type with type.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional IoC type filter, e.g. md5, sha256, ip, domain, email, btc, url.
groupNoRansomware group name (e.g. lockbit3, blackcat). Omit to list all groups that have IoCs.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses the Pro tier requirement and RANSOMWARE_LIVE_API_KEY, as well as the behavioral difference between omitting and providing the group parameter. It does not mention rate limits or error handling, but the annotations already establish the safe read-only nature.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the auth requirement and resource, then concise usage modes. Every clause adds necessary information, with no wasted words.

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 covers auth, parameter behavior, and filtering, giving an agent everything needed to call the tool correctly. Since an output schema exists, omitting return details is appropriate. It is complete for an agent to decide when and how to invoke this tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the parameters are already documented. The description adds value by explaining the interaction between group and type: omitting group lists groups/types, adding group returns actual values, and type filters the results. This goes beyond the schema's field-level descriptions.

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 gets Indicators of Compromise for ransomware groups, listing specific IoC types (file hashes, IPs, domains, emails, BTC addresses, URLs). It also distinguishes two modes (summary vs values) and an optional filter, making it distinct from sibling tools like get_yara_rules or get_mitre_ttps.

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?

Explicit guidance is given: call with no group to see which groups have IoCs and their types, add group to get actual values, and optionally filter by type. However, it does not explicitly name alternative tools or conditions for when not to use this tool, 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_mitre_ttpsA
Read-only

[Pro tier, requires RANSOMWARE_LIVE_API_KEY] Get a ransomware group's MITRE ATT&CK tactics/techniques (TTPs), exploited CVEs (with CVSS scores), and tooling, as part of its comprehensive Pro-tier intelligence profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYesName of the ransomware group (e.g. lockbit3, blackcat, clop)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and external data access. The description adds the Pro-tier API key requirement and mentions it is part of a comprehensive profile, but does not disclose other behaviors like rate limits, pagination, or error handling. This adds some context beyond annotations but not rich 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.

Conciseness4/5

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

The description is a single sentence that front-loads the requirement and states the core function. The phrase 'as part of its comprehensive Pro-tier intelligence profile' adds minimal value and could be trimmed, but overall it is efficient and well-structured.

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 one well-documented parameter and an output schema present, the description covers the essential purpose and constraints. It lacks explicit guidance on when to use this tool versus siblings, but the existence of an output schema and the simplicity of the tool make it reasonably complete for an agent to call 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% โ€“ the 'group' parameter already has a clear description with examples. The tool description does not add any additional semantics beyond what the schema provides, 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 identifies the resource (a ransomware group's MITRE ATT&CK TTPs, exploited CVEs with CVSS scores, and tooling) and the action (get). It distinguishes itself from siblings like get_group_info or get_iocs by naming specific data types. The scope is unambiguous and not a tautology.

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 prerequisite (Pro tier, requires RANSOMWARE_LIVE_API_KEY) which is a usage constraint, but it does not explicitly say when to use this tool versus alternatives (e.g., get_group_info for general info, get_iocs for indicators). The usage context is implied by the data it returns, not explicitly contrasted with siblings.

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

get_negotiation_chatA
Read-only

[Pro tier, requires RANSOMWARE_LIVE_API_KEY] Get leaked ransomware negotiation chat logs (ransom demands, counteroffers, payment outcomes). Call with no arguments to discover which groups have chats available; add group to list that group's chats; add chatId (from that list) to read the full message thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoRansomware group name (e.g. lockbit3, blackcat). Omit to list all groups that have negotiation chats.
chatIdNoChat ID returned by calling this tool with just `group` set. Requires `group` to also be set.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds meaningful behavioral context: the Pro-tier requirement and API key prerequisite, and the dependency that `chatId` requires `group` to be set. It also clarifies that this is a read-only lookup over leaked data. No contradictions with annotations exist.

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 dense sentence that front-loads the core purpose and then packs in all three usage modes. It is efficient with no filler, but the sentence is somewhat long and could be split for readability. Still, every clause earns its place.

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 read-only, multi-mode lookup tool with an output schema, the description covers all necessary invocation patterns, the auth requirement, and parameter dependencies. Since an output schema already documents return shapes, no further return-value explanation is needed. The description is complete for safe and correct usage.

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 value beyond the schema by explaining the parameter sequence and dependency: `group` is optional to list all groups, and `chatId` is only usable after calling with `group`. This goes beyond the schema's field-level descriptions, which only state the dependency, not the intended workflow.

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 resource ('leaked ransomware negotiation chat logs') and the action ('Get'), and specifies the three distinct call modes (no args, group, chatId) that define its scope. This differentiates it from sibling tools like get_ransom_note and get_recent_victims by the exact data type it serves.

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 step-by-step call patterns: no arguments lists available groups, adding `group` lists that group's chats, adding `chatId` reads the full thread. It does not explicitly name alternative sibling tools or state when not to use it, but the workflow guidance is unambiguous and sufficient for correct invocation.

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

get_ransom_noteA
Read-only

[Pro tier, requires RANSOMWARE_LIVE_API_KEY] Get ransom note text left by ransomware groups. Call with no arguments to discover which groups have notes on file; add group to list that group's note identifiers; add noteName (from that list) to read the full note text.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoRansomware group name (e.g. lockbit3, clop). Omit to list all groups that have ransom notes.
noteNameNoNote identifier returned by calling this tool with just `group` set. Requires `group` to also be set.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description doesn't need to restate those. It adds substantial behavioral context beyond annotations: the auth requirement ('[Pro tier, requires RANSOMWARE_LIVE_API_KEY]') and the dependency that noteName requires group to be set. This goes beyond what annotations provide and fully discloses the tool's 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, information-dense sentence that front-loads the purpose and then efficiently explains all three usage modes. There is no redundant phrasing; every clause adds necessary guidance. It is both concise and structured logically, making it easy for an agent to parse and act on.

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 has an output schema, so return format is covered. The description covers the two key behavioral aspects: the progressive disclosure pattern and the API key requirement. It also implies the dependency chain (group before noteName). For a tool with this complexity, the description is complete and an agent can call it correctly without additional inference.

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

Parameters5/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 meaning by explaining the progressive relationship: group is optional to list groups, but when combined with noteName, it selects a specific note. It also clarifies that noteName values come from the output of calling with group set, which is not evident from the schema alone.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get ransom note text left by ransomware groups.' It then specifies three distinct usage modes (no args, group only, group+noteName), which unambiguously distinguishes it from sibling tools like get_negotiation_chat or get_yara_rules. The verb-resource pair is specific and the progressive disclosure is explicit.

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 step-by-step instructions: 'Call with no arguments to discover which groups have notes on file; add `group` to list that group's note identifiers; add `noteName` (from that list) to read the full note text.' This fully explains when and how to use the tool, including the necessary call sequence. It also notes the API key requirement, adding critical context for when the tool can be used.

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

get_recent_cyberattacksC
Read-only

Get recently added cyberattacks

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of attacks to return (max 1000)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds no behavioral context beyond that โ€“ it does not explain what 'recently' means, how results are ordered, or any pagination or time-frame details. With annotations present, the description provides minimal added transparency.

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

Conciseness4/5

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

The description is a single concise sentence that immediately states the tool's purpose. It contains no fluff and is appropriately sized for a simple tool, though it could have included a brief mention of alternatives without becoming verbose.

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

Completeness2/5

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

Given the tool has only one optional parameter, an output schema, and favorable annotations, the description is still incomplete for agent selection. It fails to differentiate clearly among the many sibling tools (17 listed) and does not clarify the meaning of 'recently'. An agent could easily choose 'get_all_cyberattacks' without additional 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% for the single 'limit' parameter, so the schema already fully documents its meaning and constraints. The description adds no 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.

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'cyberattacks' with the qualifier 'recently added'. This distinguishes it from the sibling 'get_all_cyberattacks', which presumably returns all attacks. However, 'recently' is left vague, so the purpose is clear but could be more precise.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like 'get_all_cyberattacks' or 'get_country_attacks'. Usage is only vaguely implied by the word 'recently', but there is no mention of scenarios, exclusions, or alternative tools.

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

get_recent_victimsA
Read-only

Get the latest disclosed ransomware victims

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of victims to return (max 1000)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already cover read-only and open-world behavior, and the description adds the useful 'disclosed' framing and recency scope. It does not specify ordering semantics or what 'latest' precisely means, but the annotations lower the bar 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?

A single front-loaded sentence with no filler. Every word contributes to understanding the tool's purpose.

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?

With an output schema, read-only/open-world annotations, and one optional parameter, the definition provides everything an agent needs to select and invoke the tool correctly. Any minor ambiguity about ordering is already implied by 'latest'.

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, limit, is fully documented in the input schema with type, range, and description, so schema coverage is 100%. The description adds no additional parameter nuance, 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?

States a specific verb ('Get') and resource ('latest disclosed ransomware victims'), and the word 'latest' differentiates it from date-range, search, and sector-specific victim tools. The purpose is unmistakable and distinct from siblings.

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 choose this tool over alternatives such as get_victims_by_date, search_victims, or get_sector_victims. The only implied usage is the word 'latest', with no explicit when/when-not or alternative naming.

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

get_sector_victimsB
Read-only

Get victims from a specific business sector

ParametersJSON Schema
NameRequiredDescriptionDefault
sectorYesBusiness sector name
countryCodeNoOptional ISO-2 country code to filter by country

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is covered. However, the description adds no additional behavioral context beyond the purposeโ€”no mention of result limits, pagination, exact-match semantics, or how the optional countryCode interacts with sector filtering. With annotations present, the bar is lower, but this description contributes nothing extra.

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 earns its place, making it concise and immediately understandable.

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 simplicity of the tool (1 required parameter, optional filter), the presence of an output schema, and annotations covering safety and open-world semantics, the description is largely complete. The only minor gap is the lack of usage guidance, but that is already scored under usage_guidelines. The tool's behavior is clear enough 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 documents both parameters ('Business sector name' and 'Optional ISO-2 country code to filter by country'). The description's reference to 'a specific business sector' aligns with the 'sector' parameter but adds no new meaning beyond the schema. Baseline 3 is appropriate.

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

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 ('victims') with a clear qualifier ('from a specific business sector'), which distinguishes it from sibling tools like get_country_victims or get_group_victims. However, it does not name alternatives or explicitly differentiate from search_victims, 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 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 siblings (e.g., search_victims, get_country_victims). The phrase 'from a specific business sector' only implies the tool is appropriate when a sector is known, but there are no explicit when-to-use, when-not-to-use, or alternative routing instructions.

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

get_victims_by_dateA
Read-only

Get victims by specific year and month

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesYear (e.g., 2024)
monthYesMonth (1-12)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond restating the query parameters, such as result limits, pagination, or data coverage. It is consistent with the annotations but contributes little extra transparency.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repetition. It communicates the core operation and its key filter efficiently, earning its place entirely.

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 read-only tool with a fully documented input schema and an output schema present, the description is mostly sufficient. The main gap is the lack of explicit guidance on how this tool relates to sibling victim-related tools, but the core calling context is adequately covered.

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%: both year and month have descriptive names, ranges, and examples in the schema. The description's phrase 'specific year and month' adds no meaning beyond what the input schema already 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 the action ('Get victims') and the resource ('victims') with a specific filter ('by specific year and month'). It is understandable on its own, but it does not explicitly differentiate itself from siblings like get_recent_victims or search_victims, 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 implies the tool should be used when a caller needs victims for an exact year and month, but it provides no explicit guidance about when not to use it or which alternative tool to prefer. There are many sibling tools with overlapping victim-related functionality, and no routing direction is offered.

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

get_yara_rulesA
Read-only

Get YARA rules associated with a ransomware group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYesName of the ransomware group

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesRaw YARA rule data for the ransomware group, as returned by the Ransomware.live API. The exact shape varies by group.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and data-nature profile. The description adds no further behavioral context such as whether rules are returned as text, URLs, or metadata. This is acceptable given the annotations exist, but the description itself carries little extra transparency.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repetition. Every word contributes to defining the tool's purpose.

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 simple read-only getter with one fully documented parameter and an output schema present, the description is sufficient. The agent knows exactly what input to provide and can rely on the schemas for the rest.

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

Parameters3/5

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

The input schema has 100% coverage, describing 'group' as 'Name of the ransomware group'. The description reiterates this same relationship without adding format details, allowed values, or examples. Baseline 3 is appropriate since the schema already documents the parameter completely.

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') and a precise resource ('YARA rules') scoped to 'a ransomware group'. This clearly distinguishes it from sibling tools like get_iocs or get_mitre_ttps, since YARA rules are a distinct artifact type.

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 should be used when YARA rules for a specific ransomware group are needed. However, it does not mention any alternatives or exclusion criteria, leaving the comparison with sibling tools like get_iocs or get_mitre_ttps to the agent's inference.

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

search_victimsB
Read-only

Search for victims by keyword

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return (max 1000)
keywordYesKeyword to search for in victim names

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond the one-line statement, such as matching semantics, result limits, default behavior, or scope of the search.

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 or repetition. It is efficient, though terse enough to border on under-specification for a tool with routing 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?

With only two well-documented parameters, an output schema, and read-only/open-world annotations, the description is minimally sufficient for invocation. It omits matching behavior and default limit behavior, but the schema and annotations cover most operational needs.

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%: keyword and limit both have descriptions. The description's 'by keyword' reinforces the keyword parameter but adds no meaning beyond what the schema already provides, 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 names the action ('Search') and resource ('victims') and identifies the distinguishing mechanism ('by keyword'). It does not explicitly contrast with the sibling getters, but the keyword qualifier makes the tool's role reasonably apparent.

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 'by keyword' phrasing implies this is the unstructured search option among structured getters like get_country_victims and get_group_victims. However, the description never explicitly states when to prefer this tool over 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv1.0.0
    • First observedget_all_cyberattacks
    • First observedget_all_groups
    • First observedget_api_info
    • First observedget_cert_contacts
    • First observedget_country_attacks
    • First observedget_country_victims
    • First observedget_group_info
    • First observedget_group_victims
    • First observedget_iocs
    • First observedget_mitre_ttps
    • First observedget_negotiation_chat
    • First observedget_ransom_note
    • First observedget_recent_cyberattacks
    • First observedget_recent_victims
    • First observedget_sector_victims
    • First observedget_victims_by_date
    • First observedget_yara_rules
    • First observedsearch_victims

TDQS

A3.7/5.0

Scored across 18 tools

Disambiguation4/5

Most tools map to clearly distinct resources such as victims, groups, cyberattacks, CERT contacts, YARA rules, and Pro-tier intelligence data. The six victim-related tools are distinct filters, but their volume means an agent must read the arguments carefully to avoid selecting the wrong victim query.

Naming Consistency4/5

The overwhelming majority of tools follow a consistent get_<resource> snake_case pattern, making the set highly predictable. The single exception is search_victims, which uses the verb 'search' rather than 'get', but it still follows a clear verb_noun convention.

Tool Count4/5

At 18 tools, the server is slightly above the typical well-scoped range, but the breadth of ransomware intelligence data justifies the count. Each tool covers a distinct data slice across free and Pro tiers, and there is minimal obvious redundancy.

Completeness5/5

The server provides broad coverage of public intelligence including victims, groups, attacks, and CERT contacts, plus Pro-tier depth in YARA rules, negotiation chats, ransom notes, IoCs, and MITRE TTPs. The main retrieval dimensions of group, country, sector, date, and keyword are all represented, leaving agents few dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers