Detect grooming, bullying, fraud, and 16+ online threats across text, voice, image, and video.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
Inspect callable tools, capabilities, and parameters exposed to AI agents by Mcp.
detect_bullyingAnalyze text for bullying, harassment, and gaming toxicity β including coded slang, emoji, and deliberate filter evasion, with context that tells trash-talk apart from genuine harm
detect_groomingDetect grooming patterns and predatory behavior in conversations
detect_unsafeIdentify unsafe content (self-harm, violence, explicit material)
analyzeQuick comprehensive safety check (bullying + unsafe)
analyse_multiRun multiple detection endpoints on a single piece of text in one call
batch_analyzeAnalyze up to 50 items in a single request (bullying, unsafe, emotions, grooming) β ideal for bulk triage
MCP server for Tuteliq - AI-powered child safety tools for Claude
API Docs β’ Dashboard β’ Trust β’ Changelog β’ Discord
Tuteliq MCP Server brings AI-powered child safety tools directly into Claude, Cursor, and other MCP-compatible AI assistants. Ask Claude to check messages for bullying, detect grooming patterns, or generate safety action plans.
Reads context, not just keywords. Every detector understands coded slang, emoji, leetspeak, algospeak, and deliberate filter evasion, and weighs the conversation around a message β so it tells gaming trash-talk apart from targeted harassment instead of drowning your team in false positives. This coded-language resilience is platform-wide (it applies to grooming, fraud, radicalisation, and the rest, not just bullying) and is built from our own research into how bad actors evade moderation. In an internal benchmark of coded-language and filter-evasion cases, Tuteliq detected roughly 1.7x more of them than leading general-purpose moderation APIs (319-case evasion set; vendors unnamed).
Fast mode. Pass verdict_only: true on detect_grooming or detect_bullying to get just the verdict (risk level, flags, recommended action) without the per-message breakdown β lower latency for real-time screening. The verdict itself is unchanged.
Interactive results. In hosts that support MCP Apps, results render as interactive cards rather than walls of JSON β see Interactive widgets below.
Twelve widgets return a rendered card instead of raw text in hosts that support MCP
Apps (Claude desktop and web, and other MCP-compatible clients). Everywhere else
the same data arrives as structuredContent, so nothing depends on the UI.
Every card carries the same frame: a chrome bar naming the tool that produced the result, the result itself, and a footer with the data-handling note and a Trust Center link. In a transcript holding a dozen results, the chrome bar is what tells you which is which.
| Widget | Tools |
|---|---|
| Detection result | detect_bullying, detect_grooming, detect_unsafe, analyze, and the other detect_* tools |
| Multi-endpoint | analyse_multi |
| Emotions | analyze_emotions |
| Media | analyze_voice, analyze_image, analyze_video, analyze_document |
| Synthetic media | detect_synthetic_text, detect_synthetic_image, detect_synthetic_audio, detect_synthetic_video |
| Action plan | get_action_plan |
| Incident report | generate_report |
| Incidents overview | get_incidents_overview |
| Incidents list | list_incidents |
| Incident detail | get_incident |
| Incident trends | get_incident_trends |
| Moderation queue | moderation_queue |
Severity is rankable by colour. The ramp runs monotonically from safe to critical, so two chips can be compared without reading their labels:
| Level | Colour | |
|---|---|---|
critical | #9C3A29 | ![]() |
high | #C2543A | ![]() |
medium | #D98A3D | ![]() |
low | #B7C2D4 | ![]() |
safe | #19B79A | ![]() |
Design notes. The widgets are deliberately calm. They report on grooming, self-harm, and abuse, and a card that animates or pulses at the reader turns material that is already distressing into an alarm they cannot dismiss. Severity is carried by a rule and a glyph, not by motion. The crisis-support card leads with reassurance rather than the severity colour, and its helpline numbers are the largest targets on the card because transcribing digits under stress is where people fail.
Widgets are read-only renderers by design. Selecting incidents in the list widget
assembles the ID list for a batch_review_incidents call you fire yourself β the
mutating call still goes through your host's approval step, so the
human-in-the-loop stays in the loop.
Widget source lives in ui/src. Design tokens are centralised in
ui/src/theme.ts; prefer them over colour literals so the palette stays in one
place.
| Tool | Description |
|---|---|
detect_bullying | Analyze text for bullying, harassment, and gaming toxicity β including coded slang, emoji, and deliberate filter evasion, with context that tells trash-talk apart from genuine harm |
detect_grooming | Detect grooming patterns and predatory behavior in conversations |
detect_unsafe | Identify unsafe content (self-harm, violence, explicit material) |
analyze | Quick comprehensive safety check (bullying + unsafe) |
analyse_multi | Run multiple detection endpoints on a single piece of text in one call |
batch_analyze | Analyze up to 50 items in a single request (bullying, unsafe, emotions, grooming) β ideal for bulk triage |
analyze_emotions | Analyze emotional content and mental state indicators β accepts single text or full conversations |
get_action_plan | Generate age-appropriate guidance for safety situations |
generate_report | Create incident reports from conversations |
| Tool | Description |
|---|---|
detect_social_engineering | Detect social engineering tactics (pretexting, urgency fabrication, authority impersonation) |
detect_app_fraud | Detect app-based fraud (fake investment platforms, phishing apps, subscription traps) |
detect_romance_scam | Detect romance scam patterns (love-bombing, financial requests, identity deception) |
detect_mule_recruitment | Detect money mule recruitment tactics (easy-money offers, bank account sharing) |
detect_gambling_harm | Detect gambling-related harm indicators (chasing losses, concealment, distress) |
detect_coercive_control | Detect coercive control patterns (isolation, financial control, monitoring, threats) |
detect_vulnerability_exploitation | Detect exploitation of vulnerable individuals (elderly, disabled, financially distressed) |
detect_radicalisation | Detect radicalisation indicators (extremist rhetoric, us-vs-them framing, ideological grooming) |
| Tool | Description |
|---|---|
analyze_voice | Transcribe audio and run safety analysis on the transcript |
analyze_image | Analyze images for visual safety + OCR text extraction |
analyze_video | Analyze video files for safety concerns via key frame extraction (supports mp4, mov, avi, webm, mkv) |
analyze_document | Analyze PDF documents for safety concerns β per-page multi-endpoint detection with chain-of-custody hashing (max 50MB, 100 pages) |
| Tool | Description |
|---|---|
detect_synthetic_text | Detect AI-generated text across 10 child-safety categories (synthetic CSAM, deepfake scripts, AI grooming) |
detect_synthetic_image | 6-signal forensic pipeline: vision AI, EXIF metadata, pixel stats, C2PA Content Credentials, watermarks, pHash |
detect_synthetic_audio | Dual-signal forensics: transcript + mel spectrogram vision + quantitative audio statistics |
detect_synthetic_video | 5-track analysis: per-frame vision, temporal face consistency, lip-sync correlation, spectral audio, transcript |
| Tool | Description |
|---|---|
create_verification_session | Create a session for age or identity verification β returns a URL for the user to complete the flow |
get_verification_session | Poll session status β returns full document intelligence (MRZ, barcode, authenticity, face match, liveness) |
cancel_verification_session | Cancel an active session (no credits consumed) |
Read the incident store, triage a queue, and record moderator decisions. The review tools emit signed receipts for EU AI Act Art 14 human-oversight evidence.
| Tool | Description |
|---|---|
get_incidents_overview | Counts by category, severity, source, status and platform over a window |
list_incidents | Paginated, filterable incident list |
get_incident | Full detail for one incident, including the risk trajectory across messages |
get_incident_trends | Incident volume bucketed by hour, day or week, split by severity |
moderation_queue | Moderator triage console: the unreviewed queue, the next item, and β optionally β your own analysis trace and recommended decision, rendered for human sign-off. Read-only |
review_incident | Record a moderator decision (confirm / downgrade / escalate / reclassify / dismiss) with a signed receipt |
batch_review_incidents | Apply one decision across many incidents in a single call |
get_audit_receipt | Fetch the signed receipt for a past inference |
get_audit_logs | Query the audit log |
The decision is the moderator's, and the card makes them take it. The
action buttons call review_incident through the host, because a moderator
clicking "Escalate" is the human decision. They do not fire on one click:
review_incident persists an override and emits a signed Art 12 audit receipt
and requires a reason_code, so the button opens a reason picker and a second
click commits. Nothing is ever defaulted into that receipt on the moderator's
behalf.
The reasoning, confidence and analysis trace on the card are supplied by the calling assistant and are labelled as such β an argument for a human to weigh, not a Tuteliq measurement.
Pass operator_name to brand the header with the customer or team name. Omit it
and the card is unbranded β it is never defaulted to a placeholder.
| Tool | Description |
|---|---|
list_webhooks | List all configured webhooks |
create_webhook | Create a new webhook endpoint |
update_webhook | Update webhook configuration |
delete_webhook | Delete a webhook |
test_webhook | Send a test payload to verify webhook |
regenerate_webhook_secret | Regenerate webhook signing secret |
| Tool | Description |
|---|---|
get_pricing | Get available pricing plans |
get_pricing_details | Get detailed pricing with features and limits |
| Tool | Description |
|---|---|
get_usage_history | Get daily usage history |
get_usage_by_tool | Get usage by tool/endpoint |
get_usage_monthly | Get monthly usage with billing info |
get_usage_summary | Get current billing-period summary (used, limits, purchased credits) |
get_usage_quota | Get real-time rate-limit status β pre-flight check before batch runs |
| Tool | Description |
|---|---|
get_policy | Get the account's detection policy (per-category flag/block thresholds, auto-moderation) |
set_policy | Update the account's detection policy configuration |
| Tool | Description |
|---|---|
list_policy_rules | List all automation rules (block/flag/escalate/notify/log_only on matching detections) |
create_policy_rule | Create a rule that acts automatically when detections match its conditions |
get_policy_rule | Get full detail of a single rule |
update_policy_rule | Update any subset of a rule's fields (e.g., pause with enabled: false) |
delete_policy_rule | Permanently delete a rule |
evaluate_policy_rules | Dry-run rules against a hypothetical detection result |
| Tool | Description |
|---|---|
get_detection_settings | See which detection endpoints are enabled/disabled + default context |
update_detection_settings | Enable/disable endpoints, set default context |
reset_detection_settings | Reset to defaults (all endpoints enabled) |
| Tool | Description |
|---|---|
get_intelligence_trends | Anonymised network-wide threat trends by endpoint/category/age/platform/geo |
get_emerging_threats | Emerging threat patterns over a recent window |
get_weekly_digest | Weekly digest: summary, top categories, notable changes |
get_risk_trends | Anonymised global risk trends |
| Tool | Description |
|---|---|
delete_account_data | Delete all account data (Right to Erasure) |
export_account_data | Export all account data as JSON (Data Portability) |
record_consent | Record user consent for data processing |
get_consent_status | Get current consent status |
withdraw_consent | Withdraw a previously granted consent |
rectify_data | Correct user data (Right to Rectification) |
get_audit_logs | Get audit trail of all data operations |
| Tool | Description |
|---|---|
log_breach | Log a new data breach (starts 72-hour notification clock) |
list_breaches | List all data breaches, optionally filtered by status |
get_breach | Get details of a specific data breach |
update_breach_status | Update breach status and notification progress |
All detection tools accept an optional context object. These fields influence severity scoring and classification:
| Field | Type | Description |
|---|---|---|
language | string | ISO 639-1 code (e.g., "en", "sv"). Auto-detected if omitted. |
ageGroup | string | Age group (e.g., "10-12", "13-15", "under 18"). Triggers age-calibrated scoring. |
platform | string | Platform name (e.g., "Discord", "Roblox"). Adjusts detection for platform norms. |
relationship | string | Relationship context (e.g., "classmates", "stranger"). |
sender_trust | string | Sender verification status: "verified", "trusted", or "unknown". |
sender_name | string | Name of the sender (used with sender_trust). |
sender_trust BehaviorWhen sender_trust is set to "verified" or "trusted":
support_thresholdControls when crisis support resources (helplines, text lines, web resources) are included in the response:
| Value | Behavior |
|---|---|
low | Include support for Low severity and above |
medium | Include support for Medium severity and above |
high | (Default) Include support for High severity and above |
critical | Include support only for Critical severity |
Note: Critical severity always includes support resources regardless of the threshold setting.
analyse_multi Endpoint ValuesThe analyse_multi tool accepts up to 10 endpoints per call. Valid endpoint values:
| Endpoint ID | Description |
|---|---|
bullying | Bullying and harassment detection |
grooming | Grooming pattern detection |
unsafe | Unsafe content detection (self-harm, violence, explicit material) |
social-engineering | Social engineering and pretexting |
app-fraud | App-based fraud patterns |
romance-scam | Romance scam patterns |
mule-recruitment | Money mule recruitment |
gambling-harm | Gambling-related harm |
coercive-control | Coercive control patterns |
vulnerability-exploitation | Exploitation of vulnerable individuals |
radicalisation | Radicalisation indicators |
Tuteliq is a hosted MCP server at https://api.tuteliq.ai/mcp. Most clients
should connect with OAuth and install nothing.
Point the client at the URL with no credentials and sign in through the browser. Tuteliq implements OAuth 2.1 with dynamic client registration and PKCE, so the client registers itself. Nothing is pasted into a config file, and access is revoked from the dashboard rather than by editing your machine.
Claude Desktop: Settings > Connectors, Add custom connector, name it
Tuteliq, URL https://api.tuteliq.ai/mcp, then Connect and approve in
the browser.
Claude Code, Cursor, Windsurf and other clients supporting remote servers:
In Claude Code, run /mcp to start the sign-in if it does not open on its own.
OAuth needs a browser, so a CI pipeline, cron job or container cannot complete
it. Send a token in the Authorization header instead, generated in the
dashboard under Settings > Plugins. This is a long-lived credential: keep it
out of version control, and prefer OAuth wherever a browser exists.
For clients that only speak stdio. This runs a local process that calls the same hosted API, so the tools are identical; only the transport and authentication differ.
Once configured, you can ask Claude:
"Check if this message is bullying: 'Nobody likes you, just go away'"
Response:
"Analyze this conversation for grooming patterns..."
"Is this message safe? 'I don't want to be here anymore'"
"Analyze the emotions in: 'I'm so stressed about school and nobody understands'"
"Give me an action plan for a 12-year-old being cyberbullied"
"Generate an incident report from these messages..."
"Analyze this audio file for safety: /path/to/recording.mp3"
"Check this screenshot for harmful content: /path/to/screenshot.png"
"List my webhooks" "Create a webhook for critical incidents at https://example.com/webhook"
"Show my monthly usage"
"Is this image AI-generated? /path/to/suspect-image.jpg" "Check if this audio is a voice clone: /path/to/voice.mp3" "Analyze this video for deepfake indicators: /path/to/video.mp4" "Is this text AI-generated? 'The generated text to analyze...'" "Show me the synthetic content profile for customer cust_xyz789"
"Create an age verification session" "Create an identity verification session with passport as preferred document" "Check the status of verification session abc123" "Cancel verification session abc123"
"Check this message for social engineering: 'Your account will be suspended unless you verify now'" "Is this a romance scam? 'I know we just met online but I need help with a medical bill'"
Language is auto-detected when not specified. Beta languages have good accuracy but may have edge cases compared to English.
| Language | Code | Status |
|---|---|---|
| English | en | Stable |
| Spanish | es | Beta |
| Portuguese | pt | Beta |
| French | fr | Beta |
| German | de | Beta |
| Italian | it | Beta |
| Dutch | nl | Beta |
| Polish | pl | Beta |
| Romanian | ro | Beta |
| Turkish | tr | Beta |
| Greek | el | Beta |
| Czech | cs | Beta |
| Hungarian | hu | Beta |
| Bulgarian | bg | Beta |
| Croatian | hr | Beta |
| Slovak | sk | Beta |
| Slovenian | sl | Beta |
| Lithuanian | lt | Beta |
| Latvian | lv | Beta |
| Estonian | et | Beta |
| Maltese | mt | Beta |
| Irish | ga | Beta |
| Swedish | sv | Beta |
| Norwegian | no | Beta |
| Danish | da | Beta |
| Finnish | fi | Beta |
| Ukrainian | uk | Beta |
The bullying and unsafe content tools analyze a single text field per request. If you're analyzing a conversation, concatenate a sliding window of recent messages into one string rather than sending each message individually. Single words or short fragments lack context for accurate detection and can be exploited to bypass safety filters.
The grooming tool already accepts a messages[] array and analyzes the full conversation in context.
Enable PII_REDACTION_ENABLED=true on your Tuteliq API to automatically strip emails, phone numbers, URLs, social handles, IPs, and other PII from detection summaries and webhook payloads. The original text is still analyzed in full β only stored outputs are scrubbed.
Tuteliq supports 27 languages with automatic detection β no configuration required.
English (stable) and 26 beta languages: Spanish, Portuguese, Ukrainian, Swedish, Norwegian, Danish, Finnish, German, French, Dutch, Polish, Italian, Turkish, Romanian, Greek, Czech, Hungarian, Bulgarian, Croatian, Slovak, Lithuanian, Latvian, Estonian, Slovenian, Maltese, and Irish.
All 24 EU official languages + Ukrainian, Norwegian, and Turkish. Each language includes culture-specific safety guidelines covering local slang, grooming patterns, self-harm coded vocabulary, and filter evasion techniques.
See the Language Support docs for details.
Tuteliq processes content for safety analysis on behalf of the operator (the API key holder). The MCP server is a thin transport that forwards requests to api.tuteliq.ai over TLS β no text, audio, image, or video content is stored locally by the MCP package.
| Topic | Link |
|---|---|
| Privacy Policy | tuteliq.ai/privacy |
| Terms of Service | tuteliq.ai/terms |
| Data Processing Agreement | tuteliq.ai/legal/dpa |
| AI Transparency | tuteliq.ai/ai-transparency |
| Contact | privacy@tuteliq.ai |
What is collected, used, and stored
api.tuteliq.ai and follow the standard RFC 9728 / RFC 8414 discovery flow.PII_REDACTION_ENABLED=true to strip emails, phone numbers, URLs, social handles, and IPs from stored summaries and webhook payloads. The original input is still analyzed in full; only stored outputs are scrubbed.export_account_data, delete_account_data, record_consent, withdraw_consent, rectify_data, get_audit_logs) so you can exercise data subject rights directly from your client.MIT License - see LICENSE for details.
Tuteliq offers a free certification program for anyone who wants to deepen their understanding of online child safety. Complete a track, pass the quiz, and earn your official Tuteliq certificate β verified and shareable.
Three tracks available:
| Track | Who it's for | Duration |
|---|---|---|
| Parents & Caregivers | Parents, guardians, grandparents, teachers, coaches | ~90 min |
| Young People (10β16) | Young people who want to learn to spot manipulation | ~60 min |
| Companies & Platforms | Product managers, trust & safety teams, CTOs, compliance officers | ~120 min |
Start here β tuteliq.ai/certify
Before you decide to contribute or sponsor, read these numbers. They are not projections. They are not estimates from a pitch deck. They are verified statistics from the University of Edinburgh, UNICEF, NCMEC, and Interpol.
End-to-end encryption is making platforms blind. In 2024, platforms reported 7 million fewer incidents than the year before β not because abuse stopped, but because they can no longer see it. The tools that catch known images are failing. The systems that rely on human moderators are overwhelmed. The technology to detect behavior β grooming patterns, escalation, manipulation β in real-time text conversations exists right now. It is running at api.tuteliq.ai.
The question is not whether this technology is possible. The question is whether we build the company to put it everywhere it needs to be.
Every second we wait, another child is harmed.
We have the technology. We need the support.
If this mission matters to you, consider sponsoring our open-source work so we can keep building the tools that protect children β and keep them free and accessible for everyone.
Built with care for child safety by the Tuteliq team
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-34)<a href="https://allmcps.com/mcp/mcp-34"><img src="https://allmcps.com/api/badge/mcp-34?style=directory" alt="Mcp on AllMCPs" /></a>