Skip to main content
Glama

decontaminate texts

decontaminate_texts

Detect texts overlapping public benchmark test sets before training, preventing contamination and ensuring benchmark scores reflect true capability rather than memorized answers.

Instructions

Checks a batch of texts against the public-benchmark contamination index (13-word shingles of well-known test splits) and reports which inputs share material with which benchmark — use it before training so later benchmark scores measure capability, not memorised answer keys. POST /v1/datasets/decontaminate (API-key scope: evals:write). Returns: { checked: <int, texts actually checked; 0 when the index was unavailable>, index: { version, generatedAt (camelCase — passed through verbatim), benchmarks: [{id, name, rows}] } | null, hits: [{ index: , benchmark: , benchmark_id, matches: }], contaminated: <sorted unique int[] of input positions with any hit> }. Notes: 400 on invalid JSON, when texts is not an array of strings, or when it exceeds 5,000 items. index: null means the benchmark index was unavailable and NOTHING was checked — never treat that as clean. 'Clean' is a claim about THOSE benchmarks on THAT index date only. Free (no judging, no wallet spend). Response is Cache-Control: no-store. One text can produce multiple hits (one per benchmark it overlaps).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textsYesArray of strings to check (each item must be a string). At most 5,000 per call. Positions in this array are the `index` values in the response.
Install Server

TDQS

A4.4/5.0
Behavior5/5

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

Goes far beyond the annotations, which only carry readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description discloses the critical trap that 'index: null means... NOTHING was checked — never treat that as clean,' scopes 'clean' to those benchmarks on that index date, notes one text can produce multiple hits, documents the 400 error conditions, and states it is free with Cache-Control: no-store. No contradiction with 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 description is long but every section earns its place: purpose, usage timing, endpoint/scope, full return shape, error conditions, and caveats. With no output schema present, the detailed return documentation is necessary rather than padding. Slightly dense, but the tricky null-index semantics justify the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a tool of this complexity. Since there is no output schema, the description fully documents the return object, error paths, and the most dangerous behavior (null index ≠ clean) that could silently corrupt downstream training decisions. The annotations cover the mutation/idempotency profile and the schema covers the single parameter, so nothing needed for a correct call is missing.

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%: the schema already documents that `texts` must be an array of strings, capped at 5,000 items, and that array positions map to response `index` values. The description adds the 400-on-invalid-input behavior and repeats the 5,000 cap, but the parameter's meaning itself is fully carried by the schema, so the baseline 3 applies.

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 specific verb+resource: 'Checks a batch of texts against the public-benchmark contamination index... and reports which inputs share material with which benchmark.' The mention of 13-word shingles and well-known test splits makes the mechanism concrete, and nothing in the ~130-tool sibling list covers benchmark contamination checking, so the tool is unmistakably distinguished.

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?

Explicitly instructs 'use it before training so later benchmark scores measure capability, not memorised answer keys' — a clear when-to-use directive with the rationale behind it. It doesn't name alternatives or when-not-to-use cases, but there is no competing contamination-check tool among the siblings, so that omission is not a practical gap.

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

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/omnia-v/errorbar-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server