Skip to main content
Glama

CRM CSV Preflight (Sales List Rescue)

CSV preflight check (detect only)

preflight_csv
Read-onlyIdempotent

Checks a contact or lead CSV (passed as text, up to 500 data rows and 64 KiB) before a CRM import and reports what it finds: duplicate emails (matched ignoring case and surrounding spaces), invalid email syntax, role or shared inboxes (info@, sales@ and similar), blank required fields (placeholders like N/A, null and - count as blank), phone numbers not written as + country code and digits only (with a suggested form when the fix is mechanical), country and state spelling drift, mixed or ambiguous date formats, and file problems (garbled characters, ragged rows, formula-like cells, stray spaces, header issues). Detection only: it changes nothing, returns no cleaned file, and does not store or log your CSV. Pattern-based; it does not check that mailboxes exist. Same checks as the free Sales List Rescue CSV preflight checker on pureservices.store.

Input Schema

NameRequiredDescriptionDefault
csvYesThe full CSV text including the header row. Comma, semicolon, tab or pipe delimited (auto-detected).
email_columnNoHeader name of the email column. Optional; auto-detected when omitted.
phone_columnNoHeader name of the phone column. Optional; auto-detected when omitted.
required_columnsNoHeader names that must not be blank. Optional; defaults to the detected email, first name, last name and company columns.
default_country_codeNoCalling code assumed for phone numbers without a + prefix: 1 (US/Canada), 44, 61, 49, 33, 91, or "" for no default.1

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, non-destructive and closed-world, and the description still adds substantive context on top: no data retention or logging, no cleaned file returned, pattern-based matching that does not verify mailbox existence, and hard input limits. It also discloses the exact normalization rules (case- and whitespace-insensitive email matching, placeholders counted as blank), which is behavior an agent could not infer from the annotations.

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 constraint and detection-only qualifier are front-loaded, and the long finding enumeration is a single dense but scannable run. Every listed category corresponds to actual output content, so nothing is filler. It is on the long side and could be split into a bullet-style list for faster parsing.

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 carries the burden of telling the agent what comes back, and it does so by enumerating the finding categories plus a mechanical phone fix suggestion. What is missing is the shape of the result (per-row versus aggregate counts, severity ordering) and guidance for CSVs exceeding the 500-row cap.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it defines what counts as blank for required columns (N/A, null, '-'), explains that phone fixes are only suggested 'when the fix is mechanical', and implies the role of default_country_code through the '+ country code and digits only' rule. It stops short of explaining column auto-detection or the delimiter handling, which remain schema-only.

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 plus resource: it checks a contact/lead CSV before CRM import and enumerates the finding categories it produces (duplicate emails, invalid syntax, role inboxes, blank required fields, phone format, geo drift, date formats, file problems). An agent knows immediately what the tool does. It never mentions the sibling preflight_sample, so it does not fully differentiate itself from that alternative.

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?

Placement in the workflow is explicit ('before a CRM import') and the boundary is drawn sharply: 'Detection only: it changes nothing, returns no cleaned file, and does not store or log your CSV.' The row/size limits (500 rows, 64 KiB) tell the agent when the input is too large. The one gap is that it never says to use preflight_sample instead when the input exceeds those limits.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources