Skip to content

docs(readme): fix inaccuracies against the actual codebase - #10

Merged
VrilLabs merged 1 commit into
masterfrom
docs/readme-accuracy
Aug 15, 2026
Merged

docs(readme): fix inaccuracies against the actual codebase#10
VrilLabs merged 1 commit into
masterfrom
docs/readme-accuracy

Conversation

@VrilLabs

Copy link
Copy Markdown
Collaborator

Summary

Reviewed README.md line by line against the actual codebase, package.json, and the real npm packages it references (downloaded @modelcontextprotocol/client and inspected its type definitions rather than guessing). Found and fixed:

  • Node.js requirement: said >=18.0.0 in two places; package.json's engines field has required >=22.0.0 since the better-sqlite3-multiple-ciphers v13 bump.
  • MCP badge: said 2.0.0-beta.0; the installed @modelcontextprotocol/server is the stable 2.0.0 release.
  • Client integration example: imported a nonexistent McpClient and called .invokeTool(name, args) — neither exists on the real @modelcontextprotocol/client package. Replaced with a verified-correct example (Client + StdioClientTransport, .connect(), .callTool({ name, arguments })).
  • Phantom tool: the AlienVault OTX Tools table listed a validate_api_key tool that was never registered in src/index.ts — removed, count corrected (4)(3).
  • Bootstrap Commands: used ${env:ALIENVAULT_API_KEY}, invalid bash syntax that also doesn't match what getBootstrapCommand() actually generates (it inlines the literal resolved key, not an env-var reference). Rewrote all four examples to match the real template strings.
  • Project Structure: still listed .eslintrc.json, deleted when ESLint 9's flat config landed — now eslint.config.js.
  • Error Response Format: showed a fabricated error: { message, code, context } shape; the real createToolError() returns the standard content array plus a flat isError/error (JSON-stringified string). Corrected.
  • Security Considerations: still said SHA-256; that was replaced with PBKDF2 (120k iterations) earlier in this session's CodeQL work.
  • Acknowledgments: linked to WiseLibs/better-sqlite3 instead of the actual dependency, the better-sqlite3-multiple-ciphers fork.

Everything else (tool parameter lists, environment variable defaults, circuit breaker config, error message text) was checked against source and left as-is — already accurate.

🤖 Generated with Claude Code

Went through README.md line by line against the real source, package.json,
and the actual npm packages it references. Found and fixed:

- Node.js requirement said >=18.0.0 in two places; package.json's engines
  field has required >=22.0.0 since the better-sqlite3-multiple-ciphers v13
  bump.
- MCP badge said "2.0.0-beta.0"; the installed @modelcontextprotocol/server
  is the stable 2.0.0 release.
- The "Example MCP Client Integration" snippet imported a nonexistent
  `McpClient` and called `.invokeTool(name, args)` - neither exists on the
  real @modelcontextprotocol/client package. Verified the actual API
  (downloaded and inspected the package's .d.mts) and replaced it with a
  correct example: `Client` + `StdioClientTransport`, `.connect()`, and
  `.callTool({ name, arguments })`.
- The AlienVault OTX Tools table listed a `validate_api_key` tool that was
  never registered anywhere in src/index.ts (validateApiKey() is only
  called internally by get_health) - removed it and corrected the count
  from (4) to (3).
- The Bootstrap Commands examples used `${env:ALIENVAULT_API_KEY}` syntax,
  which isn't valid bash at all (that's PowerShell-only) and doesn't match
  what getBootstrapCommand() actually generates - it inlines the literal
  resolved key value, not an env-var reference. Rewrote all four examples
  to match the real template strings, including the optional
  TARGET=<target>/-target flag the code actually supports.
- Project Structure still listed .eslintrc.json, deleted when ESLint 9's
  flat config landed - updated to eslint.config.js.
- Error Response Format showed a fabricated `error: { message, code,
  context }` shape; createToolError() actually returns the standard
  `content` array plus a flat `isError`/`error` (JSON-stringified context
  as a string). Corrected to match.
- Security Considerations still said sensitive strings are hashed with
  SHA-256; that was replaced with PBKDF2 (120k iterations) during the
  CodeQL false-positive/real-alert cleanup earlier in this branch's history.
- Acknowledgments linked to WiseLibs/better-sqlite3, but the actual
  dependency is the better-sqlite3-multiple-ciphers fork (a different
  package) - relinked to the correct repo.

Everything else (tool parameter lists, environment variable defaults,
circuit breaker config, error message text) was checked against the
source and left as-is since it was already accurate.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 15, 2026 03:53
@VrilLabs
VrilLabs merged commit d89b69e into master Aug 15, 2026
6 checks passed
@VrilLabs
VrilLabs deleted the docs/readme-accuracy branch August 15, 2026 03:55

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates README.md to align documented requirements, examples, and reference tables with the current implementation and dependency set of the AlienSec MCP server.

Changes:

  • Updated documented runtime requirements and badges (Node.js >=22.0.0, MCP 2.0.0).
  • Corrected the MCP client integration example to use the current @modelcontextprotocol/client API shape.
  • Adjusted tool listings, bootstrap command examples, error response format documentation, and dependency acknowledgments.
Suppressed comments (2)

README.md:280

  • The optional [TARGET=<target>] token is inside a bash code block; copying this verbatim will fail and it doesn’t match the actual getBootstrapCommand() output (which either includes TARGET=... or omits it). Prefer showing two explicit commands (with and without TARGET).
API_KEY=<api-key> [TARGET=<target>] bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=rpm)"

README.md:275

  • The optional [TARGET=<target>] token is inside a bash code block; copying this verbatim will fail and it doesn’t match the actual getBootstrapCommand() output (which either includes TARGET=... or omits it). Prefer showing two explicit commands (with and without TARGET).
API_KEY=<api-key> [TARGET=<target>] bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=apt)"

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread README.md
### macOS PKG Installer
```bash
API_KEY=${env:ALIENVAULT_API_KEY} bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=pkg)"
API_KEY=<api-key> [TARGET=<target>] bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=pkg)"
Comment thread README.md
### Windows PowerShell
```powershell
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; ${env:ALIENVAULT_API_KEY} (new-object Net.WebClient).DownloadString("https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=powershell") | iex; install_agent -apikey ${env:ALIENVAULT_API_KEY}
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; API_KEY=<api-key> (new-object Net.WebClient).DownloadString("https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=powershell") | iex; install_agent -apikey <api-key> [-target <target>]
Comment thread README.md
1. **Database Encryption**: Use `DATABASE_ENCRYPTION_KEY` for encrypting sensitive data at rest
2. **API Key Security**: API keys are never logged; use environment variables or secure vaults
3. **Memory Safety**: Sensitive strings are hashed (SHA-256) before storage in circuit breaker and API log tables
3. **Memory Safety**: Sensitive strings are hashed with PBKDF2 (120,000 iterations) before storage in circuit breaker and API log tables
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants