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,
grouplists that group's chats,group+chatIdreads the full message thread.get_ransom_note: Get ransom note text left by ransomware groups. Tiered: no arguments lists groups with notes on file,
grouplists note identifiers,group+noteNamereads the full note text.get_iocs: Get Indicators of Compromise (hashes, IPs, domains, emails, BTC addresses, URLs). No
grouplists which groups have IoCs and of what types;groupreturns that group's actual indicator values; optionaltypefilters 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
Clone or download this MCP server
Install dependencies:
npm installBuild the server:
npm run buildUsage
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 startOr run directly:
node build/index.jsAPI Information
This server uses the Ransomware.live API v2 which provides:
Provider: Julien Mousqueton
Authentication: Free tier available (no API key required)
Base URL: https://api.ransomware.live/v2
Documentation: Available at GitHub
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.
Get a free Pro API key at ransomware.live/my.
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" } } } }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.liveAuthentication:
X-API-KEYheaderRate limit: 500,000 requests/month per key
Data Types
Ransomware Victim
victim: Company/organization namegroup: Ransomware group responsibleattackdate: Date of attack (if known)country: Country code (ISO-2)sector: Business sectorwebsite: Victim's websitedescription: Additional detailspress: Related press coverageupdates: Status updates
Ransomware Group
name: Group namedescription: Group descriptionlocations: Operating locationscountries: Target countriesprofile: Group profile informationcaptive: Has captive payment siteparser: Has automated parser
Cyberattack
id: Attack identifiervictim: Target organizationgroup: Responsible groupdate: Attack datecountry: Target countrysector: Target sectordescription: 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 devBuilding
npm run buildTesting
We provide multiple comprehensive test suites:
Basic API Connectivity Test
node simple-test.cjsComplete Tool Testing
node test-all-tools.cjsFinal 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)
get_api_info โ
Duration: ~0.4s
Returns: API metadata and current update status
Sample:
2025-07-22T20:17:06.022697+00:00
get_recent_victims โ
Duration: ~0.1s
Returns: Latest ransomware victims with full details
Sample:
blueridgesl.com(SafePay ransomware, US)
get_group_info โ
Duration: ~0.2s
Returns: Detailed ransomware group intelligence
Sample: LockBit group with 9 detailed properties
get_all_cyberattacks โ (with limit)
Duration: ~0.3s
Returns: Comprehensive attack database
Sample: Kannapolis city attack
get_recent_cyberattacks โ
Duration: ~0.2s
Returns: Most recent attack additions
Real-time threat intelligence data
get_group_victims โ
Duration: ~0.4s
Returns: Group-specific victim lists
Sample: Bangkok Airways (LockBit victim)
search_victims โ
Duration: ~0.3s
Returns: Keyword-filtered victim searches
Sample: Hospital search returns
Anadolu Hastaneleri(DireWolf)
get_cert_contacts โ
Duration: ~0.2s
Returns: National CERT contact databases
Sample: 109 US CERT contacts
get_yara_rules โ
Duration: ~0.1s
Returns: Malware detection rules
Sample: LockBit YARA signatures
โ Large Dataset Tools (1-60 seconds)
get_all_groups โ
Duration: ~45s
Returns: Complete ransomware group database
Dataset: 275+ known ransomware groups
get_country_attacks โ
Duration: ~30s
Returns: Country-specific attack data
Sample: Germany's complete attack history
get_country_victims โ
Duration: ~35s
Returns: National victim databases
Dataset: 5,365+ US victims, 800+ German victims
get_victims_by_date โ
Duration: ~25s
Returns: Time-based victim analysis
Sample: December 2024 victim surge data
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
Legal & Ethical Considerations
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:
Visit the official repository
Contact the API maintainers directly
Available Tools
18 toolsget_all_cyberattacksBRead-only
Get all known cyberattacks
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of attacks to return (max 1000) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_groupsARead-only
Get a list of all known ransomware groups
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_infoBRead-only
Get basic API metadata and information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| groups | No | |
| version | No | |
| victims | No | |
| endpoints | No | |
| description | No |
TDQS
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.
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.
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.
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.
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.
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_contactsARead-only
Get national CERT contact information for a country
| Name | Required | Description | Default |
|---|---|---|---|
| countryCode | Yes | ISO-2 country code (e.g., US, DE, FR) |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| No | ||
| phone | No | |
| country | Yes | |
| website | No |
TDQS
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.
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.
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.
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.
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.
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_attacksBRead-only
Get cyberattacks for a specific country
| Name | Required | Description | Default |
|---|---|---|---|
| countryCode | Yes | ISO-2 country code (e.g., US, DE, FR) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_victimsBRead-only
Get victims from a specific country
| Name | Required | Description | Default |
|---|---|---|---|
| countryCode | Yes | ISO-2 country code (e.g., US, DE, FR) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_infoARead-only
Get detailed information about a specific ransomware group
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Name of the ransomware group |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| parser | No | |
| captive | No | |
| profile | No | |
| countries | No | |
| locations | No | |
| description | No | |
| javascript_render | No |
TDQS
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.
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.
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.
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.
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.
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_victimsARead-only
Get all victims claimed by a specific ransomware group
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Name of the ransomware group |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_iocsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional IoC type filter, e.g. md5, sha256, ip, domain, email, btc, url. | |
| group | No | Ransomware group name (e.g. lockbit3, blackcat). Omit to list all groups that have IoCs. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_ttpsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Name of the ransomware group (e.g. lockbit3, blackcat, clop) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_chatARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Ransomware group name (e.g. lockbit3, blackcat). Omit to list all groups that have negotiation chats. | |
| chatId | No | Chat ID returned by calling this tool with just `group` set. Requires `group` to also be set. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_noteARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Ransomware group name (e.g. lockbit3, clop). Omit to list all groups that have ransom notes. | |
| noteName | No | Note identifier returned by calling this tool with just `group` set. Requires `group` to also be set. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_cyberattacksCRead-only
Get recently added cyberattacks
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of attacks to return (max 1000) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_victimsARead-only
Get the latest disclosed ransomware victims
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of victims to return (max 1000) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_victimsBRead-only
Get victims from a specific business sector
| Name | Required | Description | Default |
|---|---|---|---|
| sector | Yes | Business sector name | |
| countryCode | No | Optional ISO-2 country code to filter by country |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_dateARead-only
Get victims by specific year and month
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Year (e.g., 2024) | |
| month | Yes | Month (1-12) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_rulesARead-only
Get YARA rules associated with a ransomware group
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Name of the ransomware group |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | Raw YARA rule data for the ransomware group, as returned by the Ransomware.live API. The exact shape varies by group. |
TDQS
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.
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.
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.
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.
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.
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_victimsBRead-only
Search for victims by keyword
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return (max 1000) | |
| keyword | Yes | Keyword to search for in victim names |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
18 tool updates
v1.0.0- First observed
get_all_cyberattacks - First observed
get_all_groups - First observed
get_api_info - First observed
get_cert_contacts - First observed
get_country_attacks - First observed
get_country_victims - First observed
get_group_info - First observed
get_group_victims - First observed
get_iocs - First observed
get_mitre_ttps - First observed
get_negotiation_chat - First observed
get_ransom_note - First observed
get_recent_cyberattacks - First observed
get_recent_victims - First observed
get_sector_victims - First observed
get_victims_by_date - First observed
get_yara_rules - First observed
search_victims
TDQS
Scored across 18 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Hostinger API
MCP server for Riveter's enrichment, scraping, and monitoring API
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceMCP server for Huntress API integration1MIT
- MIT
- AlicenseNot gradedqualityDmaintenanceThe MCP server that keeps you informed by sending the notification on phone using ntfy.sh1,085 npm44Apache 2.0
- MIT