Skip to main content
Glama
jiawei686

jev-screen-mcp

by jiawei686

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

spam_prob

number (0–1)

P(spam / unsolicited promotion)

toxic_prob

number (0–1)

P(toxic / abusive / harmful)

category

string

Best-fit label from the category list

severity_score

number (0–3)

Index into the severity scale

severity_label

benign | mild | moderate | severe

Human-readable severity

confidence

number (0–1)

Model's calibrated certainty on the verdict

violates_policy

boolean

spam_prob > 0.5 or toxic_prob > 0.5

action

allow | review | block

What the agent should do next

Decision gate:

  • confidence < 0.5review

  • else if violates_policyblock when severity_score >= 2.5 (severe), otherwise review

  • else → allow

⚠️ Only auto-act on allow / block when confidence is high. A high spam_prob alone is never permission to block — gate on confidence.

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 build

The 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_API_KEY

TypeSafe Jev key. Absent ⇒ mock mode

JEV_MCP_MOCK

0

Set 1 to force the deterministic offline mock

JEV_MODEL

jev-latest

Model id sent to the endpoint

JEV_BASE_URL

https://api.typesafe.ai/v1/systemone

API base URL

JEV_MCP_TIMEOUT_MS

30000

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-readable

Prints mock/live mode, key presence, model, and base URL.

Test

npm test

Runs 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 / block to a person.

License

MIT

Available Tools

1 tool
screen_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to screen.
categoriesNoOptional custom category list (replaces defaults).

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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. 1 tool updatev0.1.0
    • First observedscreen_content

TDQS

A3.9/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The single tool has a clear, unique purpose.

Naming Consistency5/5

The lone tool name 'screen_content' follows a consistent verb_noun pattern. Since there is only one tool, naming is trivially consistent.

Tool Count3/5

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).

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Content 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 npm
    63
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    1
    MIT