winston-ai-mcp
OfficialThis server provides AI content detection and text analysis tools through MCP, including AI text detection, AI image detection, plagiarism checking, and text similarity comparison.
AI Text Detection: Analyzes text to determine if it was written by AI. Accepts direct text (300–150,000 characters), plain PDF/DOC/DOCX files, or publicly accessible websites (with priority: website > file > text). Costs 1 credit per word.
AI Image Detection: Detects AI-generated images by checking metadata and using ML classification. Requires a public image URL in JPG, JPEG, PNG, or WEBP format, minimum 256×256 pixels. Costs 300 credits per image.
Plagiarism Detection: Scans the internet for similar content to check text originality. Accepts text (100–120,000 characters) with optional language and country codes. Costs 2 credits per word.
Text Compare: Compares two texts and returns a similarity score. Accepts two texts up to 120,000 characters each. Costs 0.5 credit per total word count in both texts.
Click on "Deploy 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., "@winston-ai-mcpCheck if this text 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.
Winston AI MCP Server ⚡️
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/v1That'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/v1Cursor
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 |
| Detects whether text was written by a human or AI, with a confidence score and the most AI-like sentences |
| 1 credit per word |
| Detects AI-generated images using metadata, watermark detection, and a machine learning model |
| 300 credits per image |
| Checks text against billions of web pages and lists the original sources |
| 2 credits per word |
| Compares two texts and returns a similarity score with word-level matches |
| 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:
A request without a token receives
401 Unauthorizedwith aWWW-Authenticateheader pointing to the protected resource metadata.The client reads
[https://api.gowinston.ai/.well-known/oauth-protected-resource](https://api.gowinston.ai/.well-known/oauth-protected-resource), which listshttps://app.gowinston.aias the authorization server andmcp:useas the required scope.The client opens your browser so you can sign in to Winston AI and approve access.
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 theAuthorizationheader isBearer <token>.403 Forbidden: The token doesn't have themcp:usescope. 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
Authorizationheader. 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-mcpAdding 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-startDocker 📦
# Build the image
docker build -t winston-ai-mcp .
# Run the container
docker run -e WINSTONAI_API_KEY=your_api_key winston-ai-mcpAvailable scripts 📋
npm run build- Compile TypeScript to JavaScriptnpm start- Start the MCP servernpm run mcp-start- Compile TypeScript to JavaScript and Start the MCP servernpm run lint- Run ESLint for code qualitynpm run format- Format code with Prettier LICENSE) file for details.
🔗 Links
Winston AI MCP NPM Package: https://www.npmjs.com/package/winston-ai-mcp
Winston AI Website: https://gowinston.ai
API Documentation: https://dev.gowinston.ai
MCP Server Documentation: https://docs.gowinston.ai/api-reference/mcp-server
MCP Authorization (OAuth 2.1): https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/authorization
MCP Protocol: https://modelcontextprotocol.io
GitHub Repository: https://github.com/gowinston-ai/winston-ai-mcp-server
⭐ Support
If you find this project helpful, please give it a star on GitHub!
Made with ❤️ by the Winston AI Team
Available Tools
4 toolsai-image-detectionAI Image DetectionARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Specifies 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
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.
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.
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.
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.
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.
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 DetectionARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | A 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. | |
| text | Yes | The text to scan. Texts under 600 characters may produce unreliable results and should be avoided. Maximum 150 000 characters per request. | |
| website | No | A 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
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.
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.
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.
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.
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.
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 DetectionARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The 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. | |
| country | No | The country code of the country where the text was written. We accept all country codes. Default: us. | us |
| language | No | 2 letter language code. We accept all languages. Default: en. | en |
TDQS
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.
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.
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.
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.
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.
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 CompareARead-only
Compares two texts and returns the similarity score. Cost: 0.5 credit per total words found in both texts.
| Name | Required | Description | Default |
|---|---|---|---|
| first_text | Yes | The first text to compare. Maximum 120,000 characters. | |
| second_text | Yes | The second text to compare against the first text. Maximum 120,000 characters. |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v1.0.11- First observed
ai-image-detection - First observed
ai-text-detection - First observed
plagiarism-detection - First observed
text-compare
TDQS
Scored across 4 tools
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.
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.
With 4 tools covering image and text AI detection, plagiarism, and comparison, the count is well-scoped for a focused content-authentication server.
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
Related MCP Connectors
MCP server for Wan AI video generation
MCP server for Qwen Image 3 AI image generation
MCP server for ByteDance Seedream AI image generation
MCP server for Flux AI image generation
Related MCP Servers
- AlicenseAqualityDmaintenanceLocal-first MCP server for Originality.ai workflows, including AI detection, plagiarism checks, readability, SEO scans, and scan-result retrieval for content teams.81AGPL 3.0
- AlicenseNot gradedqualityBmaintenancePlagiarism Checker AI - MCP server providing AI-powered tools and automation by MEOK AI Labs7 npm32 PyPIMIT
- AlicenseNot gradedqualityAmaintenanceMCP server offering text analysis tools for writing improvement, including spellcheck, readability, keyword analysis, passive voice detection, and AI-generated content detection.10MIT
- FlicenseAqualityCmaintenanceMCP server for Originality.ai that provides tools for AI detection, plagiarism checking, fact verification, readability analysis, grammar/spelling, and SEO optimization.52-