https://github.com/steelcutoatmeal/net-mcp
· scanned 2026-06-16 00:21 UTC (2 months, 2 weeks ago)
8 raw signals (0 security + 8 graph)
Last scanned 2 months, 2 weeks ago · v1 · 8 actionable findings from 1 signal source. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 272 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
test_validate_host_accepts_normal_hosts |
software | healthy | tests/test_local.py:12 |
test_validate_host_rejects_leading_dash |
software | healthy | tests/test_local.py:19 |
test_validate_host_rejects_leading_slash |
software | healthy | tests/test_local.py:27 |
test_validate_host_rejects_shell_metacharacters |
software | healthy | tests/test_local.py:32 |
test_validate_host_rejects_empty_and_too_long |
software | healthy | tests/test_local.py:38 |
test_validate_port_range |
software | healthy | tests/test_local.py:45 |
test_disabled_result_shape |
software | healthy | tests/test_local.py:55 |
__init__ |
software | healthy | tests/test_local.py:63 |
test_nmap_disabled_by_default |
software | healthy | tests/test_local.py:67 |
test_curl_disabled_by_default |
software | healthy | tests/test_local.py:74 |
test_nmap_gate_can_be_enabled |
software | healthy | tests/test_local.py:81 |
_call |
software | healthy | tests/test_iptools.py:10 |
test_subnet_info_ipv4 |
software | healthy | tests/test_iptools.py:15 |
test_subnet_info_single_ip |
software | healthy | tests/test_iptools.py:25 |
test_subnet_split_counts_arithmetically_without_materializi… |
software | healthy | tests/test_iptools.py:31 |
test_subnet_split_small |
software | healthy | tests/test_iptools.py:39 |
test_subnet_split_rejects_shorter_prefix |
software | healthy | tests/test_iptools.py:50 |
test_ip_contains_true |
software | healthy | tests/test_iptools.py:55 |
test_ip_contains_subnet |
software | healthy | tests/test_iptools.py:60 |
test_ip_contains_mixed_version_does_not_raise |
software | healthy | tests/test_iptools.py:65 |
test_ip_contains_mixed_version_prefix |
software | healthy | tests/test_iptools.py:72 |
test_prefix_overlap_contains |
software | healthy | tests/test_iptools.py:77 |
test_prefix_overlap_disjoint |
software | healthy | tests/test_iptools.py:83 |
test_prefix_overlap_mixed_version_disjoint |
software | healthy | tests/test_iptools.py:89 |
test_supernet_aggregate_success |
software | healthy | tests/test_iptools.py:95 |
test_supernet_aggregate_non_contiguous |
software | healthy | tests/test_iptools.py:101 |
test_bogon_check_private |
software | healthy | tests/test_iptools.py:107 |
test_bogon_check_cgnat |
software | healthy | tests/test_iptools.py:113 |
test_bogon_check_global |
software | healthy | tests/test_iptools.py:119 |
test_bogon_check_ipv6_documentation |
software | healthy | tests/test_iptools.py:125 |
test_rpsl_attrs_merges_continuation_lines |
software | healthy | tests/test_irr.py:15 |
test_rpsl_set_members_handles_multiline_and_commas |
software | healthy | tests/test_irr.py:29 |
test_looks_like_set |
software | healthy | tests/test_irr.py:40 |
test_expand_as_set_recurses |
software | healthy | tests/test_irr.py:48 |
fake_whois |
software | healthy | tests/test_irr.py:74 |
test_expand_as_set_handles_cycles |
software | healthy | tests/test_irr.py:67 |
test_parse_route_objects |
software | healthy | tests/test_irr.py:85 |
test_parse_autnum |
software | healthy | tests/test_irr.py:104 |
test_parse_autnum_empty_returns_none |
software | healthy | tests/test_irr.py:121 |
test_build_detail_valid |
software | healthy | tests/test_rpki.py:8 |
test_build_detail_invalid_uses_reason |
software | healthy | tests/test_rpki.py:14 |
test_build_detail_invalid_without_reason_has_default |
software | healthy | tests/test_rpki.py:22 |
test_build_detail_not_found |
software | healthy | tests/test_rpki.py:28 |
test_parse_roas |
software | healthy | tests/test_rpki.py:33 |
test_parse_roas_empty |
software | healthy | tests/test_rpki.py:46 |
test_ripestat_route_lookup_peer_asn |
software | healthy | tests/test_bgp.py:10 |
test_ripestat_route_lookup_collector_filter |
software | healthy | tests/test_bgp.py:41 |
test_ripestat_route_lookup_error_marks_source |
software | healthy | tests/test_bgp.py:57 |
boom |
software | healthy | tests/test_bgp.py:58 |
test_enforce_cache_limit_never_evicts_kept_file |
software | healthy | tests/test_bgp.py:67 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
_Cfg |
software | healthy | tests/test_local.py:62 |
FakeClient |
software | healthy | tests/test_bgp.py:90 |
NetMCPConfig |
software | healthy | src/net_mcp/config.py:32 |
DNSRecord |
software | healthy | src/net_mcp/models.py:11 |
DNSSECStatus |
software | healthy | src/net_mcp/models.py:18 |
DNSLookupResult |
software | healthy | src/net_mcp/models.py:26 |
DelegationStep |
software | healthy | src/net_mcp/models.py:35 |
DNSTraceResult |
software | healthy | src/net_mcp/models.py:43 |
ROA |
software | healthy | src/net_mcp/models.py:56 |
RPKIValidationResult |
software | healthy | src/net_mcp/models.py:63 |
ROALookupResult |
software | healthy | src/net_mcp/models.py:71 |
ASPAObject |
software | healthy | src/net_mcp/models.py:80 |
ASPASnapshotResult |
software | healthy | src/net_mcp/models.py:87 |
ASPAChange |
software | healthy | src/net_mcp/models.py:94 |
ASPAChangesResult |
software | healthy | src/net_mcp/models.py:101 |
CollectorPeerSummary |
software | healthy | src/net_mcp/models.py:112 |
RouteCollector |
software | healthy | src/net_mcp/models.py:119 |
RouteCollectorResult |
software | healthy | src/net_mcp/models.py:129 |
MRTFile |
software | healthy | src/net_mcp/models.py:141 |
MRTSearchResult |
software | healthy | src/net_mcp/models.py:150 |
HistoricalBGPEntry |
software | healthy | src/net_mcp/models.py:160 |
HistoricalBGPResult |
software | healthy | src/net_mcp/models.py:173 |
BGPRoute |
software | healthy | src/net_mcp/models.py:188 |
BGPRouteLookupResult |
software | healthy | src/net_mcp/models.py:199 |
PrefixOrigin |
software | healthy | src/net_mcp/models.py:206 |
PrefixOriginResult |
software | healthy | src/net_mcp/models.py:214 |
ASNInfo |
software | healthy | src/net_mcp/models.py:219 |
BGPHijackEvent |
software | healthy | src/net_mcp/models.py:231 |
BGPHijackResult |
software | healthy | src/net_mcp/models.py:247 |
BGPLeakEvent |
software | healthy | src/net_mcp/models.py:253 |
BGPLeakResult |
software | healthy | src/net_mcp/models.py:267 |
CommandResult |
software | healthy | src/net_mcp/tools/local.py:112 |
IRRRouteObject |
software | healthy | src/net_mcp/tools/irr.py:43 |
IRRRouteLookupResult |
software | healthy | src/net_mcp/tools/irr.py:52 |
IRRAutNum |
software | healthy | src/net_mcp/tools/irr.py:59 |
IRRAutNumResult |
software | healthy | src/net_mcp/tools/irr.py:69 |
IRRAsSetResult |
software | healthy | src/net_mcp/tools/irr.py:75 |
PeeringExchange |
software | healthy | src/net_mcp/tools/peeringdb.py:25 |
PeeringNetwork |
software | healthy | src/net_mcp/tools/peeringdb.py:34 |
PeeringNetworkResult |
software | healthy | src/net_mcp/tools/peeringdb.py:47 |
IXPMember |
software | healthy | src/net_mcp/tools/peeringdb.py:53 |
IXPInfo |
software | healthy | src/net_mcp/tools/peeringdb.py:62 |
IXPResult |
software | healthy | src/net_mcp/tools/peeringdb.py:72 |
FacilityInfo |
software | healthy | src/net_mcp/tools/peeringdb.py:79 |
FacilityResult |
software | healthy | src/net_mcp/tools/peeringdb.py:88 |
SubnetInfo |
software | healthy | src/net_mcp/tools/iptools.py:67 |
SubnetSplitResult |
software | healthy | src/net_mcp/tools/iptools.py:84 |
ContainsResult |
software | healthy | src/net_mcp/tools/iptools.py:91 |
OverlapResult |
software | healthy | src/net_mcp/tools/iptools.py:98 |
SupernetResult |
software | healthy | src/net_mcp/tools/iptools.py:107 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
1.1.1.0 |
network | healthy | README.md |
8.8.8.0 |
network | healthy | README.md |
10.0.0.0 |
network | healthy | README.md |
192.168.1.1 |
network | healthy | README.md |
1.1.1.1 |
network | healthy | README.md |
8.8.8.8 |
network | healthy | README.md |
10.5.5.1 |
network | healthy | README.md |
127.0.0.1 |
network | healthy | tests/test_local.py |
10.0.0.255 |
network | healthy | tests/test_iptools.py |
10.0.0.64 |
network | healthy | tests/test_iptools.py |
10.0.0.128 |
network | healthy | tests/test_iptools.py |
10.0.0.192 |
network | healthy | tests/test_iptools.py |
192.168.0.0 |
network | healthy | tests/test_iptools.py |
192.168.1.0 |
network | healthy | tests/test_iptools.py |
10.0.1.0 |
network | healthy | tests/test_iptools.py |
10.0.2.0 |
network | healthy | tests/test_iptools.py |
100.64.0.1 |
network | healthy | tests/test_iptools.py |
1.0.0.0 |
network | healthy | tests/test_irr.py |
192.0.2.1 |
network | healthy | tests/test_bgp.py |
100.64.0.0 |
network | healthy | src/net_mcp/tools/iptools.py |
127.0.0.0 |
network | healthy | src/net_mcp/tools/iptools.py |
169.254.0.0 |
network | healthy | src/net_mcp/tools/iptools.py |
172.16.0.0 |
network | healthy | src/net_mcp/tools/iptools.py |
192.0.0.0 |
network | healthy | src/net_mcp/tools/iptools.py |
192.0.2.0 |
network | healthy | src/net_mcp/tools/iptools.py |
192.88.99.0 |
network | healthy | src/net_mcp/tools/iptools.py |
198.18.0.0 |
network | healthy | src/net_mcp/tools/iptools.py |
198.51.100.0 |
network | healthy | src/net_mcp/tools/iptools.py |
203.0.113.0 |
network | healthy | src/net_mcp/tools/iptools.py |
224.0.0.0 |
network | healthy | src/net_mcp/tools/iptools.py |
240.0.0.0 |
network | healthy | src/net_mcp/tools/iptools.py |
255.255.255.255 |
network | healthy | src/net_mcp/tools/iptools.py |
10.0.0.1 |
network | healthy | src/net_mcp/tools/iptools.py |
| Label | Layer | Status | Path |
|---|---|---|---|
README.md |
software | healthy | README.md |
CLAUDE.md |
software | healthy | CLAUDE.md |
pyproject.toml |
software | healthy | pyproject.toml |
LICENSE |
software | healthy | LICENSE |
config.toml |
software | healthy | config.toml |
__init__.py |
software | healthy | tests/__init__.py |
test_local.py |
software | healthy | tests/test_local.py |
test_iptools.py |
software | healthy | tests/test_iptools.py |
test_irr.py |
software | healthy | tests/test_irr.py |
test_rpki.py |
software | healthy | tests/test_rpki.py |
test_bgp.py |
software | healthy | tests/test_bgp.py |
test_dns.py |
software | healthy | tests/test_dns.py |
__init__.py |
software | healthy | src/net_mcp/__init__.py |
config.py |
software | healthy | src/net_mcp/config.py |
models.py |
software | healthy | src/net_mcp/models.py |
server.py |
software | healthy | src/net_mcp/server.py |
local.py |
software | healthy | src/net_mcp/tools/local.py |
__init__.py |
software | healthy | src/net_mcp/tools/__init__.py |
dns.py |
software | healthy | src/net_mcp/tools/dns.py |
rpki.py |
software | healthy | src/net_mcp/tools/rpki.py |
irr.py |
software | healthy | src/net_mcp/tools/irr.py |
peeringdb.py |
software | healthy | src/net_mcp/tools/peeringdb.py |
bgp.py |
software | healthy | src/net_mcp/tools/bgp.py |
iptools.py |
software | healthy | src/net_mcp/tools/iptools.py |
CLAUDE.md |
quality | healthy | CLAUDE.md |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
src |
software | healthy | src |
net_mcp |
software | healthy | src/net_mcp |
tools |
software | healthy | src/net_mcp/tools |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-1ydyfqfd |
software | healthy | /tmp/repobility-clone-1ydyfqfd |
This page is publicly accessible at:
https://repobility.com/scan/6e305682-1ea3-4207-bf0e-8ada5945ec2f/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/6e305682-1ea3-4207-bf0e-8ada5945ec2f/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.