AI or Not MCP Server
Click on "Install 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., "@AI or Not MCP Servercheck if this image is AI-generated"
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.
AI or Not MCP Server
An MCP (Model Context Protocol) server that integrates with the AI or Not API to detect AI-generated content in images, videos, audio, and text.
Features
Image Analysis: Detect AI-generated images, deepfakes, NSFW content, and image quality issues
Video Analysis: Detect AI-generated video, synthetic voices, AI music, and video deepfakes
Audio Analysis: Detect AI-generated music and synthetic voices
Text Analysis: Detect AI-written text with confidence scoring and annotations
API Health Check: Verify API availability
Related MCP server: AI Content Detector
Prerequisites
Node.js 18+
An API key from AI or Not
Installation
From Source
git clone https://github.com/tymrtn/aiornot-mcp.git
cd aiornot-mcp
npm install
npm run buildFrom npm (coming soon)
npm install -g aiornot-mcpConfiguration
Environment Variables
Variable | Required | Default | Description |
| Yes | - | Your AI or Not API key |
| No |
| API base URL |
Claude Desktop / Claude Code
Add to your MCP settings file:
{
"mcpServers": {
"aiornot": {
"command": "node",
"args": ["/path/to/aiornot-mcp/build/index.js"],
"env": {
"AIORNOT_API_KEY": "your_api_key_here"
}
}
}
}Settings file locations:
Claude Desktop (macOS):
~/Library/Application Support/Claude/claude_desktop_config.jsonClaude Code:
~/.claude/mcp_servers.json
Usage
Running the Server
AIORNOT_API_KEY="your_api_key_here" node build/index.jsAvailable Tools
aiornot_analyze_media
Analyze media content for AI generation.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | One of: |
| string | Conditional | Path to file (required for image/video/audio) |
| string | Conditional | Text content (required for text, min 250 chars) |
| string[] | No | Report types to include |
| string[] | No | Report types to exclude |
| string | No | Tracking identifier |
| boolean | No | Include block-level annotations (text only) |
| number | No | Override request timeout |
Report Types by Media:
Media Type | Available Reports |
Image |
|
Video |
|
aiornot_is_live
Check if the AI or Not API is available.
Examples
Analyze an image:
{
"media_type": "image",
"file_path": "/path/to/image.jpg"
}Analyze an image for specific checks:
{
"media_type": "image",
"file_path": "/path/to/image.jpg",
"only": ["ai_generated", "deepfake"]
}Analyze video including deepfake detection:
{
"media_type": "video",
"file_path": "/path/to/video.mp4",
"only": ["ai_video", "deepfake_video"]
}Analyze text:
{
"media_type": "text",
"text": "Your text content here (minimum 250 characters)...",
"include_annotations": true
}Analyze audio for synthetic voice:
{
"media_type": "audio_voice",
"file_path": "/path/to/audio.mp3"
}Response Format
The server returns structured JSON with:
media_type: The analyzed media typescores: Extracted confidence scores and verdictsresponse: Full API response
Example response for image analysis:
{
"media_type": "image",
"scores": {
"ai_generated": {
"verdict": "ai",
"ai_confidence": 0.95,
"human_confidence": 0.05
},
"deepfake": {
"is_detected": false,
"confidence": 0.02
}
},
"response": { ... }
}Timeouts
Default timeouts vary by media type:
Media Type | Default Timeout |
Image | 30 seconds |
Text | 30 seconds |
Video | 120 seconds |
Audio (music) | 120 seconds |
Audio (voice) | 120 seconds |
Use timeout_ms to override if needed.
Development
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run watch
# Test with MCP Inspector
npm run inspectorLicense
MIT - see LICENSE
Links
AI or Not - API provider
Model Context Protocol - MCP specification
MCP SDK - TypeScript SDK
Available Tools
2 toolsaiornot_analyze_mediaB
Analyze image, video, audio (music/voice), or text using the AI or Not API and return confidence scores.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Image: ai_generated, deepfake, nsfw, quality, reverse_search. Video: ai_video, ai_music, ai_voice, deepfake_video (off by default). | |
| text | No | Text content for text analysis (min 250 characters). | |
| excluding | No | Image: ai_generated, deepfake, nsfw, quality, reverse_search. Video: ai_video, ai_music, ai_voice, deepfake_video. | |
| file_path | No | Path to the file for image, video, or audio analysis. | |
| media_type | Yes | Media type to analyze. | |
| timeout_ms | No | Override request timeout in milliseconds. | |
| external_id | No | Optional tracking identifier for image, text, or video. | |
| include_annotations | No | Text only: include block-level annotations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool returns confidence scores, which is helpful, but it does not disclose that this performs network calls to an external API, sends potentially sensitive file content, may have rate limits, or can fail/timeout. Key mutation-like side effects (external data transmission) are absent.
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 a single sentence with no unnecessary words, and the primary purpose is front-loaded. It loses one point because it is almost too terse, omitting contextual details that could be woven in without adding bulk, such as the need for file_path or text depending on media_type.
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?
This is a moderately complex tool with 8 parameters, no output schema, and no annotations. The description explains the basic purpose but not the return format, error behavior, dependency on external API, or the relationship between media_type and required inputs (file_path vs. text). An agent would need to inspect the schema to understand those constraints, but schema does not cover operational or outcome context, leaving a significant gap.
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 every parameter already has a description. The tool description adds no parameter-level detail beyond what the schema provides. Baseline 3 applies because the schema handles the documentation burden adequately.
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 uses the specific verb 'Analyze' and names the exact resource: image, video, audio (music/voice), or text via the AI or Not API. It also states the output (confidence scores), making the tool's function clear and distinguishable from the sibling 'aiornot_is_live'.
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?
There is no explicit guidance about when to use this tool versus alternatives. While it is implied that one would use this for analyzing media, the description does not mention the sibling tool or any non-use cases. The condition 'or text' is the only hint of differentiation, but no exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aiornot_is_liveA
Check if the AI or Not API is live.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It communicates a simple read-only liveness check, which is fairly transparent for a zero-parameter health probe. However, it does not disclose what the response looks like, error behavior, or whether any state is affected.
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 a single, clear sentence with no filler or redundant phrasing. Every word contributes to the meaning.
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?
The tool is very low complexity, but there is no output schema, so the return value is not explained. The description is otherwise complete for a trivial liveness check, but lacks any usage context or expected-response note.
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?
The tool has zero parameters and the schema coverage is effectively 100%. With no parameters to document, the baseline is 4, and the description has no need to add parameter details.
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 states a specific verb ('check') and resource ('AI or Not API is live'). It clearly distinguishes this health-check tool from the sibling aiornot_analyze_media, which is for media analysis.
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?
No guidance is given about when to use this tool versus aiornot_analyze_media, and no preconditions or typical workflows are mentioned. The intended usage is only implied by the tool name and minimal description.
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.
2 tool updates
v0.1.0- First observed
aiornot_analyze_media - First observed
aiornot_is_live
TDQS
Scored across 2 tools
The two tools are completely distinct: one performs media analysis and the other checks API liveness. There is no possible confusion between them.
Both tools share the consistent `aiornot_` prefix and use snake_case, but `analyze_media` is a clear verb_noun while `is_live` is a status-style name rather than an action on an object. Minor deviation in an otherwise predictable pattern.
With only two tools, the server is minimal, but the narrow purpose of wrapping the AI or Not API makes the count reasonable. It is slightly thin but not insufficient.
The analysis tool covers all supported media types (image, video, audio, text) and returns confidence scores, while the liveness tool covers API availability. For the stated purpose, there are no obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Detect AI-generated images, videos, and audio with identifAI's deepfake detection tools.
Verify photos are real camera captures, not AI: C2PA and RAW+JPEG forensics. OAuth or API key.
Detect whether an image is AI-generated or real, with an AI-probability score and confidence.
Find AI-isms with evidence and fingerprint a writing voice from samples. 3 of 5 free.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI-generated text detection using the GPTZero API. Provides confidence scores and detailed analysis to identify whether text was written by humans or AI, with multilingual support.2211MIT
- AlicenseBqualityDmaintenanceEnables detection of AI-generated content from ChatGPT, GPT-4, and Gemini models through the BACH AI Content Detector API.1MIT

ZeroTrue MCP Serverofficial
AlicenseAqualityCmaintenanceEnables detection of AI-generated content in text, images, video, and audio via the ZeroTrue API, supporting multiple analysis tools and MCP-compatible clients.66MIT- AlicenseNot gradedqualityDmaintenanceEnables LLMs to analyze images, videos, audio, and text files for AI-generated content using the Reality Defender API, with support for user file uploads and direct URL analysis.1Apache 2.0