Skip to main content
Glama

CRED-1: Open Domain Credibility Dataset

DOI Publish License: CC BY 4.0 npm version npm downloads CalVer Report Missing Domain

CRED-1 is an open, reproducible domain-level credibility dataset combining multiple openly-licensed source lists with computed enrichment signals. It provides credibility scores for 2,600+ domains (exact count in the latest release) known to publish mis/disinformation, conspiracy theories, or other unreliable content. Community members can report missing domains for inclusion.

๐ŸŽ“ Presented at ACM WebSci 2026 (Braunschweig). Landing page: aloth.github.io/agentic-ai-information-integrity/cred-1.

๐Ÿค– MCP-ready โ€” query domain credibility directly from Claude Desktop, Cursor & Windsurf, or any MCP-compatible agent. Jump to setup โ†“

Paper: A. Loth, M. Kappes, and M.-O. Pahl, "CRED-1: An Open Multi-Signal Domain Credibility Dataset for Automated Pre-Bunking of Online Misinformation," Preprint, 2026. doi:10.2139/ssrn.6448466


Install

# CLI (global)
npm install -g @aloth/cred1

# Library (project dependency)
npm install @aloth/cred1

# Or try without installing
npx @aloth/cred1 check infowars.com

Related MCP server: unphurl-mcp

CLI Usage

# Single domain lookup
cred1 check infowars.com
# ๐Ÿ”ด  infowars.com
#    Score:    0.073 / 1.000
#    Category: conspiracy
#    Level:    low
#    Sources:  2

# Domain not in dataset
cred1 check nytimes.com
# โšช  nytimes.com
#    Not found in CRED-1 dataset โ€” treat as unknown/neutral

# Batch processing (stdin)
echo -e "rt.com\ninfowars.com\nnytimes.com" | cred1 batch

# JSON output
cred1 check breitbart.com --json

# Search
cred1 search "news"
cred1 search "\.ru$"

# Statistics
cred1 stats
cred1 categories

Domain normalization is automatic โ€” https://www.infowars.com/politics/ resolves to infowars.com.

MCP Server (Claude Desktop / Cursor / Windsurf)

CRED-1 ships an MCP server so AI assistants can check domain credibility directly.

Tools exposed

Tool

Description

check_domain

Check a single domain (score, category, level, metadata)

batch_check

Check up to 100 domains at once

search_domains

Search domains by substring or regex pattern

get_stats

Dataset statistics (total, per-category counts, version)

get_categories

Category taxonomy with descriptions and score ranges

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "cred1": {
      "command": "npx",
      "args": ["-y", "@aloth/cred1", "--mcp"]
    }
  }
}

Note: --mcp is handled by the CLI wrapper โ€” or run the dedicated binary directly.

Alternatively, if the package is installed globally:

{
  "mcpServers": {
    "cred1": {
      "command": "cred1-mcp"
    }
  }
}

Cursor

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "cred1": {
      "command": "npx",
      "args": ["-y", "@aloth/cred1", "--mcp"]
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "cred1": {
      "command": "npx",
      "args": ["-y", "@aloth/cred1", "--mcp"]
    }
  }
}

OpenClaw / any MCP-compatible host

{
  "command": "cred1-mcp",
  "transport": "stdio"
}

Pinning a version

With npx -y @aloth/cred1, npx checks npm for a newer version each time the host starts the server and installs it, and a new version is published every week. A host restart can therefore run a release you have not reviewed. To decide when to update, pin the version in the config:

{
  "mcpServers": {
    "cred1": {
      "command": "npx",
      "args": ["-y", "@aloth/cred1@2026.10.27", "--mcp"]
    }
  }
}

Or install a fixed version globally and point the host at the cred1-mcp binary as shown above:

npm install -g @aloth/cred1@2026.10.27

Replace 2026.10.27 with the version you reviewed; npm view @aloth/cred1 version prints the latest one.

Most weekly releases only refresh the bundled dataset (data/cred1_compact.json), but every release is built from the current main branch, so code changes ship the same way. To see what changed between two versions, compare their tags, for example v2026-10-20...v2026-10-27. The server reads the dataset from the installed package and makes no network requests. Since 2026.6.14, releases are published from GitHub Actions with npm provenance, which npm audit signatures verifies.


Library Usage

import { checkDomain, searchDomains, getStats } from '@aloth/cred1';

// Single lookup
const result = checkDomain('infowars.com');
// { domain: 'infowars.com', score: 0.073, category: 'conspiracy', level: 'low', sources: 2, domainAge: 27.3, trancoRank: 15889 }

// Not found โ†’ null
const unknown = checkDomain('nytimes.com'); // null

// Search by pattern (substring or regex)
const russian = searchDomains('\\.ru$');

// Dataset statistics
const stats = getStats();
// { totalDomains: 2673, categories: { unreliable: 2001, fake: 233, ... }, version: '1.0.0' }

Traffic-Light Scoring

Level

Score

Emoji

Meaning

low

โ‰ค 0.20

๐Ÿ”ด

High credibility risk

mixed

0.21โ€“0.50

๐ŸŸก

Unreliable or mixed signals

ok

> 0.50

๐ŸŸข

Generally considered reliable

neutral

not found

โšช

Unknown โ€” absence โ‰  trustworthy

Key Features

  • 2,674 domains with credibility scores (0.0โ€“1.0)

  • Dual-mode โ€” works as CLI tool and JavaScript library

  • Fully reproducible โ€” Python pipeline rebuilds the dataset from scratch

  • Multi-signal scoring combining source labels, domain age, web popularity, fact-check frequency, and threat intelligence

  • Privacy-preserving โ€” designed for on-device client-side deployment (no server calls needed)

  • Two openly-licensed sources โ€” no proprietary data dependencies

  • Domain normalization โ€” handles www., protocols, paths automatically

Dataset Schema

Compact Format (cred1_compact.json)

{
  "infowars.com": { "c": "c", "s": 0.073, "n": 2, "d": "1999-10-04", "r": 15889 }
}

Field

Description

c

Category code: f=fake, u=unreliable, m=mixed, c=conspiracy, s=satire, r=rumor.

s

Credibility score (0.0โ€“1.0, lower = less credible)

n

Number of independent source lists flagging this domain

d

Domain registration date (optional)

r

Tranco Top-1M rank (optional โ€” lower rank = more popular)

Full Format (cred1_current.json)

{
  "infowars.com": {
    "category": "fake",
    "credibility_score": 0.14,
    "domain_age_years": 26.4,
    "domain_registered": "1999-10-04T04:00:00Z",
    "iffy_factual": "VL",
    "iffy_bias": "FN",
    "iffy_score": 0.1,
    "factcheck_claims": 52,
    "safe_browsing_flagged": false,
    "score_age": 0.2,
    "score_cat": 0.05,
    "score_factcheck": 0.0,
    "score_iffy": 0.1,
    "score_safebrowsing": 0.05,
    "score_tranco": 0.1,
    "sources": 2,
    "tranco_rank": 4382
  }
}

See CODEBOOK.md for full field documentation.

What the score is, and what it is not

The credibility score is a domain-level signal, not an item-level verdict. It says how a source has been rated by public source-rating initiatives; it does not say whether any individual article is true. Research that uses it as a veracity label is therefore working with a provenance-implied rather than item-verified signal: material drawn from domains scoring below 0.25 can be labelled low-credibility, material from established outlets legitimate, but no single item has been fact-checked. Outlet reputation is a good but imperfect proxy, and that bound should be carried into any reuse.

Rebuilding the Dataset

cd pipeline/
python3 build_dataset.py              # Full pipeline
python3 build_dataset.py --step fetch # Download raw data only
python3 build_dataset.py --step merge # Parse + merge (requires prior fetch)
python3 enrich_dataset.py             # Add enrichment signals (API keys required)

Versioning

CRED-1 uses calendar versioning (CalVer) across all distribution channels:

Channel

Format

Example

GitHub Release

v2026-06-13

Tag + Zenodo archive

npm package

2026.6.13

Same date, dot-separated (valid semver)

A new version is released weekly with rescored domains. The npm package updates automatically with each GitHub release โ€” no separate version scheme needed.

To pin a specific dataset version:

npm install @aloth/cred1@2026.6.13

Production Integrations

  • Trackless Links โ€” Safari extension for iOS and macOS that checks links locally against CRED-1 (reviewed in Mac & i 4/2026)

  • RogueGPT โ€” Uses CRED-1 to identify low-credibility source domains for controlled fake-news stimulus generation

  • HuggingFace โ€” Dataset mirror for ML pipelines

Contributing

Know a domain that should be in the dataset? Report a missing domain with evidence.

We accept community-reported domains that meet at least one of these criteria:

  • Listed by Media Bias/Fact Check (MBFC)

  • Flagged by an IFCN-certified fact-checker

  • Subject to press council or regulatory action

  • Documented in Wikipedia with credibility concerns

  • Referenced in published academic research

Accepted domains are added to the pipeline and appear in the next weekly dataset release.

Citation

If you use CRED-1 in your work, please cite both the paper and the dataset version you used. The paper describes the method; the Zenodo record pins the exact data, which is what makes your results reproducible.

Paper:

@misc{loth2026cred1,
  author       = {Loth, Alexander and Kappes, Martin and Pahl, Marc-Oliver},
  title        = {{CRED-1}: An Open Multi-Signal Domain Credibility Dataset for Automated Pre-Bunking of Online Misinformation},
  year         = {2026},
  howpublished = {Preprint},
  doi          = {10.2139/ssrn.6448466},
  url          = {https://ssrn.com/abstract=6448466},
  urldate      = {2026-08-25}
}

Dataset:

@dataset{loth2026cred1data,
  author       = {Loth, Alexander},
  title        = {{CRED-1}: An Open Multi-Signal Domain Credibility Dataset},
  year         = {2026},
  publisher    = {Zenodo},
  version      = {v2026-03-17},
  doi          = {10.5281/zenodo.18769459},
  url          = {https://doi.org/10.5281/zenodo.18769459}
}

The DOI above always resolves to the latest release. To cite a specific weekly snapshot, use the version DOI shown on that release's Zenodo page.

CRED-1 is one strand of a wider research program on generated disinformation. The domain scores are used to select low-credibility sources for stimulus generation in RogueGPT:

Project

Description

JudgeGPT

Empirical platform for evaluating AI-generated news authenticity

RogueGPT

Controlled stimulus generator; draws fake-news sources from CRED-1 scores

verification-crisis

Expert survey on GenAI disinformation threats and countermeasures

Origin Lens

iOS app for C2PA content credentials and EXIF verification

provenance-linkage

Reproducibility bundle for a benchmark audit of AI-text detection

Companion data deposits

CRED-1 is archived alongside three companion datasets, which are versioned together so that they can be cited as one coherent set:

Deposit

Concept DOI

Current version

RogueGPT Stimulus Corpus

10.5281/zenodo.18703137

22225536 (v1.2.0)

JudgeGPT Human Perception Data

10.5281/zenodo.18703384

22226580 (v1.2.0)

Expert Survey

10.5281/zenodo.18703600

22226924 (v2.1.0)

  • Interrupting the Chain: Human Perception of AI-Generated Disinformation Through a Kill Chain Lens (INFORMATIK 2026, LNI). Positions domain-level credibility as a Delivery-stage signal. arXiv:2608.21389

  • Blessing or Curse? A Survey on the Impact of Generative AI on Fake News (2024). arXiv:2404.03021

License

  • Dataset: CC BY 4.0. Copyright 2025-2026 Alexander Loth.

  • Code & CLI: MIT

The dataset is an aggregation of domain-level ratings from public source-rating initiatives. The aggregation, scoring and documentation are this project's own work and are released under CC BY 4.0; the underlying ratings remain attributable to their respective initiatives, which are named per record and listed in ATTRIBUTION.md. No access restriction applies to the dataset.

Author

Alexander Loth โ€” alexloth.com ยท @xlth ยท ORCID

Available Tools

5 tools
batch_checkA

Check multiple domains at once (max 100). Returns an array of results with the same fields as check_domain. Domains not found in the dataset are included with a "not_found" flag.

NameRequiredDescriptionDefault
domainsYesArray of domain names to check.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden and usefully discloses that the return is an array matching check_domain fields and that missing domains are included with a 'not_found' flag. It does not state explicitly that the operation is read-only, nor does it cover error handling for invalid entries, leaving some behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the batch purpose and limit, then return shape and missing-domain behavior. No filler or repeated schema details beyond what is useful for orientation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description explains the return structure by reference to check_domain and covers the important missing-domain case. Minor gaps such as result ordering and duplicate handling remain, but the definition is sufficient to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents the domains array and maxItems=100. The description repeats the max-100 limit but adds no new parameter semantics such as expected domain format or duplicate handling, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific batch operation ('Check multiple domains at once') and distinguishes it from the single-domain sibling by naming check_domain. However, 'check' does not explain what is being checked beyond implied dataset membership, so the purpose is clear at the batch-vs-single level but not fully specified.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Check multiple domains at once' and the max-100 limit give clear guidance on when to use this batch tool rather than a single-domain call. It does not explicitly say to use check_domain for one domain or search_domains for discovery, so alternatives are implied rather than fully stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_domainA

Check a single domain's credibility score and category using the CRED-1 dataset. Returns score (0.0โ€“1.0, lower = less credible), category, traffic-light level, and metadata.

NameRequiredDescriptionDefault
domainYesDomain name to check (e.g. "infowars.com", "bbc.com"). www. and protocols are stripped automatically.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does well on output semantics โ€” score scale with direction (0.0โ€“1.0, lower = less credible), plus category, traffic-light level and metadata โ€” but says nothing about what happens when a domain is absent from the dataset, or about rate limits or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, with the action and its scope front-loaded before the return-value detail. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read lookup with no output schema, the description covers purpose, data source and return shape well. The notable gap is not-found / no-data behavior, which an agent calling with an arbitrary domain would want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents examples and the automatic stripping of 'www.' and protocols. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check a single domain's credibility score and category') plus the underlying dataset (CRED-1). The word 'single' implicitly separates it from batch_check, and the return fields listed make the scope fully unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'single domain' hints that batch_check is the right tool for multiple lookups, but no alternative is named and no when-not condition is stated. An agent can infer the routing but must do the work itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_categoriesA

List all credibility categories with their descriptions, typical score ranges, and domain counts from the dataset.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does convey that this is a static reference enumeration with no side effects and tells what fields come back. It says nothing about result size, ordering, caching, or whether the category set is fixed, which matters for an agent planning a loop.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; every clause names a concrete returned field rather than restating the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-param, no-output-schema, no-annotation read tool, the description gives enough to call it correctly and to know what comes back. The only shortfall is the missing hint about how it relates to get_stats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly implies no input is needed by describing only return content.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('List') plus resource ('credibility categories') with an enumeration of the fields returned (descriptions, score ranges, domain counts). It is clearly distinct from check_domain / search_domains / batch_check, though it does not explicitly contrast itself with the potentially confusable sibling get_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the reference-lookup call to make before filtering by category, but the description never states when to call it or when to prefer get_stats instead. No exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statsA

Get summary statistics for the CRED-1 dataset: total domain count, per-category breakdown, and dataset version.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden; 'Get' implies a read-only, zero-side-effect operation and the mention of 'dataset version' hints at data vintage. However, it says nothing about whether figures are cached or live, how often they refresh, or the cost/latency of the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb and resource and then enumerates returns with a colon list. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned statistics (domain count, category breakdown, version), which is what an agent most needs. The only gap is behavioral context around freshness and whether the summary is cached.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters and the schema is an empty object, so baseline 4 applies. The description correctly adds no parameter discussion, since there is nothing to parameterize.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb ('Get') and resource ('summary statistics') and enumerates the three returned fields, so an agent knows exactly what comes back. It does not explicitly distinguish itself from get_categories, which is the closest sibling and could plausibly be confused with the 'per-category breakdown' portion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus alternatives such as get_categories or search_domains, and no prerequisites or exclusions are given. Usage is only inferable from the fact that it returns an overview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_domainsA

Search for domains matching a substring or regex pattern. Useful for discovering all entries related to a topic or checking variations of a domain name.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default 20, max 200).
patternYesSubstring or regex pattern to match against domain names (case-insensitive).

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing beyond what the schema already says. It does not say whether matching is anchored, how results are ordered, whether the search is exhaustive or truncated, or what an 'entry' contains โ€” only the regex support is behavioral, and that is duplicated in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the core purpose front-loaded before the usage hint. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should hint at what a match returns (domain entries, metadata) and how results are bounded, but it stops at the input side. Adequate for a simple two-parameter search, but there are clear gaps for an agent interpreting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'pattern' and 'limit' fully documented including the default of 20 and max of 200. The description adds no parameter detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (domains) with the matching mode (substring or regex). The distinction from check_domain is implied by 'search' vs 'check' but never made explicit, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two concrete use cases: discovering entries related to a topic and checking variations of a domain name. It never explicitly excludes or routes to check_domain/batch_check, which risks overlap with 'checking variations,' but the context is clear enough to act on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • First observedbatch_check
    • First observedcheck_domain
    • First observedget_categories
    • First observedget_stats
    • First observedsearch_domains

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: single lookup, bulk lookup, pattern search, dataset-level stats, and category metadata. There is no realistic scenario where an agent would confuse check_domain with search_domains or get_stats, and batch_check is explicitly distinguished by its multi-domain input and result array.

Naming Consistency4/5

Four tools follow a clean verb_noun pattern (check_domain, search_domains, get_stats, get_categories). batch_check deviates slightly by putting the noun first, but it remains readable and the intent is obvious, so this is a minor deviation rather than an inconsistency problem.

Tool Count5/5

Five tools is a tight, well-scoped surface for a domain credibility dataset: one tool per natural operation (read one, read many, search, stats, taxonomy). Nothing appears redundant or missing at the count level.

Completeness5/5

For a read-only dataset server, the surface covers all expected workflows: single lookup, bulk lookup with not_found handling, discovery via substring/regex search, aggregate statistics, and category taxonomy. There are no dead ends an agent would hit in normal use.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Search 1,500+ pre-verified, cited knowledge units across 16 domains. 6 tools: query, batch query, get unit, list domains, suggest topics, report issues. Free, no API key required.
    6
    237 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    URL intelligence for AI agents. One URL in, structured security and data quality signals out across 7 dimensions. 13 tools, risk score 0-100 with 23 configurable weights.
    16
    22 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    Pay-per-call API that verifies whether a domain belongs to a real business. Returns a verdict (real/likely_real/uncertain/likely_fake/fake), a 0-100 score, and signals (WHOIS via RDAP, SSL via Certificate Transparency, homepage LLM judgment, contacts, social) โ€” for KYB, vendor screening, fraud checks, and lead qualification.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI agents with zero-cost, zero-dependency trust evaluation for domains, URLs, wallets, APIs, and IPs, returning a 0-100 score with SSL, DNS, WHOIS, security header, and content sub-scores, plus batch comparison to rank multiple targets.
    MIT