Skip to main content
Glama
sqlscope-mcp

sqlscope-mcp

by 0xmortuex

data_quality

Read-onlyIdempotent

Audit SQLite tables with sampled SQL to find mostly NULL columns, mixed storage types, duplicate key values, dangling foreign keys, and inconsistent date formats.

Instructions

Look for data problems, using SQL over a sample of each table: columns that are mostly or always NULL (and NULL versus empty-string mixes); columns holding mixed storage types (SQLite does not enforce column types; the typeof() distribution is reported, with examples); key-like columns (id, email, uuid, ...) that contain duplicates, case/space-only duplicates, and rows identical in every non-key column; dangling foreign keys even though SQLite does not enforce them by default; and date-looking text columns whose formats are inconsistent.

table: check just this table (default: all ordinary tables). sample: rows to examine per table (100-200000).

Input Schema

NameRequiredDescriptionDefault
pathYes
tableNo
sampleNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description adds real substance beyond them: it discloses that work is done via SQL over a sample rather than a full scan, that SQLite does not enforce types or foreign keys (explaining why these checks matter), and that examples accompany the typeof() distribution. It stops short of stating runtime cost or how sampling affects confidence in the results.

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?

The core sentence is long but front-loaded and each clause names a distinct check, so nothing is wasted. The parameter notes are compactly formatted as a trailing list, keeping the actionable content first.

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?

An output schema exists, so return-value explanation is unnecessary, and the description covers what is inspected and how scope is narrowed. The remaining omissions are the meaning of 'path' and any indication of cost or result reliability under sampling, which matter for a tool that scans many tables.

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 0%, so the description carries the burden. It does add value for two of three parameters: 'table' semantics (single table vs default all ordinary tables) and 'sample' as rows examined per table with a 100-200000 range not present in the schema. The required 'path' parameter is completely unexplained, which is a notable gap given zero schema coverage.

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 ('look for data problems') and then enumerates the exact audit classes: NULL-heavy columns, mixed storage types via typeof(), key duplication, dangling foreign keys, inconsistent date formats. This is unmistakably a data-quality auditing tool and cannot be confused with siblings like query, describe_table, or find_in_db.

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 implied by the enumeration of checks, and the 'table' note establishes the default scope (all ordinary tables). However, it never says when to prefer this over running an ad-hoc query or describe_table, nor any preconditions (e.g., cost on large databases, when sampling is insufficient).

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