databutler-provenance
Server Details
Live trust signals for domains & packages: age, registrar, typosquat resemblance.
- Status
- Healthy
- Uptime
- 100.0% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools target clearly distinct resource types: domain_provenance handles domain RDAP/typosquat checks, while package_provenance handles npm/PyPI package provenance. An agent can easily tell them apart with no overlap.
Both tools follow the same noun_provenance pattern (domain_provenance, package_provenance), using consistent snake_case and parallel structure. There is no mixing of conventions.
Two tools is thin for a server with a general provenance theme, even though each tool is broad. The set feels borderline rather than clearly well-scoped, since more provenance targets could naturally be added.
Within the implied scope of domain and package provenance, the tools cover key signals like registration/first-publish dates, maintainers, and typosquat checks. However, a broader provenance server might also include other artifact types such as certificates, containers, or repositories.
Available Tools
2 toolsdomain_provenanceDomain provenanceARead-onlyIdempotentInspect
Who runs this domain? Live RDAP lookup: registration date and age, registrar, nameservers, status, whether the registrant is redacted, plus a typosquat check (edit-distance / brand-substring) against high-value brands. A very recently registered domain resembling a bank or big brand is a classic phishing signal — but report it as a signal, not a conclusion.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | e.g. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent and open-world behavior, so the description is not carrying the safety burden. It adds real value beyond them by disclosing the returned data set (registration age, registrar, nameservers, status, registrant redaction) and the edit-distance/brand-substring typosquat logic, plus an interpretation caveat. It omits failure behavior (e.g. no RDAP record, rate limiting).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core question, then mechanism, then outputs, then the interpretive caveat. Three sentences, each carrying distinct information with no repetition of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating what the lookup returns, and the single parameter is trivial. For a one-argument read-only lookup, an agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single required 'domain' parameter with 100% schema description coverage, so the schema already documents the input. The description adds no format or normalization guidance beyond the schema's 'example.com' example — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific question ('Who runs this domain?') and a concrete mechanism ('Live RDAP lookup'), then enumerates the resource attributes returned (registration date/age, registrar, nameservers, status, redaction) plus a typosquat check. The domain-vs-package distinction from the sibling package_provenance is obvious from the resource itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context — recently registered domains resembling banks or big brands as a phishing signal — and instructs how to report the result ('as a signal, not a conclusion'). It does not name alternatives or state exclusions, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
package_provenancePackage provenanceARead-onlyIdempotentInspect
Who publishes this package, and is it a typosquat? Live npm or PyPI lookup: first-publish date and age, release count, latest version, maintainers/author, linked repo, plus a typosquat check against popular package names. Use when an agent is about to install or recommend an unfamiliar dependency.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | package name, e.g. express or requests | |
| ecosystem | Yes | npm or pypi |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: this is a live network lookup (freshness/latency implication) and it enumerates the fields returned, including a typosquat heuristic. It does not mention failure modes for unknown packages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the two questions an agent actually has, then the data returned, then the usage condition. Dense but every clause carries information; the interrogative opener is slightly less efficient than a declarative verb phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields (first-publish date/age, release count, latest version, maintainers, linked repo, typosquat result) and the scenario that warrants a call. Nothing an agent needs to decide or invoke is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, so the schema already documents name and the npm/pypi enum. The description reinforces the ecosystem scope but adds no syntax, format, or edge-case detail beyond it; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (publishers of a package, typosquat status) plus the exact lookup source (live npm or PyPI). It is clearly distinguishable from the sibling domain_provenance because it names the artifact type it operates on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when an agent is about to install or recommend an unfamiliar dependency" gives a concrete triggering condition. There are no explicit exclusions or alternatives named, but the context is unambiguous.
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.
2 tool updates
- First observed
domain_provenance - First observed
package_provenance
Related MCP Connectors
Supply chain risk scoring for npm, PyPI, Cargo, and Go. 9 tools. Behavioral signals.
Package intelligence for AI agents across npm, PyPI, crates.io and deps.dev. No API keys.
Package intelligence for AI agents across npm, PyPI, crates.io and deps.dev. No API keys.
Check npm packages for typosquats, hallucinated names, install scripts and risky new releases.
Related MCP Servers
- AlicenseAqualityCmaintenanceSupply chain risk scoring for npm, PyPI, and GitHub repos850 npm8MIT

presend-mcpofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to vet npm and PyPI packages before installation, reporting typosquats, vulnerabilities in the selected version, publisher changes, and names that don't exist or were published within the last 30 days. It also exposes DNS, WHOIS, email, JWT and file/image utilities as tools over Streamable HTTP, with no signup or API key required.MIT- AlicenseNot gradedqualityBmaintenanceProvides 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
- FlicenseNot gradedqualityDmaintenanceScans npm, PyPI, and GitHub for typosquatting and brand impersonation, risk-scores findings, and drafts takedown notices.-
Glama MCP Gateway
Add one secure layer between your agents and this server.