Skip to main content
Glama

Check Typosquat

check_typosquat
Read-only

Check whether a package or MCP registry server name is suspiciously close to a known name via edit distance, confusable characters, affixes, and scope changes. Use before installing unverified names.

Instructions

Check whether a package or MCP registry server name is suspiciously close to a known MCP server or package name: edit distance, confusable characters, affixes, and scope or namespace changes (TS001-TS006).

Use when: the user asks whether a name looks like a known MCP server or package, or is about to install something by a name they typed or were given. Prefer another tool when: the name is one the user already trusts and has verified, or the user wants a full check of a server (audit_server).

The name is compared against a dated reference list, never live popularity data. The reference list (data/reference_names.json) is dated 2026-11-03 (its generated_at field, returned in each report as data_sources[].as_of) and has 55988 entries: 6 PyPI and 4 npm names, which are curated names only, and 55978 registry names, crawled from the MCP Registry plus curated ones. A name close to none of them is not shown to be legitimate: the list is incomplete by nature. Findings are indicators, not verdicts, and a report with no findings is not proof of safety. coverage lists the checks that ran and those skipped, with reasons.

Input Schema

NameRequiredDescriptionDefault
nameYesPackage name, or registry server name for registry.
ecosystemYespypi, npm, or registry (MCP Registry server names).

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Goes well beyond the readOnlyHint/openWorldHint annotations by disclosing that comparison is against a dated static reference list, never live popularity data, and by stating the list's as_of date, size, and per-ecosystem breakdown. It also correctly frames findings as indicators rather than verdicts and warns that no findings is not proof of safety, consistent with openWorldHint=false. Minor gap: the TS001-TS006 finding codes are cited but never explained.

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

Conciseness4/5

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

Front-loads purpose, then when-to-use, then when-not-to-use, then caveats, so an agent can stop reading early. The caveat paragraph is long and includes very granular figures (55988 / 6 / 4 / 55978) plus an unexplained TS code range, some of which could be trimmed without losing meaning.

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?

Covers scope, caveats, and reliability limits thoroughly for a two-parameter read-only check, and the presence of an output schema relieves it of describing return values. It even flags that the report includes coverage and data_sources[].as_of, tying back to the reference list's dated nature.

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 coverage is 100% and the schema already documents both parameters, including the enum values, so the baseline is 3. The per-ecosystem entry counts (6 PyPI, 4 npm, 55978 registry) implicitly signal how much coverage each ecosystem value carries, which is modest added meaning but not parameter-level guidance.

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 package or registry server name) plus the exact signals examined: edit distance, confusable characters, affixes, scope/namespace changes. This is clearly narrower than the sibling audit_* tools, which check whole packages or servers.

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

Usage Guidelines5/5

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

Provides an explicit 'Use when' trigger (user asks whether a name is suspicious, or is about to install a name they typed or were given) and an explicit 'Prefer another tool when' branch routing full-server checks to audit_server. Both the positive and negative cases are named.

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