Skip to main content
Glama

Check mailing list

check_mailing_list
Read-onlyIdempotent

Use this when the user wants to check or clean a mailing list or contact list before printing labels ("turn my contact list into mailing labels", "address labels from excel spreadsheet", "clean up my address list"): reads an uploaded CSV/XLSX file or a typed list, shows which columns were used for name, street, city, state and ZIP, formats each address the USPS way, and reports missing streets, cities, states, ZIP codes, unknown state codes and duplicates, with a cleaned CSV download. Does not verify that an address exists, does not look up ZIP+4, and does not print the labels (use generate_label_sheet).

Input Schema

NameRequiredDescriptionDefault
fileNoOptional uploaded mailing list: a CSV, TSV or Excel .xlsx file with one row per label, e.g. contacts.csv or Christmas list.xlsx. Name, address, city, state and ZIP columns are detected from the headings (Google Contacts, Outlook, Etsy and Shopify exports work).
kindNoWhat the labels are for: address (mailing labels, default), return_address, shipping, name_badge, place_card, file_folder or general text. Sets the default sheet and text style.
sortNoOrder of the labels: none (list order, default), zip, name or last_name.
sheetNoExcel sheet name to read, e.g. Guests. Default: the first sheet with data.
labelsNoThe typed or pasted list, one item per label. Either address objects, e.g. [{"name":"Jane Smith","address1":"123 Main St","address2":"Apt 4B","city":"Springfield","state":"IL","zip":"62704"}], or plain text labels with lines separated by \n, e.g. ["Jane Smith\n123 Main St\nSpringfield, IL 62704"]. For name badges use {"name":"Ana Lopez","title":"Engineer","company":"Acme"}.
columnsNoOptional column mapping when the headings are unusual: heading text or column letter per field, e.g. {"name":"Guest","address1":"Mailing Street","zip":"F"}.
uppercaseNoUSPS style: all capitals without periods or commas (e.g. SPRINGFIELD IL 62704). Default false.
has_headerNoWhether the file's first row is column headings. Default: detected (headings like Name, Address, ZIP or a first row without numbers).
include_countryNoAlso print USA on US addresses that have a country. Default false (non-US countries always print).
remove_duplicatesNoPrint identical labels only once. Default false (duplicates are counted and reported).

Output Schema

NameRequiredDescriptionDefault
notesYes
issuesYes
sourceYes
previewYes
recordsYes
ok_countYes
downloadsYes
file_nameYes
duplicatesYes
columns_usedYes
issues_countYes
problem_countsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description goes further by disclosing what is actually performed (column detection, USPS formatting, missing-field and duplicate reporting, cleaned CSV output). The explicit exclusions — no address verification, no ZIP+4 lookup, no label printing — are exactly the kind of boundary an agent needs before promising a user an outcome.

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?

Two sentences: the usage trigger and example utterances come first, then the exclusions. Every clause carries information, though the first sentence is long and dense enough that the list of reported problems and the 'cleaned CSV download' are easy to skim past.

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 10-parameter, fully optional, nested-input tool with an output schema present, the description covers the input modes, the processing behavior, and the boundaries; return values are correctly left to the output schema. The only thing an agent might still wonder about — limits on list size or what happens on unsupported file types — is minor and partly available in the schema.

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 per-parameter descriptions already carry the detail and a baseline of 3 would be defensible. The description earns an extra point by explaining the two input modes (uploaded file vs typed list) and the automatic behaviors — heading-based column detection and USPS formatting — that the schema alone does not make obvious.

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 or clean a mailing list') plus the concrete operations: reads a CSV/XLSX or typed list, detects name/street/city/state/ZIP columns, USPS-formats addresses, and reports missing fields and duplicates. It explicitly distinguishes itself from the sibling generate_label_sheet, so an agent can route correctly without opening either schema.

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?

Opens with an explicit trigger ('use this when the user wants to check or clean a mailing list before printing labels') and backs it with three quoted user phrasings. It also names the specific alternative for the adjacent task ('does not print the labels (use generate_label_sheet)'), giving both when-to-use and when-not-to-use.

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