https://api.unprofane.com/mcp speaks the Model Context Protocol over Streamable HTTP, JSON responses only. Authenticate with the same bearer key as /v1; publishable keys are refused.
Tools
| Tool | Does |
|---|---|
check_text |
One check. Arguments are text, context, policy, mode, mask, as in /v1/check. |
check_batch |
Up to 100 items with ids. |
get_integration_snippet |
A copy-paste recipe for a platform (http, supabase, clerk, firebase, auth0, better-auth, unity, godot) in a language (curl, javascript, typescript, python, csharp, gdscript, go, php, ruby). |
Adding it to an agent
Claude Code:
claude mcp add --transport http unprofane https://api.unprofane.com/mcp --header "Authorization: Bearer up_live_YOUR_KEY"
Cursor, in .cursor/mcp.json:
{
"mcpServers": {
"unprofane": {
"url": "https://api.unprofane.com/mcp",
"headers": { "Authorization": "Bearer up_live_YOUR_KEY" }
}
}
}
VS Code, in .vscode/mcp.json, asking for the key once instead of keeping it in the file:
{
"inputs": [
{ "type": "promptString", "id": "unprofane-key", "description": "Unprofane key", "password": true }
],
"servers": {
"unprofane": {
"type": "http",
"url": "https://api.unprofane.com/mcp",
"headers": { "Authorization": "Bearer ${input:unprofane-key}" }
}
}
}
Any client that takes a Streamable HTTP server URL and a header works the same way. The first message is initialize; the server answers with protocol version 2025-06-18 and the tool list.
What it is for
An agent asked to “add a profanity filter” can fetch the recipe for the stack it is in, and an agent moderating a queue can check text without leaving its loop. It is the same engine, the same key, the same usage counting.