Skip to main content
Glama

Find and censor English swear words

check_profanity
Read-onlyIdempotent

Detect English profanity in text (word list with leetspeak, look-alike letters, repeated letters, dotted/spaced letters and hidden characters handled) and return the matched terms, their positions (UTF-16 start/end in your text) and, unless censor is false, a censored copy of the same length. Common innocent words (Scunthorpe, cockpit, Shiite, cumin) are whitelisted; it does not understand context and is English only. Text up to 10240 UTF-8 bytes; it is not stored or logged. matches is capped at 50 here (match_count is the full total). Read-only. Same engine, keys and limits as POST /v1/check.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
denyNoExtra words to flag on word boundaries, e.g. ["jerk"].
textYesThe text to check, at most 10240 UTF-8 bytes.
allowNoWords never to flag, e.g. ["hell", "damn"]. Allow wins over deny.
censorNoReturn a censored copy (default true).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
termsYes
engineNo
matchesYesMatches in text order, at most 50 here (see match_count for the total). start/end are UTF-16 indices into your text.
versionNo
censoredNoYour text with each match replaced by asterisks (same length). Omitted when censor is false.
truncatedNoTrue when matches lists fewer than match_count (over 50 here, or the API's own cap).
text_bytesNo
match_countYesTotal number of matches in the text (not capped).
has_profanityYes
matches_returnedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description still adds substantial non-obvious behavior: text is not stored or logged, matches is capped at 50 while match_count is the full total, and a censored copy of equal length is returned unless censor is false. These are exactly the traits an agent cannot infer from structured fields.

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?

A single dense sentence front-loads the core purpose before limitations, followed by tight constraint and privacy clauses. It is long but nearly every clause carries information; minor readability cost from the parenthetical enumeration of engine features.

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?

With an output schema present, return values need not be explained, yet the description still discloses limits, privacy handling, whitelist behavior, and result capping. For a read-only detection tool with no siblings, nothing needed to call it correctly 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 description coverage is 100%, so the schema already documents all four parameters (including deny/allow precedence and the censor default), putting the baseline at 3. The description adds useful context on whitelisting and output-length behavior but does not clarify the deny/allow parameters themselves beyond what the schema states.

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?

Names a specific verb and resource ('Detect English profanity in text') and immediately scopes the engine's capabilities (leetspeak, look-alike letters, hidden characters). An agent knows exactly what this tool does without opening the schema.

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?

No sibling tools exist, so routing is moot, but the description gives clear operating context: English only, no contextual understanding, whitelisted innocent words, and 'Same engine, keys and limits as POST /v1/check.' It does not state explicit when-not-to-use conditions, but the limitations paragraph functionally bounds usage.

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