Skip to main content
Glama
gowinston-ai

winston-ai-mcp

Official
by gowinston-ai

Winston AI MCP Server ⚡️

npm version License: MIT Node.js CI TypeScript

Model Context Protocol (MCP) Server for Winston AI - the most accurate AI Detector. Detect AI-generated content, plagiarism, and compare texts with ease.

🚀 Quick Start

Add this URL to your MCP client and sign in with your Winston AI account:

https://api.gowinston.ai/mcp/v1

That's it. No API key, no install. Credits are taken from your app.gowinston.ai account.

Related MCP server: Plagiarism Checker AI MCP

🔌 Connect your MCP client

Your client signs you in with OAuth 2.1 the first time you connect.

Claude

Go to Customize > Connectors, click +, then Add custom connector. Enter Winston AI as the name and https://api.gowinston.ai/mcp/v1 as the URL, then sign in.

ChatGPT

Turn on Developer mode in ChatGPT settings, then add a custom connector with the URL https://api.gowinston.ai/mcp/v1 and OAuth as the authentication. Custom connectors require a paid ChatGPT plan.

Claude Code

claude mcp add --transport http winston-ai https://api.gowinston.ai/mcp/v1

Cursor

Add to your mcp.json:

{
  "mcpServers": {
    "winston-ai": {
      "url": "https://api.gowinston.ai/mcp/v1"
    }
  }
}

VS Code

Add to your .vscode/mcp.json:

{
  "servers": {
    "winston-ai": {
      "type": "http",
      "url": "https://api.gowinston.ai/mcp/v1"
    }
  }
}

Other MCP clients

Use the URL https://api.gowinston.ai/mcp/v1 with the Streamable HTTP transport. Any client that supports MCP authorization will sign you in automatically.

Using an API key instead

If you want, you can also use a standard API key from dev.gowinston.ai by passing it in the Authorization header:

{
  "mcpServers": {
    "winston-ai": {
      "url": "https://api.gowinston.ai/mcp/v1",
      "headers": {
        "Authorization": "Bearer your-winston-ai-api-key"
      }
    }
  }
}

🧰 Tools

Tool

What it does

Inputs

Credit cost

ai-text-detection

Detects whether text was written by a human or AI, with a confidence score and the most AI-like sentences

text (required, 300 to 150,000 characters, 600+ recommended), file (optional, .pdf, .doc or .docx), website (optional, public URL)

1 credit per word

ai-image-detection

Detects AI-generated images using metadata, watermark detection, and a machine learning model

url (required, public JPG, JPEG, PNG or WEBP image, at least 256x256 pixels)

300 credits per image

plagiarism-detection

Checks text against billions of web pages and lists the original sources

text (required, 100 to 120,000 characters), language (optional, default en), country (optional, default us)

2 credits per word

text-compare

Compares two texts and returns a similarity score with word-level matches

first_text (required, up to 120,000 characters), second_text (required, up to 120,000 characters)

0.5 credit per total word in both texts

If you provide several inputs to ai-text-detection, website takes priority over file, and file takes priority over text.

🔐 Authentication

Every request must send a Bearer token in the Authorization header:

Authorization: Bearer <token>

OAuth 2.1 is the easiest way to connect. Sign in with your Winston AI account and your MCP client gets an access token for you. There's no API key to copy or store. Credits are taken from your app.gowinston.ai account, not the API platform.

If you want, you can also use a standard API key from dev.gowinston.ai as the Bearer token.

Never send the token in the request body or URL. Only the Authorization header is supported.

How the OAuth 2.1 flow works

MCP clients that support MCP authorization handle this for you:

  1. A request without a token receives 401 Unauthorized with a WWW-Authenticate header pointing to the protected resource metadata.

  2. The client reads [https://api.gowinston.ai/.well-known/oauth-protected-resource](https://api.gowinston.ai/.well-known/oauth-protected-resource), which lists https://app.gowinston.ai as the authorization server and mcp:use as the required scope.

  3. The client opens your browser so you can sign in to Winston AI and approve access.

  4. The client receives an access token and sends it as Authorization: Bearer <token> on every request.

🧪 Test with cURL

MCP clients get an OAuth token automatically. For quick tests with cURL, the simplest option is a standard API key from dev.gowinston.ai. Replace your-winston-ai-api-key with it.

List tools

curl --location 'https://api.gowinston.ai/mcp/v1' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--header 'Authorization: Bearer your-winston-ai-api-key' \
--data '{
  "jsonrpc": "2.0",
  "method": "tools/list",
  "id": 1
}'

Call a tool: AI Text Detection

curl --location 'https://api.gowinston.ai/mcp/v1' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--header 'Authorization: Bearer your-winston-ai-api-key' \
--data '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ai-text-detection",
    "arguments": {
      "text": "Your text to analyze (minimum 300 characters)"
    }
  }
}'

To call another tool, change name and arguments using the Tools table. More examples are in the MCP server documentation.

🩺 Troubleshooting

  • 401 Unauthorized: The token is missing, invalid, or expired. Sign in again from your MCP client, or check that the Authorization header is Bearer <token>.

  • 403 Forbidden: The token doesn't have the mcp:use scope. Disconnect and sign in again so your client requests it.

  • Out of credits: Top up your account on app.gowinston.ai. If you use an API key, top up on dev.gowinston.ai.

  • Your client doesn't support OAuth: Use an API key in the Authorization header. See Using an API key instead.

💻 Self-hosting & development

You can also run the server locally over stdio. This requires Node.js 18+ and a Winston AI API key (get one here).

Running with npx 🔋

env WINSTONAI_API_KEY=your-api-key npx -y winston-ai-mcp

Adding the local server to your MCP client

Add it to your MCP client's configuration, such as Cursor (mcp.json), Claude Desktop (claude_desktop_config.json), and others:

{
  "mcpServers": {
    "winston-ai-mcp": {
      "command": "npx",
      "args": ["-y", "winston-ai-mcp"],
      "env": {
        "WINSTONAI_API_KEY": "your-api-key"
      }
    }
  }
}

Running from source 💻

Create a .env file in your project root:

WINSTONAI_API_KEY=your_actual_api_key_here
# Clone the repository
git clone https://github.com/gowinston-ai/winston-ai-mcp-server.git
cd winston-ai-mcp-server

# Install dependencies
npm install

# Build the project and start the server
npm run mcp-start

Docker 📦

# Build the image
docker build -t winston-ai-mcp .

# Run the container
docker run -e WINSTONAI_API_KEY=your_api_key winston-ai-mcp

Available scripts 📋

  • npm run build - Compile TypeScript to JavaScript

  • npm start - Start the MCP server

  • npm run mcp-start - Compile TypeScript to JavaScript and Start the MCP server

  • npm run lint - Run ESLint for code quality

  • npm run format - Format code with Prettier LICENSE) file for details.

⭐ Support

If you find this project helpful, please give it a star on GitHub!


Made with ❤️ by the Winston AI Team

Available Tools

4 tools
ai-image-detectionAI Image DetectionA
Read-only

Detects AI content in a given image by verifying image metadata and using a machine learning system trained to differentiate between human and AI-generated images. Cost: 300 credits per image.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSpecifies the URL of the image to scan. The URL must be valid, publicly accessible, and point to an image in one of the following formats: JPG, JPEG, PNG, or WEBP. The image must have a minimum resolution of 256x256 pixels.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint. The description adds transparency about the credit cost and the dual method (metadata + ML). No contradictions with annotations.

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?

Two concise sentences: first explains the method and purpose, second states the cost. No unnecessary words, front-loaded with key information.

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?

With no output schema, the description could have clarified the return format (e.g., a score or label). The tool is simple, but missing output details slightly reduces completeness.

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 coverage is 100% with a detailed description of the url parameter (format, constraints, resolution). The description adds no additional param-level information, so baseline 3 is appropriate.

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 clearly states the tool detects AI content in images using metadata verification and machine learning. It is distinct from sibling tools like ai-text-detection which operate on text, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a credit cost (300 credits per image), guiding usage awareness. While it does not explicitly compare to siblings, the image focus clearly differentiates it from text-oriented tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ai-text-detectionAI Text DetectionA
Read-only

Detects AI content in a given text to detect the likelihood of the text being written by an AI. Cost: 1 credit per word.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoA file to scan. If you supply a file, the API will scan the content of the file. The file must be in plain .pdf, .doc or .docx format. The file has priority over the text, so if you give a text and a file, it's the file that will be scanned.
textYesThe text to scan. Texts under 600 characters may produce unreliable results and should be avoided. Maximum 150 000 characters per request.
websiteNoA website URL to scan. If you supply a website, the API will fetch the content of the website and scan it. The website must be publicly accessible. It's important to know that the website has priority over the text and the file, so if you give a text, a file and a website, it's the website that will be scanned.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds cost per word (1 credit per word) beyond the annotations (readOnlyHint, openWorldHint). While annotations already cover safety, the cost is a behavioral trait. However, it does not discuss reliability thresholds or output format.

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 concise (one sentence plus cost info) and front-loaded. The only minor waste is repetition of 'detect'. It is efficient but could be slightly more structured.

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?

The description lacks return value details (e.g., score or percentage). With no output schema, the agent cannot infer what the tool returns. Also, the priority order among text/file/website is described in the schema but not in the description, which could be helpful. The cost is mentioned, but completeness is insufficient.

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% (all parameters have descriptions). The tool description adds no further meaning beyond the schema; the cost note applies to the tool overall, not specific parameters. Baseline score of 3 is appropriate.

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 explicitly states the tool's purpose: 'Detects AI content in a given text to detect the likelihood of the text being written by an AI.' It clearly distinguishes from siblings like ai-image-detection (image focus) and plagiarism-detection (plagiarism focus).

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?

The description implies usage for text-based AI detection and mentions cost, but does not provide explicit when-to-use or when-not-to-use guidance compared to alternatives like plagiarism-detection. No exclusions or selection criteria are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plagiarism-detectionPlagiarism DetectionA
Read-only

Winston AI's plagiarism API is a powerful tool designed to check text for plagiarism by scouring the internet for similar content. It queries multiple websites and compares the input text with the content found on these websites. This can be particularly useful in academic settings, content creation, legal scenarios or any other situation where originality of content is required. Cost: 2 credits per word.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to be scanned. This is required unless you provide a website or file. Each request must contain at least 100 characters and no more than 120,000 characters.
countryNoThe country code of the country where the text was written. We accept all country codes. Default: us.us
languageNo2 letter language code. We accept all languages. Default: en.en

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotated with readOnlyHint and openWorldHint; description adds that it queries multiple websites and includes cost per word, providing useful behavioral context.

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?

Concise and front-loaded, though some redundancy ('scouring the internet' and 'queries multiple websites').

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?

Good overall, with schema and annotations covering most needs. Missing return format information, but not critical given other rich metadata.

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 has 100% parameter descriptions; description does not add per-parameter details beyond schema.

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 clearly states the tool checks text for plagiarism by scouring the internet. It distinguishes from siblings like ai-image-detection and text-compare.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases (academic, content creation, legal) but does not mention when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

text-compareText CompareA
Read-only

Compares two texts and returns the similarity score. Cost: 0.5 credit per total words found in both texts.

ParametersJSON Schema
NameRequiredDescriptionDefault
first_textYesThe first text to compare. Maximum 120,000 characters.
second_textYesThe second text to compare against the first text. Maximum 120,000 characters.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true and openWorldHint=true. The description adds behavioral context beyond annotations by explaining the cost model and that the tool computes a similarity score, which is consistent with read-only behavior. No contradiction.

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 extremely concise with two sentences, no wasted words. Purpose is front-loaded in the first sentence, followed by cost information in the second.

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 simple 2-parameter tool with complete schema and annotations, the description covers purpose and cost. A minor gap is the lack of explanation about the similarity score range or scale, but it is not critical for use.

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%, with both parameters having clear descriptions in the schema. The tool description does not add additional semantic value beyond what the schema already provides.

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 clearly states the tool's verb ('Compares'), resource ('two texts'), and outcome ('returns the similarity score'). It distinguishes from sibling tools (detection-focused) by focusing on text comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a cost guideline ('Cost: 0.5 credit per total words'), which helps with usage decisions. However, it does not explicitly state when to use this tool over alternatives or when not to use it.

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. 4 tool updatesv1.0.11
    • First observedai-image-detection
    • First observedai-text-detection
    • First observedplagiarism-detection
    • First observedtext-compare

TDQS

A4.1/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinctly different function: image AI detection, text AI detection, plagiarism detection against the internet, and pairwise text comparison. There is no overlap or ambiguity.

Naming Consistency4/5

Three tools follow a consistent 'ai-*-detection' or 'plagiarism-detection' pattern, but 'text-compare' deviates by using 'compare' instead of 'detection' and omits the 'ai-' prefix.

Tool Count5/5

With 4 tools covering image and text AI detection, plagiarism, and comparison, the count is well-scoped for a focused content-authentication server.

Completeness4/5

The set covers primary detection needs (AI images, AI text, plagiarism) and adds comparison. Minor gaps like batch processing or document-level analysis exist but are not critical.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers