jev-screen-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jev-screen-mcpCheck if this text is spam: 'Buy now, limited offer!'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jev-screen-mcp
Content-moderation gate as a single-purpose MCP tool, powered by Jev (TypeSafe's System One decision model). One MCP, one job.
Real-world cost on OpenRouter — 4.9M tokens · $0.19 over 7 days:
Turns text into a typed decision — no prose, no Jev API knowledge needed from the host agent.
What it does
screen_content(text, categories?) returns a structured verdict instead of free-form text:
Field | Type | Meaning |
| number (0–1) | P(spam / unsolicited promotion) |
| number (0–1) | P(toxic / abusive / harmful) |
| string | Best-fit label from the category list |
| number (0–3) | Index into the severity scale |
|
| Human-readable severity |
| number (0–1) | Model's calibrated certainty on the verdict |
| boolean |
|
|
| What the agent should do next |
Decision gate:
confidence < 0.5→reviewelse if
violates_policy→blockwhenseverity_score >= 2.5(severe), otherwisereviewelse →
allow
⚠️ Only auto-act on
allow/blockwhenconfidenceis high. A highspam_probalone is never permission toblock— gate onconfidence.
Default category taxonomy (7 labels): spam_promo, harassment, hate,
self_harm, sexual, violence, benign. Pass categories to override.
Related MCP server: chuangsiai-mcp
Install & build
npm install
npm run buildThe compiled server is at dist/index.js.
Add to your MCP client
{
"mcpServers": {
"jev-screen": {
"command": "node",
"args": ["/absolute/path/jev-screen-mcp/dist/index.js"],
"env": { "TYPESAFE_API_KEY": "ts_xxx" }
}
}
}No key? It still runs in mock mode (JEV_MCP_MOCK=1, or simply no TYPESAFE_API_KEY) so you can try it offline.
Example call
{
"text": "BUY NOW!! limited offer, click here for free crypto prize, act now!!!"
}returns something like:
{
"spam_prob": 0.9,
"toxic_prob": 0.1,
"category": "spam_promo",
"severity_score": 3,
"severity_label": "severe",
"confidence": 0.7,
"violates_policy": true,
"action": "block"
}Model endpoint
Works with any Jev-compatible endpoint. Default is the TypeSafe API
(https://api.typesafe.ai/v1/systemone); override with JEV_BASE_URL
(e.g. an OpenRouter-compatible route) and set TYPESAFE_API_KEY to your
provider key.
Environment variables
Variable | Default | Description |
| — | TypeSafe Jev key. Absent ⇒ mock mode |
|
| Set |
|
| Model id sent to the endpoint |
|
| API base URL |
|
| Per-call timeout (ms) |
Mock mode
With no key (or JEV_MCP_MOCK=1) the server answers deterministically from
keyword heuristics — useful for demos, tests, and offline development. A single
derived risk signal drives every field, so the mock stays internally consistent
(spammy text → high spam_prob, severe, block).
Diagnostics
node dist/index.js doctor # human-readable
node dist/index.js doctor --json # machine-readablePrints mock/live mode, key presence, model, and base URL.
Test
npm testRuns a smoke test against the compiled output in deterministic mock mode.
Notes
Jev is a decision model: pure text in → typed decision out. It does not read images or generate prose.
Keep text within Jev's ~64k-token total budget.
Keep the human in the loop: route anything that is not a high-confidence
allow/blockto a person.
License
MIT
Available Tools
1 toolscreen_contentA
Content-moderation & classification gate powered by Jev (System One decision model). Given text, returns spam and toxicity probabilities, a category, a severity score, a calibrated confidence, and an action (allow / review / block). Low confidence routes to review; clear, severe violations route to block.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text to screen. | |
| categories | No | Optional custom category list (replaces defaults). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does well by disclosing the decision logic: low confidence routes to review, severe violations route to block, and it enumerates the returned action values. It omits deeper concerns like auth, data retention, or failure modes, but the core runtime behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the purpose, enumerates outputs, and gives the routing rule in two sentences. No wasted words; the Jev/System One mention adds context without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description covers the main return fields and the action decision rules well. It does not specify things like default categories or severity scale boundaries, but these are secondary and the schema covers the 'categories' parameter adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the two parameters are already documented. The description adds little beyond saying 'given text' and echoing the categories replacement behavior already in the schema; it reaches the baseline but does not enrich parameter meaning further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a content-moderation/classification gate and lists the specific outputs it returns (spam/toxicity probabilities, category, severity score, confidence, action). It lacks a sibling comparison, but the purpose is unambiguous and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the phrasing 'Given text, returns...'—an agent can infer this is for screening text before allowing it. However, there is no explicit when-to-use statement, no exclusions, and no alternative tool to route toward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
screen_content
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion between tools. The single tool has a clear, unique purpose.
The lone tool name 'screen_content' follows a consistent verb_noun pattern. Since there is only one tool, naming is trivially consistent.
A single tool is borderline for a server named 'jev-screen-mcp'. It could be well-scoped for a narrow text-screen function, but typically a moderation server would offer more operations (e.g., different content types).
The tool covers text classification and decision-making, but lacks other content modalities (image, video, URL) and batch processing. This is a notable gap for a general 'screen' service, though it may be intentionally limited to text.
Maintenance
Related MCP Connectors
Deterministic trust gate for AI output: leaked-secret, prompt-injection & PII in one call.
Sentiment, toxicity, entity extraction, PII, translation, summary, QA, fraud scoring, safety audit.
Prompt injection detection API for AI agents. Scan untrusted text before passing it to an LLM.
- mcpOAuthai.tuteliq
Detect grooming, bullying, fraud, and 16+ online threats across text, voice, image, and video.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time content safety protection for large language models by detecting and preventing risks in both input and output content across multiple dimensions including compliance, ethics, and security.MIT
- AlicenseNot gradedqualityDmaintenanceProvides real-time content security for large language models by identifying and intercepting risks across compliance, ethics, and safety dimensions. It enables secure input and output monitoring through a customizable policy engine using an SSE-based interface.1MIT
- AlicenseNot gradedqualityDmaintenanceContent moderation and profanity detection MCP server with 19 tools, 24 language support, leetspeak/Unicode obfuscation detection, context-aware analysis, batch processing, and user tracking for AI-powered content safety.7 npm63MIT
- AlicenseNot gradedqualityAmaintenanceEnables scanning LLM prompts and responses for prompt injection, jailbreaks, PII leakage, secret leakage, and other malicious content using deterministic rules, returning verdicts and safe redacted text.1MIT