Methodology
Methodology: how we source facts and score tools
Every factual field comes from a primary source and carries its link and the date we checked it. The Coverage Score is computed by a published formula from those sourced facts, never typed by hand.
Sourcing standard
We compile from public primary sources and we do not run or benchmark the tools ourselves. For each listing we open the vendor's own pages, the project's repository and license file, and official standards pages, and we record what they say.
- Primary sources only. A source is the tool's own site or documentation, its code repository, or an official standards or cloud-provider page. Each listing names the hosts it is allowed to cite.
- The page that states the fact. We cite a specific docs or pricing page, not just a homepage, whenever one exists.
- No aggregators as sources. These hosts are rejected by the build:
g2.com,capterra.com,crunchbase.com,wikipedia.org,producthunt.com,medium.com,linkedin.com,theresanaiforthat.com. - Unverified means absent. If we cannot verify a fact we leave it out. The page then says "Not documented in the sources we checked", never "No".
- A minimum to be listed. A tool needs a verified vendor, status, deployment, open-source status, pricing model, website and at least three capabilities. Otherwise it is not listed.
- Prices only from the vendor. We show a price only if it is stated on the vendor's own pricing page, with the date, and a reminder to check the vendor for current pricing.
- GitHub numbers are dated. Stars, archived status and the last push come from the GitHub API on the day we checked. Stars show attention, not quality (how we use them).
What a fact is
Every factual field is stored as a fact with four parts: the value, the source URL (https only), the date we opened the page, and an optional short locator that tells a checker where on the page to look. The build fails if a source or date is missing, if the date is in the future, or if a field has an unknown name. On a page, each fact shows an evidence chip with the source host and the check date, linked to the source.
What is our analysis
Some text is ours, not a fact: taglines, descriptions, "best for" lines, "consider instead if" lines, and the mapping to the OWASP and MITRE ATLAS frameworks. Our words must not contain a factual claim that is missing from the sourced facts, and the mapping is always marked Our analysis. Where we compare two tools, both sides must have verified facts and we state where each is stronger.
Coverage Score
The Coverage Score runs from 0 to 100. It measures how much a tool documents in public: risk coverage, capabilities, deployment options, openness, documentation, integrations, maintenance and transparency. It is computed in code from the sourced facts in each listing. There is no score field in the data, and the build rejects one.
Scores compare tools within one category. Category pages sort by score, and the home page never shows a global ranking. This is rubric version 1.0, dated October 20, 2026. If a weight changes, the version and this date change with it.
The rubric (weights add up to 100)
| Criterion | Points | Computed from | Rule |
|---|---|---|---|
| Risk coverage | 25 | owasp_llm | 25 x (OWASP LLM risks mapped within the category list, each backed by a sourced capability) / (size of the category list) |
| Capability breadth | 20 | capabilities[].tag | 20 x min(1, distinct capability tags from the category vocabulary / the category target) |
| Deployment flexibility | 10 | deployment | 1 mode = 4, 2 modes = 7, 3 or more = 10 |
| Openness | 10 | open_source | OSI-approved license = 10; source-available or a custom license = 6; proprietary with a stated free tier = 3; proprietary = 0 |
| Documentation | 10 | docs | public docs site 4 + API reference 3 + quickstart 3 |
| Integrations | 10 | integrations[].tag | 1 point per distinct integration tag, up to 10 |
| Maintenance | 5 | last_release or github.pushed_at | newest activity within 180 days of the review date = 5; within 365 days = 3; older = 1; archived or deprecated = 0 |
| Pricing transparency | 5 | pricing | free or open source, or public prices on the vendor page = 5; a free tier or inclusion stated without prices = 3; contact sales or not published = 0 |
| Trust transparency | 5 | trust | security or trust page (or SECURITY.md) = 2; stated attestations or a documented disclosure process = 3 |
| Total | 100 |
Missing data scores 0 for that criterion and appears as "Not documented in the sources we checked". A tool page shows the total, the nine sub-scores as bars, and the list of facts that fed each bar.
Category settings (our analysis)
Two numbers depend on the category: which OWASP LLM risks count as relevant, and how many distinct capabilities make a tool "broad" in that category. We chose them from what each kind of control is meant to do.
What the score does not measure
- We do not run the tools, so there is no measurement of detection accuracy, false-positive rate, latency or throughput.
- It says nothing about support quality, ease of use or price-performance.
- A public benchmark may appear in a separate "Public benchmarks" list on a tool page, with its source and date. It never feeds the score.
- A documentation-based score favors vendors with public docs and open-source tools. A low score can mean "little published", not "poor".
Independence guarantees
- The score function receives the listing with the sponsorship, affiliate and ownership fields removed, so it cannot read them.
- A build check confirms that the function's source does not mention those fields and that switching sponsorship on for a sample listing leaves its score unchanged.
- Sponsored placements are labeled "Sponsored", sit outside ranked lists, and have no effect on scores, ordering, picks or comparison verdicts. See the disclosure page.
GitHub stars
Tools whose listing records their own GitHub repository carry a stars badge on the tools list, the layer pages and comparison pages. It shows the star count, the date we read it and the date of the latest push to the repository. A tool with no recorded repository shows no badge: that covers every commercial tool without public code, and an open-source project that lives inside a larger shared repository.
Stars are a popularity signal, not a measure of security. They count GitHub accounts that starred the repository, so a large number says nothing about detection accuracy, how the code is reviewed or how the maintainers handle a vulnerability report. A general framework can collect stars for features that have little to do with security, while a narrow scanner with a few hundred stars may be the one that fits your job. Sorting the tools list by stars is a way to browse it, not a ranking.
Stars do not feed the Coverage Score. The score reads two other values from the same GitHub record, both in the Maintenance criterion (5 of 100 points): the latest push date, which counts as activity next to the latest release date, and the archived flag. The rule is: newest activity within 180 days of the review date = 5; within 365 days = 3; older = 1; archived or deprecated = 0. Activity is counted against the listing's review date. A refresh that brings a newer push date or a new archived flag can therefore change that criterion, while a change in stars changes no score.
The as-of date is the day, in Pacific time, that we last read the repository from the GitHub API. The star count, the archived flag and the last push in one badge come from that single response. The last push is the UTC date GitHub reports, so a push on a Pacific evening can carry the next day's date. Before each deploy a script reads every listed repository again, one request each, without signing in. GitHub allows 60 such requests per hour, so when the allowance runs out the tools not yet reached keep their earlier values and their earlier date, and two badges on one page can show different dates. A refresh does not move a listing's "Last reviewed" date, because nobody re-checked the rest of the listing.
Two text labels mark repositories that may have stopped moving. "archived" appears when GitHub marks the repository archived. "inactive" appears when the last push is more than 365 days (12 months) before the as-of date; an archived repository shows only "archived". We picked 12 months because past that point the Maintenance criterion drops to its lowest score above zero. Treat "inactive" as a reason to read the project's issues and releases before you adopt it: a finished library can go a year without a push and still work.
OWASP and MITRE ATLAS mapping
The list of risks is OWASP's: the OWASP Top 10 for LLM Applications, 2025 edition, published at genai.owasp.org. The technique list is MITRE's, from atlas.mitre.org. The mapping from a tool to a risk or a technique is ours. Each mapped entry must point to at least one capability the tool documents with a source, and every place it appears is labeled Our analysis. A mapping says a documented capability addresses part of a risk, not that the tool removes the risk.
How we place tools in layers
A tool's layer tells a buyer which budget line it can fill, so placement follows written rules. AI Security Layers is the directory's own model for organizing AI security controls; it is not a standard, and OWASP, MITRE and NIST did not create or endorse it. Every placement is our analysis, marked Our analysis, and rests on a capability the tool's own sources document:
- The category comes first. A tool sits in the layer of the category that matches its main documented job, so its primary layer is never a judgment call.
- A tool gets at most two more layers, and only when its own sources document a capability that does that layer's job. A matching tag in our vocabulary is not enough: the capability has to describe the layer's work.
- We never reword a capability, change a tag or move a category to reach a layer, and sponsorship or an affiliate link never places a tool.
- When more than two layers qualify, we keep the two with the most qualifying capabilities. On a tie, a layer the vendor sells as a named product or module wins, then the lower layer number.
- Archived and deprecated tools keep their layers. Layer pages list them last, with their badge.
- A tool whose main job fits no layer, for example deepfake or voice fraud detection, is not forced into one. We log it, and three or more such tools would trigger a proposal to change the model. Detection and response for a security operations center has been layer 8 since tools documenting it as their main job were added.
- Monitoring and response has no category, so it is a tool's primary layer only when the tool documents at least two capabilities that match the layer and its description names detection and response as its main job. Otherwise it is a secondary layer, like any other.
- Layers never change the Coverage Score. The score measures what a vendor documents inside its own category.
Vocabulary
Capabilities and integrations are tagged from a controlled vocabulary so that tools can be counted and compared. Each tag has a one-line definition.
LLM firewalls & guardrails (15 capability tags)
- prompt-injection-detection
- Detects direct or indirect prompt injection in user input or retrieved content.
- jailbreak-detection
- Detects prompts that try to push a model past its safety rules.
- content-moderation
- Screens inputs or outputs for harmful categories such as hate, violence or sexual content.
- pii-redaction
- Finds personal data in prompts or responses and masks, blocks or flags it.
- system-prompt-leak-protection
- Detects or prevents exposure of the hidden system prompt.
- output-validation
- Checks model output against rules, schemas or policies before it is used.
- topic-control
- Keeps a conversation inside defined subject boundaries.
- hallucination-detection
- Checks answers against sources or facts to flag unsupported statements.
- malicious-link-detection
- Flags links in model output that are unknown, unapproved or malicious.
- tool-call-control
- Validates, allows or denies the tool and function calls an agent makes.
- custom-policy-rules
- Lets the user write their own rules or policies for what is allowed.
- rate-limit-cost-control
- Limits request volume, tokens or spend to reduce abuse and runaway cost.
- ai-gateway-routing
- Routes model traffic through a gateway that applies policy and logging.
- safety-classifier-model
- Ships a trained model that classifies prompts or responses for safety.
- audit-logging
- Records decisions and events so they can be reviewed later.
AI red teaming & LLM evaluation (17 capability tags)
- prompt-injection-testing
- Probes a model or app with prompt injection attacks and reports what succeeds.
- jailbreak-testing
- Probes a model or app with jailbreak attempts and reports what succeeds.
- data-leakage-testing
- Tests whether a model reveals training data, secrets or private data.
- misinformation-testing
- Tests for hallucination, false claims or misleading output.
- toxicity-testing
- Tests whether a model can be made to produce toxic or harmful language.
- system-prompt-extraction-testing
- Tests whether the hidden system prompt can be extracted.
- agent-tool-abuse-testing
- Tests whether an agent can be pushed into misusing its tools.
- automated-attack-generation
- Generates new attack prompts automatically instead of using a fixed list.
- multi-turn-attacks
- Runs attacks that build up over several conversation turns.
- automated-scanning
- Runs a library of predefined attacks without manual supervision.
- custom-probes
- Lets the user add their own attacks, tests or datasets.
- ci-integration
- Can run as a step in a CI or build pipeline.
- reporting
- Produces result logs or reports that can be reviewed or shared.
- framework-mapping
- Maps findings to a framework such as the OWASP Top 10 for LLM Applications.
- adversarial-ml-attacks
- Implements evasion, poisoning, extraction or inference attacks on ML models.
- benchmark-datasets
- Provides a standard dataset or benchmark for comparing model safety.
- multimodal-testing
- Tests models that take images, audio or other non-text input.
Model & ML supply-chain security (12 capability tags)
- model-file-scanning
- Scans model files for unsafe contents before they are loaded.
- pickle-analysis
- Analyzes Python pickle data for code that would run on load.
- malicious-code-detection
- Detects code or payloads hidden inside model artifacts.
- multi-format-support
- Handles several model file formats.
- model-signing
- Creates cryptographic signatures for model files.
- signature-verification
- Verifies a model's signature before use.
- ai-bom-generation
- Produces a bill of materials listing models, datasets and dependencies.
- license-check
- Checks model or dataset licenses.
- registry-integration
- Works with a model registry or artifact repository.
- ci-integration
- Can run as a step in a CI or build pipeline.
- safe-serialization-format
- Stores model weights in a format that cannot run code on load.
- vulnerability-disclosure-program
- Runs a program to receive and reward reports of ML vulnerabilities.
AI security posture management & discovery (10 capability tags)
- ai-asset-inventory
- Discovers and lists AI models, services, data and pipelines.
- shadow-ai-discovery
- Finds AI tools or services in use that were not approved.
- misconfiguration-detection
- Finds insecure settings in AI services and pipelines.
- attack-path-analysis
- Shows how an attacker could reach AI assets through connected resources.
- data-exposure-detection
- Finds sensitive data reachable by AI systems.
- model-vulnerability-scanning
- Scans models or AI components for known weaknesses.
- cloud-integration
- Connects to cloud accounts to inspect AI resources.
- runtime-protection
- Applies controls to AI traffic while the system is running.
- policy-enforcement
- Applies rules about acceptable AI and data use.
- compliance-reporting
- Produces reports against a control framework or regulation.
Agent & MCP security (12 capability tags)
- mcp-server-scanning
- Scans MCP servers and their tool descriptions for risky behavior.
- tool-poisoning-detection
- Detects malicious instructions hidden in tool descriptions or results.
- mcp-gateway-proxy
- Sits between agents and MCP servers to apply policy.
- agent-runtime-monitoring
- Observes agent actions while they run.
- agent-identity
- Gives agents their own identities and credentials.
- tool-permissioning
- Controls which tools and scopes an agent may use.
- prompt-injection-detection
- Detects direct or indirect prompt injection in user input or retrieved content.
- policy-engine
- Evaluates rules over agent actions or traffic.
- agent-discovery
- Finds the agents running in an environment.
- agent-red-teaming
- Tests agents for exploitable behavior.
- audit-logging
- Records decisions and events so they can be reviewed later.
- agent-sandboxing
- Runs agent code and tools in an isolated environment with limited access to files, network and credentials.
GenAI data-leak prevention & privacy (13 capability tags)
- pii-detection
- Detects personal data in text, files or traffic.
- pii-redaction
- Finds personal data in prompts or responses and masks, blocks or flags it.
- tokenization
- Replaces sensitive values with tokens that can be reversed by an authorized system.
- data-vault
- Stores sensitive values separately and returns references.
- browser-dlp
- Applies data loss controls inside the web browser.
- prompt-dlp
- Inspects prompts and uploads sent to AI tools for sensitive data.
- file-upload-controls
- Blocks or inspects files uploaded to AI tools.
- shadow-ai-discovery
- Finds AI tools or services in use that were not approved.
- policy-enforcement
- Applies rules about acceptable AI and data use.
- image-redaction
- Finds and masks sensitive data inside images.
- custom-entity-recognizers
- Lets the user define their own sensitive data types.
- synthetic-data
- Generates artificial data that mimics real data.
- audit-logging
- Records decisions and events so they can be reviewed later.
AI governance, risk & compliance (10 capability tags)
- ai-inventory
- Keeps a register of AI systems, owners and uses.
- risk-assessment
- Guides or records assessments of AI risk.
- policy-management
- Manages written AI policies and their review.
- regulatory-mapping
- Maps controls to regulations or standards as the vendor states them.
- evidence-collection
- Collects evidence for audits or assessments.
- model-monitoring
- Tracks model behavior, drift or quality over time.
- bias-fairness-testing
- Tests models for bias or unfair outcomes.
- approval-workflows
- Routes AI use cases through review and sign-off.
- vendor-ai-risk
- Assesses AI risk in third-party tools and vendors.
- audit-reports
- Produces reports aimed at auditors.
Integrations (29 tags)
- openai
- Works with OpenAI models or APIs.
- anthropic
- Works with Anthropic models or APIs.
- azure-openai
- Works with Azure OpenAI Service.
- aws-bedrock
- Works with Amazon Bedrock.
- google-vertex
- Works with Google Vertex AI.
- huggingface
- Works with Hugging Face models or the Hugging Face Hub.
- langchain
- Integrates with LangChain.
- langgraph
- Integrates with LangGraph.
- llamaindex
- Integrates with LlamaIndex.
- openai-agents-sdk
- Integrates with the OpenAI Agents SDK.
- mcp
- Works with the Model Context Protocol.
- kubernetes
- Runs on or integrates with Kubernetes.
- github-actions
- Integrates with GitHub Actions.
- gitlab-ci
- Integrates with GitLab CI.
- splunk
- Sends data to or integrates with Splunk.
- datadog
- Integrates with Datadog.
- siem-generic
- Exports events to a SIEM.
- okta
- Integrates with Okta.
- slack
- Integrates with Slack.
- jira
- Integrates with Jira.
- snowflake
- Integrates with Snowflake.
- databricks
- Integrates with Databricks.
- sagemaker
- Integrates with Amazon SageMaker.
- mlflow
- Integrates with MLflow.
- litellm
- Integrates with LiteLLM.
- browser-extension
- Delivered or extended through a browser extension.
- presidio
- Integrates with Microsoft Presidio.
- docker
- Ships or runs as a Docker container.
- apigee
- Integrates with the Apigee API gateway.
Freshness
We re-verify each listing at least every 90 days. The "Last reviewed" date on a page changes only when we make a real edit, and the visible date, the date in the page's structured data and the date in the sitemap are the same value. Every fact carries its own check date, so you can see which parts are older.
Limits
The market moves quickly: products are renamed, acquired and retired. A fact is true as of the date shown and may have changed since. Treat a listing as a starting point and confirm details with the vendor. This is information, not legal, compliance or purchasing advice. If you find an error, tell us on the corrections page.