Unprofane
DocsMCP server

MCP server

The same engine as a Model Context Protocol server, for coding agents and assistants. Three tools, the same keys, Streamable HTTP.

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.