Skip to main content
Glama
Cgisclair29

Rapid7 Bulk Export MCP

by Cgisclair29

Rapid7 Bulk Export MCP

AI-анализ данных Rapid7 Command Platform с помощью MCP (Model Context Protocol) и AgentSkills.

Этот инструмент предоставляется на условиях "best effort" поддержки. Из-за уникального и постоянно меняющегося характера инструментов и рабочих процессов, которые могут использовать этот инструмент, мы не можем предоставить поддержку или руководство за пределами MCP Code и контента AgentSkill.

Что это?

Этот инструмент экспортирует данные из Rapid7 Command Platform через Rapid7 Bulk Export API и делает их доступными для запросов в GenAI и агентных рабочих процессах.

  • MCP-сервер: содержит инструменты для получения, обработки и запроса данных

  • Agent Skill / Kiro Power: предоставляет дополнительный контекст, знания о схеме и инструкции по использованию MCP-инструментов

  • База данных DuckDB: локальная файловая база данных для быстрых структурированных запросов

Related MCP server: Rapid7 Bulk Export MCP Server

Возможности

  • ИИ-анализ: используйте с Kiro, Claude Desktop или любым ИИ-ассистентом, совместимым с MCP

  • Загрузка данных по требованию: автоматически получайте и загружайте данные из Rapid7

  • Повторное использование экспорта: автоматически использует экспорт за тот же день, чтобы избежать лишних API-вызовов

  • Запросы на естественном языке: задавайте вопросы на простом английском

  • Выполнение SQL-запросов: выполняйте сложные SQL-запросы к данным об уязвимостях, активах и другим данным

  • Исследование схемы: узнавайте доступные поля данных

  • Статистика и аналитика: получайте мгновенные сводки и распределения

  • Безопасность: пользовательские запросы изолированы — доступ к файловой системе и сети отключен на уровне движка DuckDB

  • Поддержка Docker: запуск в виде контейнерного HTTP-сервиса для удаленных или общих развертываний

Локально и удаленно

Вы можете запустить MCP-сервер в двух режимах в зависимости от вашей настройки:

Локально (stdio) — ИИ-клиент запускает сервер как дочерний процесс и общается через stdin/stdout. Это вариант по умолчанию и самый простой. Сервер работает на вашей машине, база данных находится рядом с ним, и все остается локальным. Лучше всего для индивидуального использования на рабочей станции или ноутбуке.

Удаленно (Docker / потоковый HTTP) — сервер работает как контейнерный HTTP-сервис, предоставляющий единую конечную точку /mcp. Клиенты подключаются по сети через URL. Лучше всего для общих сред, командной работы или когда вы хотите, чтобы сервер работал на выделенной инфраструктуре отдельно от вашего ИИ-инструмента. Следует отметить, что данные будут доступны всем пользователям удаленного MCP, поэтому вы должны аутентифицировать и защитить конечную точку /mcp.

Оба режима используют одни и те же MCP-инструменты и средства контроля безопасности. Единственное различие — способ подключения клиента.

Быстрый старт

0. Получите ключ API Rapid7 и укажите регион

Прежде чем начать, вам понадобятся учетные данные из вашей учетной записи Rapid7 Insight Platform.

Создание ключа API:

Важно: Ключ API должен быть создан администратором платформы. Bulk Export API возвращает все данные об уязвимостях по всей платформе, поэтому требуется доступ уровня администратора.

  1. Войдите в Rapid7 Insight Platform как администратор платформы

  2. Перейдите в Administration → API Key Management

  3. Выберите тип ключа:

    • Organization Key (рекомендуется): полные права администратора (требуется роль Platform Admin)

    • User Key: наследует разрешения вашей учетной записи — должен быть создан администратором платформы, чтобы иметь достаточный доступ для массового экспорта

  4. Нажмите "Generate New Admin Key" (или "Generate New User Key", если используете учетную запись администратора платформы)

  5. Выберите свою организацию и дайте ключу имя

  6. Скопируйте ключ немедленно — вы не сможете увидеть его снова!

Определение региона:

Ваш регион определяет, какую конечную точку API использовать. Чтобы узнать свой регион:

  1. Перейдите на insight.rapid7.com и войдите в систему

  2. Найдите метку "Data Storage Region" в правом верхнем углу под именем вашей учетной записи

Для получения дополнительных сведений см.:

1. Настройте свой ИИ-инструмент

Выберите свой ИИ-инструмент ниже. Каждое руководство описывает установку MCP-сервера, добавление Agent Skill и проверку подключения.

Защита ключа API: избегайте хранения RAPID7_API_KEY в открытом виде на диске. Используйте менеджер секретов для внедрения ключа во время выполнения — например, 1Password CLI, Bitwarden CLI, связку ключей macOS, Windows Credential Manager или PowerShell SecretManagement. С 1Password вы можете задать "command": "op" и "args": ["run", "--", "rapid7-mcp-server"] со ссылками на секреты op:// в блоке env — ключ извлекается из вашего хранилища и никогда не записывается в конфигурационные файлы. Адаптируйте этот шаблон к любому используемому вами менеджеру паролей.

Установка MCP-сервера

  1. Откройте Claude Desktop и перейдите в Customize → Connectors

  2. Найдите "Rapid7 Bulk Export" в каталоге коннекторов

  3. Нажмите Install и укажите RAPID7_API_KEY и RAPID7_REGION при появлении запроса

Установка из каталога Connectors

Установка Agent Skill

  1. Перейдите в Customize -> Skills

  2. Нажмите (+)

  3. Создайте навык (Create Skill)

  4. Загрузите навык (Upload Skill)

  5. Загрузите последний zip-файл навыка из релиза справа

Установка agent skill

Проверка

  1. Попробуйте: /rapid7-bulk-export-analysis-expert Load the latest vulnerability data from Rapid7

Установка MCP-сервера

# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

Настройка

Создайте или отредактируйте .kiro/settings/mcp.json:

{
  "mcpServers": {
    "rapid7-bulk-export": {
      "command": "rapid7-mcp-server",
      "args": [],
      "env": {
        "RAPID7_API_KEY": "your-api-key-here",
        "RAPID7_REGION": "your-region"
      }
    }
  }
}

Установка Agent Skill

  1. Откройте панель Kiro Skills (Command Palette → "Kiro: Open Skills")

  2. Нажмите "Install from GitHub"

  3. Введите URL репозитория: https://github.com/rapid7/rapid7-bulk-export-mcp/rapid7-bulk-export-skill

Активируйте навык в чате с помощью #rapid7-bulk-export-skill.

Проверка

  1. Перезапустите или переподключите MCP-серверы (Command Palette → "MCP: Reconnect All Servers")

  2. Проверьте в панели MCP сервер "rapid7-bulk-export" (должен отображаться как "Connected")

  3. Попробуйте: #rapid7-bulk-export-skill Load the latest vulnerability data from Rapid7

Установка MCP-сервера

# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

Настройка

Используйте CLI Claude Code:

claude mcp add --transport stdio \
  --env RAPID7_API_KEY=your-api-key-here \
  --env RAPID7_REGION=your-region \
  rapid7-bulk-export \
  -- rapid7-mcp-server

Или отредактируйте вручную ~/.claude.json (пользовательская область) или .mcp.json (область проекта):

{
  "mcpServers": {
    "rapid7-bulk-export": {
      "command": "rapid7-mcp-server",
      "args": [],
      "env": {
        "RAPID7_API_KEY": "your-api-key-here",
        "RAPID7_REGION": "your-region"
      }
    }
  }
}

Используйте --scope user для доступа между проектами или --scope project для командного доступа.

Установка Agent Skill

# User-level (available in all projects)
mkdir -p ~/.claude/skills/rapid7-bulk-export
curl -sL https://raw.githubusercontent.com/rapid7/rapid7-bulk-export-mcp/main/rapid7-bulk-export-skill/SKILL.md \
  -o ~/.claude/skills/rapid7-bulk-export/SKILL.md

# Or project-level (only in current project)
mkdir -p .claude/skills/rapid7-bulk-export
curl -sL https://raw.githubusercontent.com/rapid7/rapid7-bulk-export-mcp/main/rapid7-bulk-export-skill/SKILL.md \
  -o .claude/skills/rapid7-bulk-export/SKILL.md

Или используйте npx skills для прямой установки:

npx skills install https://github.com/rapid7/rapid7-bulk-export-mcp

Claude Code автоматически обнаружит и будет использовать навык при необходимости.

Проверка

  1. Перезапустите Claude Code или перезагрузите окно

  2. Введите /mcp в чате, чтобы проверить статус сервера

  3. Убедитесь, что "rapid7-bulk-export" появился в списке

  4. Попробуйте: Load the latest vulnerability data from Rapid7

Установка MCP-сервера

# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

Настройка

Отредактируйте настройки MCP в VS Code:

  • Используйте Command Palette: "MCP: Edit Configuration"

  • Или отредактируйте вручную: .vscode/mcp.json (рабочая область) или пользовательские настройки

{
  "mcpServers": {
    "rapid7-bulk-export": {
      "command": "rapid7-mcp-server",
      "args": [],
      "env": {
        "RAPID7_API_KEY": "your-api-key-here",
        "RAPID7_REGION": "your-region"
      }
    }
  }
}

Установка Agent Skill

# Project-level (recommended, stored in repository)
mkdir -p .github/skills/rapid7-bulk-export
curl -sL https://raw.githubusercontent.com/rapid7/rapid7-bulk-export-mcp/main/rapid7-bulk-export-skill/SKILL.md \
  -o .github/skills/rapid7-bulk-export/SKILL.md

# Or user-level (available across all projects)
mkdir -p ~/.copilot/skills/rapid7-bulk-export
curl -sL https://raw.githubusercontent.com/rapid7/rapid7-bulk-export-mcp/main/rapid7-bulk-export-skill/SKILL.md \
  -o ~/.copilot/skills/rapid7-bulk-export/SKILL.md

Или используйте npx skills для прямой установки:

npx skills install https://github.com/rapid7/rapid7-bulk-export-mcp

Используйте навык как слэш-команду: /rapid7-bulk-export.

Проверка

  1. Перезагрузите окно VS Code

  2. Проверьте статус MCP в строке состояния или на панели вывода

  3. Попробуйте: Load the latest vulnerability data from Rapid7

Установка MCP-сервера

# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

Настройка

Добавьте сервер с помощью Codex CLI:

codex mcp add rapid7-bulk-export \
  --env RAPID7_API_KEY=your-api-key-here \
  --env RAPID7_REGION=your-region \
  -- rapid7-mcp-server

Или отредактируйте вручную ~/.codex/config.toml:

[mcp_servers.rapid7-bulk-export]
command = "rapid7-mcp-server"
args = []
enabled = true

[mcp_servers.rapid7-bulk-export.env]
RAPID7_API_KEY = "your-api-key-here"
RAPID7_REGION = "your-region"

Если вы используете переменные окружения из вашей оболочки вместо их жесткого кодирования:

[mcp_servers.rapid7-bulk-export]
command = "rapid7-mcp-server"
args = []
enabled = true
env_vars = ["RAPID7_API_KEY", "RAPID7_REGION"]

Проверка

  1. Выведите список настроенных серверов: codex mcp list

  2. Проверьте сведения о сервере: codex mcp get rapid7-bulk-export

  3. Попробуйте: Load the latest vulnerability data from Rapid7

Установка MCP-сервера

# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git

Настройка

Отредактируйте файл конфигурации MCP Antigravity:

  • macOS/Linux: ~/.gemini/antigravity/mcp_config.json

  • Windows: C:\Users\<USERNAME>\.gemini\antigravity\mcp_config.json

Вы также можете получить доступ к этому файлу через панель Antigravity Agent → "..." → MCP Servers → Manage MCP Servers → View raw config.

Добавьте следующее в mcp_config.json:

{
  "mcpServers": {
    "rapid7-bulk-export": {
      "command": "rapid7-mcp-server",
      "args": [],
      "env": {
        "RAPID7_API_KEY": "your-api-key-here",
        "RAPID7_REGION": "your-region"
      }
    }
  }
}

Проверка

  1. Перезапустите Antigravity, чтобы изменения вступили в силу

  2. Откройте панель MCP Servers (меню "..." → MCP Servers)

  3. Убедитесь, что "rapid7-bulk-export" отображается с доступными инструментами

  4. Попробуйте: Load the latest vulnerability data from Rapid7

Образ Docker

Используется минимальный базовый образ Red Hat UBI 10 Python 3.12 с предустановленным Python 3.12.13. Поддерживает работу в файловой системе только для чтения. Подписка Red Hat не требуется.

Сборка и запуск

Используя docker compose (рекомендуется):

RAPID7_API_KEY=your-key RAPID7_REGION=us docker compose up -d

Используя docker run:

# Build
docker build -t rapid7-bulk-export-mcp .

# Run with read-only filesystem
docker run -d \
  -p 8000:8000 \
  -e RAPID7_API_KEY=your-api-key-here \
  -e RAPID7_REGION=us \
  -e DATA_DIR=/data \
  -e TMPDIR=/tmp \
  -v rapid7-data:/data \
  --tmpfs /tmp \
  --read-only \
  --security-opt no-new-privileges:true \
  --name rapid7-bulk-export-mcp \
  rapid7-bulk-export-mcp

Настройка вашего MCP-клиента

Укажите любому MCP-совместимому клиенту HTTP-конечную точку:

{
  "mcpServers": {
    "rapid7-bulk-export": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Установка Agent Skill

Следуйте инструкциям по установке навыка для вашего конкретного ИИ-инструмента, описанным выше. Навык работает одинаково независимо от того, является ли MCP-сервер локальным или удаленным.

Проверка

  1. Убедитесь, что контейнер запущен: docker ps

  2. Проверьте конечную точку: curl http://localhost:8000/mcp

  3. Подключите свой ИИ-инструмент и попробуйте: Load the latest vulnerability data from Rapid7

2. Приступайте к анализу

Примечание: Первый экспорт занимает 1–5 минут в зависимости от размера организации. После завершения данные кэшируются, и последующие загрузки используют тот же экспорт. Вы всегда можете запросить обновление данных, чтобы получить последний набор.

Show me the top 10 critical vulnerabilities with known exploits
What's the severity distribution across my cloud assets?

Справочник инструментов

start_rapid7_export

Запускает новое задание экспорта на серверах Rapid7. Немедленно возвращает идентификатор экспорта. Поддерживает три типа экспорта: vulnerability, policy и remediation.

Start a vulnerability export from Rapid7

check_rapid7_export_status

Однократно опрашивает Rapid7 API для получения текущего статуса задания экспорта. Используйте после start_rapid7_export, чтобы узнать, когда данные будут готовы.

Check the status of export abc-123

download_rapid7_export

Загружает Parquet-файлы завершенного экспорта и загружает их в локальную базу данных DuckDB. На этом этапе данные становятся доступными для запросов.

Download and load export abc-123

load_rapid7_parquet

Загружает существующие Parquet-файлы непосредственно с диска (они должны находиться в ~/.rapid7_mcp/imports/). Полезно, если у вас уже есть экспортированные файлы и вы хотите пропустить API-вызов.

Load parquet files from ~/.rapid7_mcp/imports/my-export/

query_rapid7

Выполняет SQL по загруженным данным. После загрузки соединение блокируется — чтение и запись в файловую систему, а также доступ к сети отключаются на уровне движка DuckDB.

Доступные таблицы: assets, vulnerabilities, policies, vulnerability_remediation.

Run: SELECT severity, COUNT(*) FROM vulnerabilities GROUP BY severity

get_rapid7_schema

Возвращает имена столбцов и типы данных для всех загруженных таблиц. Используйте это, чтобы понять, какие поля доступны перед написанием запросов.

Show me the schema of the loaded data

get_rapid7_stats

Возвращает сводную статистику — количество строк, распределение по уровням серьезности, диапазоны оценок CVSS, количество эксплойтов и разбивку по облачным провайдерам.

Give me an overview of the vulnerability data

list_rapid7_exports

Показывает историю последних экспортов с идентификаторами, датами, статусами и количеством строк. Полезно для поиска предыдущего экспорта для повторной загрузки.

List my recent exports

purge_rapid7_data

Безвозвратно удаляет с диска как базу данных уязвимостей, так и базу данных отслеживания экспортов. Используйте, когда закончите анализ или перед передачей компьютера другому человеку.

Purge all local Rapid7 data

Архитектура

graph TB
    subgraph "AI Layer"
        LLM[LLM/AI Assistant<br/>Copilot, Kiro, Claude Desktop, etc.]
    end

    subgraph "Rapid7 Bulk Export MCP Tool"
        MCP[MCP Server<br/>rapid7-bulk-export]
        Skill[Agent Skill / Power<br/>rapid7-bulk-export-skill]
    end

    subgraph "Data Layer"
        DB[(DuckDB<br/>rapid7_bulk_export.db)]
        Tracker[(Export Tracker<br/>rapid7_bulk_export_tracking.db)]
    end

    subgraph "Rapid7 API"
        R7[Rapid7 Bulk Export API<br/>/export/graphql ]
    end

    LLM <-->|Model Context Protocol| MCP
    LLM -.->|Enhanced Context| Skill
    MCP -->|SQL Queries| DB
    MCP -->|Track Exports| Tracker
    MCP -->|Fetch Data| R7
    R7 -->|Parquet Files| MCP
    MCP -->|Load Data| DB

    style LLM fill:#e1f5ff
    style MCP fill:#fff4e1
    style Skill fill:#f0e1ff
    style DB fill:#e8f5e9
    style Tracker fill:#e8f5e9
    style R7 fill:#ffe1e1

Разработка

Изменения в AgentSkill и MCP могут быть сделаны локально, чтобы адаптировать их под вашу среду — приветствуются ваши доработки в этом репозитории.

Клонирование и установка

git clone https://github.com/rapid7/rapid7-bulk-export-mcp.git
cd rapid7-bulk-export-mcp
uv sync

Настройка для разработки

Создайте или отредактируйте .kiro/settings/mcp.json:

{
  "mcpServers": {
    "rapid7-bulk-export": {
      "command": "/absolute/path/to/rapid7-bulk-export-mcp/.venv/bin/rapid7-mcp-server",
      "args": [],
      "env": {
        "RAPID7_API_KEY": "your-api-key-here",
        "RAPID7_REGION": "your-region",
        "DATA_DIR": "/Users/you/.rapid7-mcp"
      }
    }
  }
}

Примечание: Направляйте command непосредственно на точку входа venv, а не используйте uv run с cwd. Claude Desktop не гарантирует рабочую директорию при запуске MCP-серверов, поэтому uv run может разрешиться в кэшированную или системную версию пакета вместо вашего локального исходного кода.

Запуск тестов

uv run pytest

Переменные окружения

Переменная

Обязательная

По умолчанию

Описание

RAPID7_API_KEY

Да

—

Ключ API Rapid7 InsightVM

RAPID7_REGION

Да

us

Регион API: us, us2, us3, eu, ca, au, ap

DATA_DIR

Нет

~/.rapid7_mcp

Каталог для файлов базы данных; должен быть доступен для записи. Ручные импорты parquet должны размещаться в $DATA_DIR/imports/

MCP_TRANSPORT

Нет

stdio

Транспортный протокол: stdio или http

MCP_HOST

Нет

0.0.0.0

HTTP-адрес привязки (только когда MCP_TRANSPORT=http)

MCP_PORT

Нет

8000

HTTP-порт (только когда MCP_TRANSPORT=http)

Available Tools

9 tools
check_rapid7_export_statusCheck Rapid7 Export StatusA
Read-onlyIdempotent

Check the current status of a Rapid7 export job.

This is a fast, non-blocking call that queries the Rapid7 API once and returns the current status. Does NOT poll or wait.

ParametersJSON Schema
NameRequiredDescriptionDefault
export_idYesThe export ID returned by start_rapid7_export.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful context beyond annotations by specifying it is a fast, non-blocking call that queries the API once and does not poll or wait, which clarifies the operational behavior.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the purpose and followed by the key non-polling behavior. Every word earns its place and there is no redundant content.

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

Completeness5/5

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

The tool is simple: one parameter, full schema coverage, rich annotations, and an output schema present. The description adds the crucial behavioral guarantee of non-polling. Nothing material is missing for an agent to select and invoke this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the sole parameter export_id is already fully documented in the schema. The tool description does not add additional parameter meaning, but the baseline of 3 is appropriate when the schema carries the full load.

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

Purpose5/5

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

The description states a specific verb and resource: 'Check the current status of a Rapid7 export job.' It clearly differentiates itself from sibling tools by emphasizing this is a status check and by noting 'Does NOT poll or wait,' which distinguishes it from any waiting/polling or export-starting workflow.

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

Usage Guidelines3/5

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

The description implies when to use this tool: when you need the current status without blocking or waiting. However, it does not explicitly name alternatives or state conditions for when not to use it, such as 'if you need to wait for completion, use start_rapid7_export' or 'use download_rapid7_export when ready.'

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

download_rapid7_exportDownload Rapid7 ExportA
Idempotent

Download a completed Rapid7 export and load into the database.

Call this after check_rapid7_export_status confirms the export is COMPLETE. Downloads the Parquet files and loads them into the local DuckDB database for querying.

ParametersJSON Schema
NameRequiredDescriptionDefault
export_idYesThe export ID of a completed export.
export_typeNoType of export. One of "vulnerability", "policy", or "remediation".vulnerability

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

The description discloses that this tool downloads Parquet files and loads them into the local DuckDB database for querying, which adds side-effect context beyond the annotations. It also states the completion prerequisite. It does not detail overwrite behavior or failure handling, but idempotentHint and destructiveHint already cover safety expectations.

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

Conciseness4/5

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

The description is short and front-loaded with the core purpose. There is mild redundancy between the first sentence and the final sentence, both saying the export is loaded into a database, but overall every sentence carries useful information.

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

Completeness4/5

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

The description covers the key invocation context: call after status is COMPLETE, download Parquet files, and load into DuckDB for querying. With a complete input schema and an output schema present, an agent has enough information to invoke it correctly. The only notable gap is the relationship to load_rapid7_parquet.

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 fully documents both parameters with clear descriptions, so the baseline is 3. The description adds no extra parameter-level meaning beyond restating 'completed export,' which the schema already includes.

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 and resource: 'Download a completed Rapid7 export' and 'load into the database.' It is distinct from siblings like start_rapid7_export or check_rapid7_export_status, but it does not explicitly differentiate itself from load_rapid7_parquet, since both involve loading Parquet into DuckDB.

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

Usage Guidelines4/5

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

The description explicitly says to call this after check_rapid7_export_status confirms the export is COMPLETE, giving clear timing guidance. It does not mention when not to use it or point to alternatives such as load_rapid7_parquet, but the prerequisite is concrete and actionable.

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

get_rapid7_schemaGet Rapid7 SchemaA
Read-onlyIdempotent

Get the schema of all database tables.

Returns column names and data types for all existing tables: assets, vulnerabilities, policies, and vulnerability_remediation. Tables that have not been loaded yet are omitted.

Use this to understand what data is available before writing queries.

Returns: Table schemas as formatted JSON, keyed by table name

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds meaningful behavior beyond annotations: tables not yet loaded are omitted, and schemas are returned as formatted JSON keyed by table name. 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?

The description is compact, well-structured, and front-loaded with the core action. Every sentence adds useful information: scope, included tables, omission behavior, and usage intent. No filler or redundancy.

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

Completeness5/5

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

For a zero-parameter, read-only schema tool with an output schema and rich annotations, the description covers everything needed: what it returns, which tables, the omission nuance, and how to use it. Nothing critical is missing.

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

Parameters4/5

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

The tool has zero parameters, so the description does not need to document parameter behavior. The baseline of 4 applies because the schema already fully covers the empty parameter set.

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

Purpose5/5

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

The description names a specific verb and resource: 'Get the schema of all database tables,' then enumerates exactly which tables are included. This makes the tool's scope unambiguous and distinguishes it from query/stats/export tools.

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

Usage Guidelines4/5

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

It explicitly tells the agent when to use the tool: 'Use this to understand what data is available before writing queries.' It does not discuss exclusions or compare against alternatives, but given the sibling set, no other tool claims schema discovery, so the guidance is adequate.

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

get_rapid7_statsGet Rapid7 StatisticsA
Read-onlyIdempotent

Get summary statistics for all database tables.

Returns row counts and relevant distributions for all existing tables: assets, vulnerabilities, policies, and vulnerability_remediation. Tables that have not been loaded yet are omitted.

Useful for getting an overview of the data across all loaded datasets.

Returns: Summary statistics as formatted JSON, keyed by table name

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark it readOnly, idempotent, and non-destructive. The description adds meaningful behavior beyond those hints: it returns row counts plus distributions, omits tables not yet loaded, and returns formatted JSON keyed by table name. There is no contradiction with the annotations.

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

Conciseness4/5

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

The description is short and front-loaded with the core purpose and return shape. A small redundancy exists between 'Returns row counts...' and the later 'Returns: Summary statistics as formatted JSON...' line, but the latter adds keying detail so the duplication is minor.

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 no-argument read-only tool with annotations and an output schema available, the description is complete: it identifies the covered tables, the omission behavior for unloaded tables, and the return format. No critical call-time information is missing.

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

Parameters4/5

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

The input schema has no parameters, so there is nothing to document beyond the baseline for zero-parameter tools. The description's statement of what the stats cover is the only relevant semantic context and it is adequate.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Get summary statistics for all database tables') and then enumerates the exact outputs ('row counts and relevant distributions') and the tables involved (assets, vulnerabilities, policies, vulnerability_remediation). This makes it clearly distinct from siblings like query_rapid7 or get_rapid7_schema, which are for detailed queries or schema inspection.

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

Usage Guidelines4/5

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

The description gives an explicit use context: 'Useful for getting an overview of the data across all loaded datasets.' It does not name alternatives or state when not to use it, so it stops short of a full routing rule, but the intended scenario is clear.

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

list_rapid7_exportsList Rapid7 ExportsA
Read-onlyIdempotent

List recent Rapid7 exports tracked in the system.

Shows export metadata including export ID, date, status, type, and row counts. Useful for understanding what exports are available for reuse.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of exports to return (default: 10)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context: it lists only 'recent' exports, scopes them to 'tracked in the system', and specifies the metadata fields returned. This goes beyond the structured annotations without contradicting 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 two short sentences with no filler. The primary action is front-loaded, and the second sentence adds valuable detail about output contents and intended use. Every sentence 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 simple read-only listing tool with one optional parameter, a full output schema, and safety annotations already present, the description provides sufficient context. It explains what the tool returns, what the results represent, and why an agent would call it. Nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with the limit parameter already documented including its default. The description adds no additional parameter semantics, but the schema fully covers the single optional parameter. Baseline 3 is appropriate.

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

Purpose5/5

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

Description uses a specific verb ('List') and identifies the exact resource ('Rapid7 exports tracked in the system'). It names the metadata fields returned, which distinguishes this from sibling tools like start_rapid7_export or download_rapid7_export. The phrase 'available for reuse' clarifies its role as an inventory/reuse tool.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: to see what exports exist and what can be reused. It does not explicitly state when not to use it or name alternatives, but the intended use case is clear enough for a simple listing tool.

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

load_rapid7_parquetLoad Rapid7 Parquet FileA
Idempotent

Load vulnerability data from existing Parquet file(s).

Use this if you already have Parquet files downloaded and want to skip the export process. This is much faster than running a full export.

ParametersJSON Schema
NameRequiredDescriptionDefault
parquet_pathYesPath to a Parquet file or directory containing Parquet files

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 establish the safety profile (idempotentHint=true, destructiveHint=false, readOnlyHint=false), and the description's 'load' claim is consistent with those. The description adds a performance trait ('much faster than running a full export') and the workflow context of skipping exports. However, it doesn't disclose what happens when data is loaded into a non-empty store (overwrite vs. append), which is the key behavioral unknown for a load tool.

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

Conciseness5/5

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

Three sentences with no filler: the purpose is front-loaded, the usage condition follows, and the performance rationale comes last. Each sentence earns its place, and the whole is well under any reasonable length limit.

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

Completeness4/5

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

For a single-parameter tool with 100% schema coverage, an output schema, and annotations covering idempotency and destructiveness, the description is nearly complete. The only gap is conflict semantics with pre-existing data (does loading replace or merge?), which is a minor omission for an idempotent loader.

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

Parameters3/5

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

Schema coverage is 100% — parquet_path's description states it accepts a file or directory, so the schema already carries the full semantic load. The description's phrase 'Parquet file(s)' reinforces the directory case but adds no new meaning beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: 'Load vulnerability data from existing Parquet file(s).' This is unambiguous among the siblings, which are all export-management or query tools (start_rapid7_export, download_rapid7_export, query_rapid7, etc.), so there is no confusion about what this tool does.

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

Usage Guidelines4/5

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

The description gives an explicit trigger condition: use this when you already have Parquet files downloaded and want to skip the export process. It contrasts this path with running a full export, letting an agent infer that the export siblings (start_rapid7_export, download_rapid7_export) are the alternative. It stops short of naming a specific sibling tool, but the condition is clear enough to route correctly.

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

purge_rapid7_dataPurge Rapid7 DataA
DestructiveIdempotent

Permanently delete all local Rapid7 data and tracking databases.

This removes:

  • The main vulnerability database (rapid7_bulk_export.db)

  • The export tracking database (rapid7_bulk_export_tracking.db)

  • Any associated WAL files

Use this when you are done with your analysis session, before handing off a machine, or to free disk space. After purging, you will need to run a new export to query data again.

Returns: Confirmation of purged data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description reinforces and enriches this by naming the exact databases and WAL files that will be destroyed and noting that the action is 'permanent.' It clearly discloses the irreversible destructive behavior without contradicting the 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?

The description is tightly organized with a one-line summary, a bulleted list of affected files, a clear usage statement, and a return note. Every sentence adds useful information and there is no redundancy or filler.

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

Completeness5/5

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

For a zero-parameter destructive tool with annotations covering destructiveness and idempotency, the description is complete: it names exactly what is deleted, says when to use it, warns about the need to re-export afterward, and states the return value. No critical context is missing.

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

Parameters4/5

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

The tool has zero parameters and the schema is empty, so there is nothing to document at the parameter level. The description instead clarifies that the operation acts on all local Rapid7 data, which is the only relevant 'scope' information an agent needs. Baseline 4 is appropriate for a no-parameter tool.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Permanently delete all local Rapid7 data and tracking databases.' It goes on to enumerate the exact files removed (rapid7_bulk_export.db, rapid7_bulk_export_tracking.db, WAL files), which clearly distinguishes it from the read/query/export sibling tools.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool: 'when you are done with your analysis session, before handing off a machine, or to free disk space.' It also explains the consequence—'After purging, you will need to run a new export to query data again'—which tells the agent the practical impact and 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.

query_rapid7Query Rapid7 DataA
Read-onlyIdempotent

Execute a SQL query against the Rapid7 database.

The database contains the following tables loaded from Rapid7 InsightVM Bulk Export API Parquet files:

assets — Asset inventory data: Key fields: orgId, assetId, agentId, hostName, ip, mac, osFamily, osProduct, osVersion, osDescription, riskScore, sites, assetGroups, tags, awsInstanceId, azureResourceId, gcpObjectId

vulnerabilities — Combined asset + vulnerability data: Key fields: orgId, assetId, vulnId, checkId, port, protocol, title, description, severity, severityRank, cvssScore, cvssV3Score, cvssV3Severity, hasExploits, epssscore, epsspercentile, riskScoreV2_0, cves, firstFoundTimestamp, reintroducedTimestamp, dateAdded, dateModified, datePublished, pciCompliant, pciSeverity

policies — Policy compliance results (agent and scan based): Key fields: orgId, assetId, benchmarkNaturalId, profileNaturalId, benchmarkVersion, ruleNaturalId, ruleTitle, finalStatus, proof, lastAssessmentTimestamp, benchmarkTitle, profileTitle, publisher, fixTexts, rationales, source ('agent' or 'scan')

vulnerability_remediation — Vulnerability remediation tracking: Key fields: orgId, assetId, cveId, vulnId, proof, firstFoundTimestamp, reintroducedTimestamp, lastDetected, lastRemoved, title, description, cvssV2Score, cvssV3Score, cvssV2Severity, cvssV3Severity, cvssV2AttackVector, cvssV3AttackVector, riskScoreV2_0, datePublished, dateAdded, dateModified, epssscore, epsspercentile

Use this tool to query any of the above tables. You can filter, aggregate, join across tables, or perform any SQL-based analysis supported by DuckDB.

Examples:

  • SELECT * FROM vulnerabilities WHERE severity = 'Critical' LIMIT 10

  • SELECT severity, COUNT(*) FROM vulnerabilities GROUP BY severity

  • SELECT * FROM policies WHERE finalStatus = 'fail' LIMIT 10

  • SELECT cveId, COUNT(*) FROM vulnerability_remediation GROUP BY cveId

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL query to execute against the database

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context: the data comes from Rapid7 InsightVM Bulk Export Parquet files and SQL is executed with DuckDB support. This gives the agent expectations about the underlying engine and data source without contradicting the annotations.

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 opening sentence is direct, and the table-by-table field lists are useful rather than filler for a SQL tool. The examples are compact and illustrative. It is long, but the length is mostly justified by the need to document the data model for query authoring.

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

Completeness4/5

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

For a complex SQL-query tool, the description covers the available tables, representative fields, dialect, and example queries. An output schema exists, so return-value documentation is not the description's job. It does not mention result limits, timeouts, or error behavior, but those are minor given the annotations and the tool's read-only nature.

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% for the single sql parameter, so the baseline is 3. The description adds real value by specifying DuckDB as the SQL dialect, listing queryable tables with key columns, and providing representative examples. This materially reduces ambiguity about what kinds of queries are valid.

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

Purpose5/5

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

States a specific verb and resource ('Execute a SQL query against the Rapid7 database') and goes beyond the name by enumerating the four available tables and their key fields. This clearly distinguishes it from sibling lifecycle tools like start_rapid7_export, download_rapid7_export, or purge_rapid7_data.

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?

Explicitly says 'Use this tool to query any of the above tables' and gives concrete SQL examples, establishing clear context for when it applies. It does not name exclusions or alternatives, but the sibling set is self-evident enough that an agent can see this is the data-querying tool versus export/schema/stats helpers.

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

start_rapid7_exportStart Rapid7 ExportA
Idempotent

Start a new Rapid7 export job (non-blocking).

This is a fast, non-blocking call that creates an export job on the Rapid7 platform and returns the export ID immediately. The export will process in the background on Rapid7's servers (typically 3-5 minutes).

Use check_rapid7_export_status(export_id) to monitor progress, then download_rapid7_export(export_id, export_type="...") once it completes.

If an export from today already exists, returns that export's ID instead of creating a duplicate.

For remediation exports, the Rapid7 API limits each request to 31 days. If the date range exceeds 31 days, this tool automatically splits it into multiple 31-day chunks and kicks off an export for each chunk.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoEnd date in YYYY-MM-DD format (only for remediation exports). Defaults to today if not specified.
start_dateNoStart date in YYYY-MM-DD format (only for remediation exports). Defaults to 30 days ago if not specified.
export_typeNoType of export to create. One of "vulnerability", "policy", or "remediation".vulnerability

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: non-blocking background processing, typical 3-5 minute completion, automatic reuse of a same-day export ID, and automatic splitting of >31-day remediation exports. These are exactly the kind of runtime behaviors an agent needs to know and cannot infer from the schema or annotations.

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 well-structured and front-loaded with the essential non-blocking behavior, followed by downstream tool usage and edge-case behavior. It is slightly repetitive ('non-blocking' appears twice; returning the export ID is stated more than once), but every block of information serves a distinct 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 tool with three optional parameters, an output schema, and annotations available, the description is fully complete. It explains what the tool returns, what happens in the background, how long it typically takes, how to check/download the result, and how edge cases like duplicates and long date ranges are handled.

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

Parameters4/5

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

The input schema already covers parameter types, defaults, and enum values at 100%, so the baseline is 3. The description adds extra value by clarifying that date parameters are remediation-focused and by explaining the 31-day chunking behavior, which directly affects how start_date and end_date should be provided.

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

Purpose5/5

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

The description opens with 'Start a new Rapid7 export job (non-blocking)', giving a specific verb and resource. It clearly separates this tool from siblings like check_rapid7_export_status, download_rapid7_export, and list_rapid7_exports by focusing on job creation and immediate ID return.

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

Usage Guidelines4/5

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

The description gives a clear workflow: call this first, then check_rapid7_export_status, then download_rapid7_export. It also explains the existing-export deduplication behavior, which helps the agent decide whether a new call is needed. It does not explicitly name alternatives like list_rapid7_exports for checking existing exports, so it falls just short of a 5.

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

Tool Schema Changelog

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

  1. 9 tool updatesv0.5.2
    • First observedcheck_rapid7_export_status
    • First observeddownload_rapid7_export
    • First observedget_rapid7_schema
    • First observedget_rapid7_stats
    • First observedlist_rapid7_exports
    • First observedload_rapid7_parquet
    • First observedpurge_rapid7_data
    • First observedquery_rapid7
    • First observedstart_rapid7_export

TDQS

A4.4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool covers a distinct phase of the export/query lifecycle: starting, checking, downloading, loading, listing, querying, inspecting, and purging. While list_rapid7_exports and check_rapid7_export_status both surface status information, their purposes are clearly separated and their descriptions remove ambiguity.

Naming Consistency5/5

Tool names consistently follow a verb_rapid7_object pattern, such as start_rapid7_export, download_rapid7_export, and get_rapid7_schema. Even query_rapid7 fits the pattern by treating Rapid7 as the object, and pluralization is used sensibly for list_rapid7_exports.

Tool Count5/5

Nine tools is well-scoped for the server's purpose: managing Rapid7 exports, loading data, and querying the local database. Each tool earns its place and there is no redundant bloat.

Completeness5/5

The tool set covers the complete export-to-analysis lifecycle: start an export, check status, download it, load existing Parquet files, list available exports, inspect schema and stats, query the data, and purge everything when done. No critical workflow dead-ends are apparent.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides conversational access to a local CVE (Common Vulnerabilities and Exposures) database, enabling natural language queries to search vulnerabilities, retrieve detailed CVE information, and view security statistics.
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI-powered analysis of Rapid7 vulnerability and asset data by exporting via the Bulk Export API and making it queryable through natural language or SQL in MCP-compatible tools.
    9
    33
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects AI assistants to HackerOne to pull bug bounty history, program scopes, and report details into a local SQLite database, exposing tools for searching, analyzing, and generating attack briefings using both personal and public disclosed reports.
    358
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A unified MCP server for Rapid7's security platform, exposing InsightVM (vulnerability management), InsightIDR (SIEM/investigations), and Metasploit Pro (pentest telemetry) as tools for Claude, Cursor, and any MCP-compatible LLM client.
    6
    MIT