94 live tests across 22 tools · 5 parallel agents · 2026-02-07
Test data: Google (AS15169), Cloudflare (AS13335), Level3 (AS3356), HE (AS6939), bogon 192.0.2.0/24
Executive Summary
94
Total Tests
88
Passed
4
Warnings
2
Failed
93.6%
Pass Rate
22
Tools Tested
Agent A: RIPE Stat Core
Tests22
Pass22
Warn0
Fail0
Agent B: RIPE Stat Security
Tests20
Pass19
Warn1
Fail0
Agent C: Monocle
Tests18
Pass17
Warn1
Fail0
Agent D: Infrastructure
Tests22
Pass19
Warn1
Fail2
Agent E: Resilience + Cross-tool
Tests12
Pass11
Warn1
Fail0
Verdict: The MCP server is production-ready. All 22 tools function correctly for their primary use cases.
No P0 (crash/data corruption) or P1 (missing critical validation) issues found.
The 2 FAILs are from the Globalping API rejecting bogon target addresses with a generic error — an upstream API behavior, not a server bug.
All 6 identified issues are P2 (usability) or P3 (cosmetic). Previous P0/P1 fixes from the earlier campaign are confirmed holding.
Issues Found
0 P0 · 0 P1 · 4 P2 · 2 P3 — sorted by severity
P2get_as_upstreams (Test C-08)
Non-existent ASN 9999999 returns "may be transit-free (Tier 1)" which is misleading. The tool cannot distinguish between an actual Tier 1 network and an ASN that simply has no data.
Recommendation: Detect zero data across all relationship types and return "No data found for ASN — may not exist or have no visible routes" instead of implying Tier 1 status.
Bogon/TEST-NET addresses (192.0.2.1) are rejected by the Globalping API with a generic "Parameter validation failed" error. The MCP server passes this through without additional context.
Recommendation: Intercept known bogon ranges (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24) and return a user-friendly message: "Target is in a documentation/test range (RFC 5737) and cannot be probed."
P2get_rpki_status (Test B-04)
Returns "UNKNOWN" for prefixes with no ROA, but the tool docstring documents the status as "not-found". The functionality is correct but the terminology is inconsistent with documentation.
Recommendation: Align the returned status string with the documented value, or update the documentation to match the actual output.
Peer count terminology is ambiguous. get_as_peers returns 475 peers for AS15169, while get_as_connectivity_summary shows only 5 in the "Peers" section (it's showing top-5 samples, but the section header could imply that's the total).
Recommendation: In get_as_connectivity_summary, clarify that the "Peers" section shows top samples from a larger set, e.g., "Peers (475 total, showing top 5):"
Error responses for invalid input expose raw RIPE Stat API URLs in the error message (e.g., "400 Bad Request from https://stat.ripe.net/data/...").
Recommendation: Wrap API errors to provide a cleaner message like "Invalid prefix format" without exposing the backend URL.
P3get_network_contacts (Test D-20)
Google AS15169 returns no public contacts (only website). While this is accurate PeeringDB data, the tool could note that some large networks intentionally limit public contact info.
Recommendation: When contacts are empty for well-known ASNs, add a note: "This network does not publish contact details on PeeringDB. Try their website or abuse contact from WHOIS."
Agent A: RIPE Stat Core (22 tests)
22 PASS0 WARN0 FAIL
search_asn (4 tests)
ID
Type
Input
Status
Result
A-01
Happy path
query="Google"
PASS
Found 26 ASNs, AS15169 included
A-02
Happy path
query="Cloudflare"
PASS
Found 10 ASNs, AS13335 included
A-03
Edge case
query="xyznonexistent12345"
PASS
No ASNs found, graceful message
A-04
Validation
query=""
PASS
Rejected: "Please provide a non-empty search query"
lookup_prefix (6 tests)
ID
Type
Input
Status
Result
A-05
Happy path
prefix="8.8.8.0/24"
PASS
Origin AS15169, 359 collectors, 276 unique paths
A-06
Happy path
prefix="1.1.1.0/24"
PASS
Origin AS13335, 360 collectors, 271 paths
A-07
Edge case
prefix="192.0.2.0/24"
PASS
"No routes found" as expected
A-08
Validation
prefix="8.8.8.0"
PASS
Rejected with CIDR notation error
A-09
Validation
prefix="not-a-prefix"
PASS
Rejected with CIDR notation error
A-10
Edge case
prefix="2001:4860:4860::/48"
PASS
IPv6 handled, no routes (not announced as aggregate)
get_asn_announcements (5 tests)
ID
Type
Input
Status
Result
A-11
Happy path
asn=15169
PASS
1252 prefixes (1106 IPv4, 146 IPv6)
A-12
Happy path
asn=13335
PASS
5618 prefixes (2461 IPv4, 3157 IPv6)
A-13
Edge case
asn=9999999
PASS
"Not announcing any prefixes, or ASN does not exist"
A-14
Happy path
asn=15169, address_family=6
PASS
Correctly filtered to IPv6 only
A-15
Happy path
asn=15169, address_family=4
PASS
Correctly filtered to IPv4 only
get_routing_history (4 tests)
ID
Type
Input
Status
Result
A-16
Happy path
resource="8.8.8.0/24", 2025-01-01..01-31
PASS
Routing data with AS15169 and AS3356 origins
A-17
Edge case
resource="192.0.2.0/24"
PASS
"No routing history found for this period"
A-18
Validation
start > end (reversed dates)
PASS
Rejected: "start_date is after end_date. Please swap them"
A-19
Edge case
resource="AS15169"
PASS
ASN resource works, returns prefix routing history
Full workflow: search by name, get ASN, then retrieve details. Seamless.
Methodology
Test Architecture
5 parallel background agents ran live MCP tool calls against the bgp-explorer server. Each agent operated independently, testing its category of tools sequentially to avoid rate limiting.
Test Data
Network
ASN
Prefix
Role
Google
15169
8.8.8.0/24
Primary happy path (RPKI valid)
Cloudflare
13335
1.1.1.0/24
Secondary happy path (RPKI valid)
Level3/Lumen
3356
—
Tier 1 transit provider
Hurricane Electric
6939
—
Transit-free, massive peering
Non-existent
9999999
—
Error handling validation
Private ASN
64512
—
Edge case: private range
Bogon (RFC 5737)
—
192.0.2.0/24
Documentation prefix, not routed
Severity Levels
Level
Criteria
Found
P0
Crash, data corruption, or incorrect data returned