Skip to main content
Glama

AI or Not MCP Server

License: MIT npm version MCP

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

Installation

From Source

git clone https://github.com/tymrtn/aiornot-mcp.git
cd aiornot-mcp
npm install
npm run build

From npm (coming soon)

npm install -g aiornot-mcp

Configuration

Environment Variables

Variable

Required

Default

Description

AIORNOT_API_KEY

Yes

-

Your AI or Not API key

AIORNOT_API_URL

No

https://api.aiornot.com

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

  • Claude Code: ~/.claude/mcp_servers.json

Usage

Running the Server

AIORNOT_API_KEY="your_api_key_here" node build/index.js

Available Tools

aiornot_analyze_media

Analyze media content for AI generation.

Parameters:

Parameter

Type

Required

Description

media_type

string

Yes

One of: image, video, text, audio_music, audio_voice

file_path

string

Conditional

Path to file (required for image/video/audio)

text

string

Conditional

Text content (required for text, min 250 chars)

only

string[]

No

Report types to include

excluding

string[]

No

Report types to exclude

external_id

string

No

Tracking identifier

include_annotations

boolean

No

Include block-level annotations (text only)

timeout_ms

number

No

Override request timeout

Report Types by Media:

Media Type

Available Reports

Image

ai_generated, deepfake, nsfw, quality, reverse_search

Video

ai_video, ai_music, ai_voice, deepfake_video (off by default)

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 type

  • scores: Extracted confidence scores and verdicts

  • response: 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 inspector

License

MIT - see LICENSE

Available Tools

2 tools
aiornot_analyze_mediaB

Analyze image, video, audio (music/voice), or text using the AI or Not API and return confidence scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
onlyNoImage: ai_generated, deepfake, nsfw, quality, reverse_search. Video: ai_video, ai_music, ai_voice, deepfake_video (off by default).
textNoText content for text analysis (min 250 characters).
excludingNoImage: ai_generated, deepfake, nsfw, quality, reverse_search. Video: ai_video, ai_music, ai_voice, deepfake_video.
file_pathNoPath to the file for image, video, or audio analysis.
media_typeYesMedia type to analyze.
timeout_msNoOverride request timeout in milliseconds.
external_idNoOptional tracking identifier for image, text, or video.
include_annotationsNoText only: include block-level annotations.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 2 tool updatesv0.1.0
    • First observedaiornot_analyze_media
    • First observedaiornot_is_live

TDQS

A3.7/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are completely distinct: one performs media analysis and the other checks API liveness. There is no possible confusion between them.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers