Free, open source website technology detection. Identifies the full stack of any URL from headers, cookies, rendered DOM, JS globals, sourcemap dependencies, DNS records, certificate transparency, well-known probes and favicon hashes.
Server has 19 tools with mostly complete schemas and descriptions. Naming follows verb_noun convention (analyze, findSubdomains, verifyEmail, etc.). Descriptions are present but often terse (10-50 chars), below the 50-200 char LLM-optimized baseline. Parameter descriptions exist but lack detail on constraints, ranges, and error recovery. Output schemas are not documented, LLMs cannot predict return structure. Error handling is absent from descriptions. No tool annotations (readOnlyHint/destructiveHint). Composition is reasonable: tools are single-purpose, but chaining metadata (e.g., does analyze return data needed by enrich?) is unclear.
Analyse a single URL and return every technology detected, with evidence.
Analyze multiple URLs concurrently.
Crawl additional internal pages of a website for deeper technology detection.
Detect technologies from an evidence bundle using the fingerprint database.
Compare two snapshots to detect technology changes.
Build enrichment field sets for detected technologies (company, contact, social, security, signals, locale, keywords).
Check the status of the external fingerprint database.
Discover subdomains for a domain using certificate transparency and wordlist probing.
Output schemas not documented. LLMs cannot predict return structure for any tool. E.g., analyze() returns Detection[] but no schema visible; enrich() returns Enrichment object but structure not exposed to MCP.
Descriptions are terse (10-50 chars), below LLM-optimized baseline of 50-200 chars. E.g., 'Get the Tranco rank for a domain (traffic ranking)' lacks WHEN to use, prerequisites, or error recovery guidance.
Parameter descriptions lack constraint details. E.g., 'minConfidence' in analyze has no range (0-100 stated in description but not in schema); 'timeout' has no bounds; 'crawl' accepts boolean|number but no guidance on what number means.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Get the active fingerprint database for technology detection.
Import an external fingerprint database to extend technology coverage.
Import the Tranco traffic ranking database for use in analysis.
List all technology categories available in the fingerprint database.
List all URLs currently being watched for technology changes.
Load a previously saved snapshot of technology detections.
Look up CVEs for detected technologies using CPE names.
Save a snapshot of technology detections for a URL for later comparison.
Get the Tranco rank for a domain (traffic ranking).
Check the status of the Tranco database import.
Verify email addresses for deliverability.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes. E.g., importTranco and importExternalDatabase are WRITE but unmarked; analyze is READ but unmarked.
No error handling guidance in descriptions. E.g., verifyEmail, lookupCves, trancoRank offer no recovery hints if external services fail. Agents cannot self-correct or retry intelligently.