Skip to main content
Glama

RemoveDuplicates.org

Remove duplicates

remove_duplicates
Read-onlyIdempotent

Remove duplicate lines from a text list, or duplicate rows from CSV/TSV text such as rows copied from Excel or Google Sheets. Uses the same engine as removeduplicates.org and returns the cleaned text with counts. Stateless: the text is processed in memory for this call only and is never stored.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keepNoWhich occurrence of a duplicate survives.first
textYesThe list or table text: one item per line, or CSV/tab-separated rows. Up to 131072 UTF-8 bytes.
trimNoIgnore surrounding spaces when comparing and return trimmed values.
orderNopreserve keeps the original order; sort returns a natural (numeric-aware) sort.preserve
formatNoauto detects CSV/TSV tables; lines compares whole lines; table forces CSV/TSV parsing.auto
headerNoTables only: keep the first row as a header outside duplicate checks and counts.
compareNoTables only: "row" compares entire rows; a zero-based column index or an array of indices compares only those columns.row
ignoreCaseNoTreat values such as Apple and apple as duplicates.
removeEmptyNoDrop blank lines or all-blank rows.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesThe cleaned text, rows joined with \n.
statsYes
formatYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavior beyond these: it is stateless ('processed in memory for this call only and is never stored') and returns 'the cleaned text with counts.' This gives the agent insight into execution and output without contradicting any annotation.

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

Conciseness5/5

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

The description is three sentences long, each serving a distinct purpose: the core action, the engine and output, and the statelessness guarantee. It is front-loaded with the primary function and contains no redundant or extraneous text, making it highly efficient and easy to parse.

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 transformation tool with a rich schema and an output schema (indicated by context), the description covers all necessary invocation context: input types, output (cleaned text with counts), and statelessness. It does not need to detail parameter behavior since the schema does that. The only minor gap is lack of explicit edge-case examples, but this is not critical given the schema's thoroughness.

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?

The input schema provides 100% coverage, with detailed descriptions for all 9 parameters, including enums, defaults, and semantics. The tool description adds no extra parameter guidance—it only restates the general purpose. Since the schema fully documents parameters, a baseline score of 3 is appropriate; the description does not need to compensate.

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?

The description states a clear, specific verb and resource: 'Remove duplicate lines from a text list, or duplicate rows from CSV/TSV text.' It also names the engine and mentions the stateless nature, leaving no ambiguity about what the tool does. Since there are no sibling tools, differentiation is unnecessary, and the scope is explicitly defined.

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?

The description clearly indicates when to use the tool: for text lists or table data such as rows from Excel/Google Sheets. It provides concrete input examples and states the stateless behavior. While it doesn't explicitly say when not to use it, the absence of siblings makes this less critical; the context is sufficiently clear.

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