Unprofane
Should I allow this text? Profanity and toxicity checks that are hard to fool, with the evidence.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"unprofane": {
"url": "https://api.unprofane.com/mcp"
}
}
}Remote endpoints
https://api.unprofane.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢check_text(text, context, policy, mode, mask)
Decide whether a text should be allowed: profanity, slurs, threats and sexual language, including disguised spellings. Returns the action (allow, review, block), the evidence, a one-sentence reason and a censored version. Use context "username" for names shown publicly.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 10000
},
"context": {
"type": "string",
"enum": [
"general",
"username",
"display_name",
"comment",
"chat",
"gaming",
"educational",
"creative",
"review",
"custom_text"
]
},
"policy": {
"type": "string",
"enum": [
"kids",
"teen",
"standard",
"strict"
]
},
"mode": {
"type": "string",
"enum": [
"fast",
"balanced",
"thorough"
]
},
"mask": {
"type": "string",
"enum": [
"asterisk",
"first_letter",
"grawlix",
"remove"
]
}
},
"required": [
"text"
]
}🟢check_batch(items, context, policy)
Check up to 100 texts at once. Each item has an id and a text; results come back in order.
Input Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"id",
"text"
]
}
},
"context": {
"type": "string"
},
"policy": {
"type": "string"
}
},
"required": [
"items"
]
}🟢get_integration_snippet(platform, language)
A complete, runnable recipe for adding Unprofane to a platform (supabase, clerk, firebase, auth0, better-auth, unity, godot, or plain http) in a language.
Input Schema
{
"type": "object",
"properties": {
"platform": {
"type": "string",
"enum": [
"http",
"supabase",
"clerk",
"firebase",
"auth0",
"better-auth",
"unity",
"godot"
]
},
"language": {
"type": "string",
"enum": [
"curl",
"javascript",
"typescript",
"python",
"csharp",
"gdscript",
"go",
"php",
"ruby"
]
}
},
"required": [
"platform",
"language"
]
}Community
Evidence