blackveil-dns 2.6.4 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,7 +26,7 @@ Open-source DNS & email security scanner for Claude, Cursor, VS Code, and MCP cl
26
26
 
27
27
  **Claude Desktop** (one-click install):
28
28
 
29
- Download the [Blackveil DNS extension](https://github.com/MadaBurns/bv-claude-dns/releases/latest/download/bv-claude-dns.mcpb) and open it — all 44 tools available instantly. [Verify your download](https://blackveilsecurity.com/extensions/claude-dns#install).
29
+ Download the [Blackveil DNS extension](https://github.com/MadaBurns/bv-claude-dns/releases/latest/download/bv-claude-dns.mcpb) and open it — all 51 tools available instantly. [Verify your download](https://blackveilsecurity.com/extensions/claude-dns#install).
30
30
 
31
31
  **Claude Code** (one command):
32
32
 
@@ -82,7 +82,7 @@ Transport support:
82
82
  ## Tools
83
83
 
84
84
  ```
85
- 44 MCP tools · 7 prompts · 6 resources
85
+ 51 MCP tools · 7 prompts · 6 resources
86
86
 
87
87
  Email Auth Infrastructure Brand & Threats Meta
88
88
  ──────────── ──────────────── ───────────────── ──────────────────────
@@ -111,10 +111,12 @@ Transport support:
111
111
 
112
112
  ## Quality & Reliability
113
113
 
114
- The server is continuously validated using a **comprehensive chaos test suite** (ported from `claude-code-py`) that covers all 9 detected MCP client types:
114
+ The server is continuously validated using a **comprehensive chaos test suite** that covers all detected MCP client types:
115
115
 
116
- - **Interactive clients**: `claude_code`, `cursor`, `vscode`, `claude_desktop`, `windsurf` (auto-format: `compact`)
117
- - **Non-interactive clients**: `mcp_remote`, `blackveil_dns_action`, `bv_claude_dns_proxy`, `unknown` (auto-format: `full`)
116
+ - **Interactive clients**: `claude_mobile`, `claude_code`, `cursor`, `vscode`, `claude_desktop`, `windsurf` (auto-format: `compact`)
117
+ - **Non-interactive clients**: `mcp_remote`, `blackveil_dns_action`, `bv_claude_dns_proxy`, `bv_load_test`, `unknown` (auto-format: `full`)
118
+
119
+ The `bv_load_test` class identifies internal load/chaos/tranco-scan traffic so it stays out of real-client analytics segments.
118
120
 
119
121
  The test suite ensures session stability, authentication precedence, and transport-specific edge cases across Streamable HTTP and Legacy SSE.
120
122
 
@@ -154,7 +156,7 @@ Run the chaos tests locally: `python3 scripts/chaos/chaos-test-clients.py`
154
156
  └──────────────────────────┘
155
157
  ```
156
158
 
157
- - **Generic Scoring Engine**: Architectural core ported from `claude-code-py` for cross-language consistency
159
+ - **Generic Scoring Engine**: Runtime-agnostic, string-keyed three-tier scoring with configurable weights
158
160
  - **WASM Policy Engine**: High-performance permission and token checks via `bv-wasm-core`
159
161
  - **Reliable Sessions**: Hardened tombstone logic prevents race-condition revival of terminated sessions
160
162
  - **Adaptive Scoring**: Durable Object telemetry adjusts weights based on real-world distributions
@@ -164,11 +166,13 @@ Run the chaos tests locally: `python3 scripts/chaos/chaos-test-clients.py`
164
166
 
165
167
  ## Client setup
166
168
 
167
- The free tier requires no authentication. If you have an API key, you can use either:
169
+ The free tier requires no authentication. Authenticated requests bypass per-IP rate limits and follow your tier's daily quota. Three authentication methods are supported:
170
+
168
171
  - **Header**: `Authorization: Bearer <KEY>`
169
- - **Query Param**: `?api_key=<KEY>`
172
+ - **Query Param**: `?api_key=<KEY>` (for clients that can't send custom headers — Smithery, Claude Code)
173
+ - **OAuth 2.1**: authorization-code flow with PKCE, discovered via `/.well-known/oauth-authorization-server` — used by the Claude mobile custom connector.
170
174
 
171
- For full hosted setup examples, stdio usage, and legacy fallback endpoints, see [**docs/client-setup.md**](docs/client-setup.md).
175
+ For full hosted setup examples, stdio usage, OAuth setup, and legacy fallback endpoints, see [**docs/client-setup.md**](docs/client-setup.md).
172
176
 
173
177
  ---
174
178
 
@@ -185,6 +189,28 @@ For full hosted setup examples, stdio usage, and legacy fallback endpoints, see
185
189
 
186
190
  ---
187
191
 
192
+ ## Example prompts
193
+
194
+ These demonstrate core functionality — paste any of them into Claude with the Blackveil DNS connector enabled:
195
+
196
+ | Prompt | What it does |
197
+ |--------|-------------|
198
+ | `Scan blackveilsecurity.com and tell me what needs fixing` | Full security audit — score, grade, prioritized findings |
199
+ | `Compare the email security of google.com and microsoft.com` | Side-by-side comparison of two domains' postures |
200
+ | `Generate a DMARC record for example.com with reject policy` | Produces a ready-to-publish DNS record |
201
+ | `What attack paths exist for example.com?` | Enumerates spoofing, takeover, and hijack vectors |
202
+ | `Map example.com's compliance against NIST 800-177` | Maps findings to compliance framework controls |
203
+
204
+ ---
205
+
206
+ ## Support
207
+
208
+ - **Bug reports & feature requests:** [GitHub Issues](https://github.com/MadaBurns/bv-mcp/issues)
209
+ - **Security vulnerabilities:** [security@blackveilsecurity.com](mailto:security@blackveilsecurity.com) (see [SECURITY.md](SECURITY.md))
210
+ - **General questions:** [GitHub Discussions](https://github.com/MadaBurns/bv-mcp/discussions)
211
+
212
+ ---
213
+
188
214
  ## Responsible use
189
215
 
190
216
  This tool is intended for **authorized security assessments** of domains you own or have explicit permission to test. Do not use it for unauthorized reconnaissance, harassment, or any activity that violates applicable laws. Findings from attack simulation, spoofability, and subdomain discovery tools should be used to **improve your own security posture**, not to exploit others.
@@ -197,6 +223,6 @@ If you discover a vulnerability in a third-party domain, please follow [coordina
197
223
 
198
224
  Built and maintained by [**BLACKVEIL**](https://blackveilsecurity.com) — NZ-owned cybersecurity consultancy.
199
225
 
200
- BUSL-1.1 License (converts to MIT on 2030-03-17)
226
+ [Privacy Policy](https://www.blackveilsecurity.com/privacy) · [License](LICENSE) (BUSL-1.1 MIT on 2030-03-17)
201
227
 
202
228
  </div>
package/dist/index.d.ts CHANGED
@@ -46,6 +46,7 @@ declare const RecordType: {
46
46
  readonly DNSKEY: 48;
47
47
  readonly DS: 43;
48
48
  readonly RRSIG: 46;
49
+ readonly NSEC3PARAM: 51;
49
50
  readonly PTR: 12;
50
51
  readonly SRV: 33;
51
52
  readonly HTTPS: 65;
@@ -191,7 +192,7 @@ declare function sanitizeDomain(input: string): string;
191
192
  declare function sanitizeInput(input: string, maxLength?: number): string;
192
193
 
193
194
  /** Server version — keep in sync with package.json */
194
- declare const SERVER_VERSION = "2.6.4";
195
+ declare const SERVER_VERSION = "2.10.0";
195
196
 
196
197
  /**
197
198
  * Map of every tool name to its Zod argument schema.
@@ -257,6 +258,10 @@ declare function checkDmarc(domain: string, dnsOptions?: QueryDnsOptions): Promi
257
258
  * Verifies the AD (Authenticated Data) flag, checks for DNSKEY/DS records,
258
259
  * and audits algorithm and digest type security.
259
260
  * Augments results with dnssecSource metadata: 'domain_configured' or 'tld_inherited'.
261
+ *
262
+ * When the primary resolver reports AD=false but DNSKEY+DS records exist ("validation failing"),
263
+ * fires a confirmation probe to Google DoH. If Google says AD=true (edge flap), re-runs the
264
+ * check with the corrected flag to avoid score instability.
260
265
  */
261
266
  declare function checkDnssec(domain: string, dnsOptions?: QueryDnsOptions): Promise<CheckResult>;
262
267
 
@@ -291,6 +296,10 @@ declare function checkNs(domain: string, dnsOptions?: QueryDnsOptions): Promise<
291
296
  * Check SPF records for a domain.
292
297
  * Looks for v=spf1 TXT records and validates their configuration.
293
298
  * Recursively expands include chains to compute true DNS lookup count.
299
+ *
300
+ * Top-level DNS failures (timeout, DoH HTTP error, invalid response) are
301
+ * converted to a high-severity finding so callers receive a structured
302
+ * CheckResult instead of a thrown error.
294
303
  */
295
304
  declare function checkSpf(domain: string, dnsOptions?: QueryDnsOptions): Promise<CheckResult>;
296
305