The Hacker Bob public records API exposes cleared Common Vulnerabilities and Exposures records and capability metadata through versioned, typed JSON endpoints. It cannot run security assessments.
Base URL and authentication
The production base URL is https://hackerbob.ai/api/v1. Public records require no credential and accept cross-origin requests.
Browser sessions under /console are separate and must not be sent to the public API.
curl --fail --silent --show-error https://hackerbob.ai/api/v1/health
Operations
GET /api/v1/cve-records lists records. GET /api/v1/cve-records/{recordId} retrieves one record. POST /api/v1/cve-records/batch retrieves up to 50 records without side effects.
GET /api/v1/capabilities returns public-interface boundaries. GET /api/v1/sandbox returns non-persistent contract metadata. GET or POST /ask searches the same record index using an NLWeb-compatible response.
Quick start
Read a small page first, then follow pagination.nextCursor only when the caller needs the complete record set.
curl --fail --silent --show-error \
'https://hackerbob.ai/api/v1/cve-records?limit=5'
JavaScript SDK
Import the zero-dependency ECMAScript module directly or download it with its TypeScript declarations. The SDK calls only the public read-only endpoints.
Contract sandbox
GET /api/v1/sandbox returns deterministic contract metadata, boundaries, links, and example requests. The endpoint is non-persistent and does not use production workspace data.
The sandbox cannot start an assessment, interact with a target, or simulate an assessment result.
curl --fail --silent --show-error https://hackerbob.ai/api/v1/sandbox
Batch lookup
Batch lookup accepts 1 to 50 CVE identifiers. It is side-effect free and safe to retry. An optional Idempotency-Key is accepted for caller correlation.
curl --fail --silent --show-error \
-X POST https://hackerbob.ai/api/v1/cve-records/batch \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: example-request-1' \
--data '{"recordIds":["CVE-2026-47747"]}'
Response contract
Every OpenAPI operation has an operationId, description, typed success response, typed JSON error response, and active lifecycle metadata.
The health endpoint returns the service version and confirms that the hosted interface is read-only.
{"status":"ok","version":"1.0.0","readOnly":true,"assessmentExecution":false}
Pagination and errors
List responses return pagination.nextCursor. Send that opaque value as cursor until nextCursor is null.
REST errors use application/json with error.code, error.message, and requestId. Requests over the published edge limit return HTTP 429 with Retry-After and RateLimit headers.
Rate limit
The public edge permits 120 requests per 60-second window for each connecting address. Responses publish RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, and RateLimit-Policy.
When the limit is exhausted, wait for Retry-After before retrying. Do not retry HTTP 400 or 404 responses without changing the request.
Versioning and deprecation
The major version is part of the URL. Compatible fields and operations may be added to v1. Breaking changes use a new major version.
Before retiring a version, Hacker Bob will publish a deprecation notice, send Deprecation and Sunset response headers, identify the successor version, and provide at least 90 days between notice and sunset.
Local CLI
The hacker-bob npm package provides the command-line installer for the local assessment runtime. It is separate from the hosted read-only records API.
Run it only inside a project the operator is authorized to assess, then restart the selected Model Context Protocol host.
npx -y hacker-bob@latest install .
MCP transport
The hosted MCP server exposes the same read-only data through Streamable HTTP. Its tool names, parameter schemas, behavioral annotations, and resources are published in the server card.
MCP Registry
The hosted public-records server retains the legacy registry identifier io.github.bobnetsec/hacker-bob-public-records for compatibility. Hacker Bob is the current product and company name.
Validated registry metadata declares the production Streamable HTTP endpoint and this repository as its source.
A2A transport
The public Agent2Agent interface accepts A2A 1.0 JSON-RPC SendMessage requests and returns direct text messages from cleared public records and capability metadata.
It supports no streaming, push notifications, assessment execution, or target interaction.