MCP Server for the GreyNoise Enterprise API providing access to IP intelligence, vulnerability data, tags, CVEs, GNQL queries, and session data.
The GreyNoise MCP server presents 48 tools with generally consistent naming conventions and tool definitions. All tools follow verb_noun patterns (get_, search_, list_, create_, update_, delete_). Input schemas are defined using Zod in TypeScript with proper type annotations. However, there are significant gaps in parameter descriptions, output schema documentation, and comprehensive error handling guidance. The server uses a structured tool definition system (defineTool wrapper) that enforces consistent annotation patterns, but many tools rely on inferred schema completeness rather than explicit documentation. Schema quality is uneven, some tools have well-typed parameters, but many lack detailed constraint documentation within parameter descriptions. Error handling is present (tool-errors.ts maps HTTP status codes to user-friendly messages) but lacks recovery guidance for common failure modes. Output schemas are not explicitly documented for most tools, forcing LLMs to infer structure from API responses.
Analyze activity for tags matching a query
Look up Business Service Intelligence for multiple IPs
Get Business Service Intelligence category statistics
Get Business Service Intelligence company statistics
Look up Business Service Intelligence for an IP
Get Business Service Intelligence trust level statistics
Look up an IP address in callback intelligence
Missing output schema documentation. Tools like get-tag-list, get-trending-vulnerabilities, and session-fields have no documented return types. LLMs must infer structure from API responses, increasing parsing errors and token waste. [pattern:tool]
Parameter descriptions lack specificity. Tools like get-tag-activity and gnql-query accept 'days' and 'size' parameters with only generic descriptions ('Number of days', 'Number of results'). Missing range constraints (e.g., 1-365 days, 1-100 results), format hints (ISO 8601), and guidance on when to use them. [pattern:constrained-input]
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2025-06-18+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
Get overview of callback intelligence
Create a new alert
Create a new blocklist
Delete an alert
Delete a blocklist
Disable an alert
Enable an alert
Export callback intelligence IPs
Export session data
Export PCAP files for multiple sessions matching query criteria
Get details for a specific alert
Get details for a specific blocklist
Get IPs in a blocklist
Get detailed information about a CVE
Get a specific session by ID
Download PCAP file for a specific session
Get activity data for a specific GreyNoise tag
Get detailed information about a specific GreyNoise tag
Get list of all GreyNoise tags
Get trending vulnerabilities from GreyNoise
Execute a GNQL metadata-only query without raw scan data
Execute a GNQL query with full details
Get statistics for a GNQL query
Get timeseries data for a GNQL query
Get timeseries statistics for a GNQL query
List all alerts
List all blocklists
List callback intelligence IPs
Look up comprehensive context for an IP address
Check multiple IP addresses at once
Quick check for an IP address classification
Search for sessions matching query criteria
Search GreyNoise tags by query string
Get session connections between fields
Get counts of sessions by field
Get available fields for session queries
Get timeseries of session activity
Get unique values for a session field
Test an alert webhook
Update an existing alert
Update an existing blocklist
Error recovery guidance insufficient. Error handler (tool-errors.ts) maps HTTP status codes to messages, but lacks actionable recovery steps. For example, '403: Not entitled' does not suggest alternative endpoints or how to request capability upgrades. [pattern:recovery-guide]
No confirmation mechanism for destructive operations. delete-blocklist and delete-alert modify state irreversibly but do not offer a dry-run, preview, or confirmation step to prevent accidental data loss. [pattern:confirmation-request]
Pagination support unclear. Tools like list-blocklists and list-alerts do not explicitly document pagination parameters or result limits. Without limit and offset/cursor support, large result sets risk context window overflow. [pattern:paginated-result]
Batch operation variants missing. Multi-IP tools exist (multi-ip-check, bsi-bulk-lookup), but many single-resource operations lack array variants. Creating multiple alerts requires N separate calls instead of one batch create-alerts. [pattern:tool]
Inconsistent parameter naming across related tools. search-tags uses 'query', gnql-query uses 'query', but create-blocklist and create-alert also use 'query'. While consistent, the semantic meaning differs (free-text search vs GNQL query vs webhook query) and is not disambiguated in descriptions. [pattern:tool]
Tool descriptions are brief and lack WHEN context. Most descriptions state WHAT the tool does but not WHEN to use it or HOW it differs from similar tools. For example, quick-check-ip vs lookup-ip-context both check IPs but descriptions do not clarify which to use first. [pattern:tool-description]