Plagiarism Checker Plus
Server Details
Plagiarism checker and AI detector for essays, research papers, theses, articles and blog posts. Find copied text with links to each source, and see how likely each sentence is to be AI-written by tools like ChatGPT. An AI score is a likelihood, not proof. Sign in with OAuth. Works with a free Plagiarism Checker Plus account.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct action: two scan starters (check_plagiarism for copied text, detect_ai for AI authorship) that the descriptions explicitly cross-reference, one result poller (get_scan_result), and one balance reader. The async two-step flow (start → poll) is spelled out in the descriptions, so an agent can tell exactly which tool to call when.
All four names follow a consistent snake_case verb_noun pattern: check_plagiarism, detect_ai, get_scan_result, get_word_balance. The get_ prefix groups the two read-only tools, and the scan-type tools read as actions, which matches their behavior.
Four tools is well-scoped for a metered async scanning service: two scan types, one result retriever, one balance check. Nothing appears redundant, and the minimum viable surface is covered without padding.
The core lifecycle is covered: initiate a scan, poll to completion, and verify balance before charging. Minor gaps exist in that there is no way to list or retrieve past scans without a saved scan_id and no cancel operation for an in-flight scan, but agents can work around both.
Available Tools
4 toolscheck_plagiarismCheck text for plagiarismAInspect
Plagiarism checker. Use when the user wants to know whether a text, such as an essay, research paper, thesis, article or blog post, copies or closely matches web sources. Starts a check in the background and returns a scan_id with status pending; the result is not in this reply. Then call get_scan_result with that scan_id. Uses one word from the user's balance for each word checked, so calling it again on the same text charges again. The text needs at least 30 words. If it is too short, too long for the user's plan, or the balance is too low, nothing is charged and the reply explains why. For likely AI writing, use detect_ai instead.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The full text to check, as plain text. Send the whole passage the user wants checked, not a summary. | |
| title | No | Optional label for this check in the user's reports. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| scan_id | Yes | |
| word_count | No | |
| words_charged | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false): it discloses that the work happens in the background, that the reply returns only a scan_id with status pending, that charges are per word and repeat on re-calls, and that short/oversized/insufficient-balance requests are not charged and return an explanation. That is exactly the cost and async-safety context an agent needs before invoking a billable mutation.
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?
Front-loaded with a one-line purpose, then usage, then async/cost behavior, then limits and the alternative. Six sentences, each carrying distinct actionable information with no restatement of schema or annotations.
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?
An output schema exists, so return structure need not be explained, and the description still flags the critical fact that the reply contains only a scan_id rather than the result. Combined with cost, limits, and the explicit follow-up tool, nothing an agent needs to call this correctly is missing.
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 already 100%, so the baseline is 3; the description adds a real constraint not in the schema - the text needs at least 30 words - plus the billing implication that each word checked consumes balance and re-running on the same text charges again. It does not explain the optional title parameter, keeping it just short of a 5.
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?
States a specific verb+resource: checks whether text 'copies or closely matches web sources', with concrete examples of text types. It also distinguishes itself from the sibling detect_ai, which handles AI-writing detection, so an agent can route without opening any schema.
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?
Explicitly gives the trigger ('use when the user wants to know whether a text... copies'), the exclusion ('for likely AI writing, use detect_ai instead'), and the follow-up step ('then call get_scan_result with that scan_id'). Alternatives and sequencing are fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_aiDetect AI-generated textAInspect
AI detector. Use when the user wants to know how likely it is that a text, such as an essay, paper or article, was written by AI tools like ChatGPT. Starts a check in the background and returns a scan_id with status pending; the result is not in this reply. Then call get_scan_result with that scan_id for an overall score and a likelihood for each sentence. The score is a likelihood, not proof that anyone used AI. Uses one word from the user's balance for each word checked, so calling it again on the same text charges again. The text needs at least 50 words. If it is too short, too long for the user's plan, or the balance is too low, nothing is charged and the reply explains why. For copied or matching text, use check_plagiarism instead.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The full text to check, as plain text. Send the whole passage the user wants checked, not a summary. | |
| title | No | Optional label for this check in the user's reports. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| scan_id | Yes | |
| word_count | No | |
| words_charged | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that the call is asynchronous ('starts a check in the background', returns scan_id with status pending, result not in this reply), that it costs one word of balance per word checked and re-charges on repeat calls, the 50-word minimum, and that failed preconditions (too short, too long, low balance) are not charged. It also frames the score as a likelihood, not proof — a caveat the annotations cannot express.
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?
Purpose and the when-to-use case are front-loaded, and every sentence carries information (async behavior, chaining, billing, limits, caveat). It is on the dense side — the billing and length-limit details sit in one long run — but there is no outright filler.
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 an async, billable, network-dependent tool the description covers initiation, the required follow-up call, cost semantics, input constraints, and failure behavior; return-value detail is unnecessary because an output schema exists.
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%, so the baseline is 3, but the description adds a hard validation rule not present in the schema ('The text needs at least 50 words') plus a plan-dependent length limit, which materially affects how the agent should prepare the text argument. It does not add anything for the optional title parameter.
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?
States a specific verb and resource ('AI detector' that scores how likely text was AI-written) and names the input types it handles (essay, paper, article). It also explicitly separates itself from check_plagiarism, so the agent can tell it apart from siblings without opening schemas.
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?
Gives an explicit when-to-use condition ('user wants to know how likely it is that a text was written by AI'), an explicit alternative ('For copied or matching text, use check_plagiarism instead'), and the required follow-up call to get_scan_result. Routing is fully determined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scan_resultGet a check's resultARead-onlyIdempotentInspect
Reads a check started with check_plagiarism or detect_ai. Use it after starting a check, and again until status is completed. Status is pending or processing while the check runs (usually 30 to 90 seconds), completed when results are ready, or failed if the check could not run, in which case the words are refunded. A completed plagiarism check returns a similarity score and up to 15 matching sources with their URLs and matched text. A completed AI check returns an overall score and up to 25 sentences with the highest likelihood. Every result includes a report_url for the full report. Only checks on the signed-in user's account can be read; an unknown scan_id returns an error. Free to call and changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| scan_id | Yes | The scan_id returned by check_plagiarism or detect_ai. | |
| wait_seconds | No | Optional. Up to 20 seconds to wait for a pending check to finish before replying, so one call can return the result. Defaults to 0, which replies at once with the current status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the status lifecycle, expected latency (30-90s), refund behavior on failure, the ownership restriction, and that an unknown scan_id errors. It also confirms the call is free and side-effect free, reinforcing rather than contradicting readOnlyHint/idempotentHint.
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?
Front-loaded with purpose and usage, then status semantics, then return shapes. It is dense but nearly every sentence carries operational value; the return-shape detail is slightly verbose given the length of the paragraph.
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?
No output schema exists, and the description compensates by describing exactly what a completed result contains (scores, up to 15 sources with URLs, up to 25 sentences, report_url). Combined with the status and error semantics, an agent has everything needed to call and interpret it.
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%, so both scan_id and wait_seconds are already documented in the schema, including the 20-second cap and default. The description adds no extra syntax or format detail for either parameter, so the baseline 3 applies.
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?
Opens with a specific verb+resource ('Reads a check') and immediately names the two sibling tools that produce the scan_id, so the agent can place it in the workflow without opening a schema. It also distinguishes the two result shapes (plagiarism vs AI) it can return.
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?
Explicitly states when to call it ('after starting a check, and again until status is completed') and names the alternatives that start checks. The polling loop and the terminal states are spelled out, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_word_balanceGet word balanceARead-onlyIdempotentInspect
Use when the user asks how many words they have left, or before checking a long text, to see whether the balance covers it. Returns the plan name, words used and left this month, the monthly limit, bonus words, the next reset date, and a link to plan details. A check uses one word per word checked for each tool run. Free to call and changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description earns credit for the economics rather than repeating them: "Free to call and changes nothing" clarifies that this call itself consumes no quota, which is the non-obvious fact an agent needs before calling it speculatively. The billing sentence ("A check uses one word per word checked for each tool run") is slightly convoluted and could momentarily be misread as this tool costing words, but the follow-up sentence disambiguates.
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?
Front-loaded with the trigger condition, then return contents, then cost. Three sentences, no filler. The billing sentence is the weakest link — its phrasing is denser than it needs to be — but nothing is extraneous.
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 and no parameters, the description carries the full burden of telling the agent what comes back, and it does so field by field including the reset date and plan link. Combined with annotations covering safety and no arguments to document, an agent has everything needed to call this correctly and interpret the result.
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 takes zero parameters, so the baseline is 4; there is nothing for the description to compensate for. The schema is empty with additionalProperties=false, consistent with the description's no-argument framing.
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?
Starts with a concrete trigger ("when the user asks how many words they have left") and a concrete resource (word balance), then enumerates exactly what comes back: plan name, used/left this month, monthly limit, bonus words, reset date, plan link. The sibling tools (check_plagiarism, detect_ai, get_scan_result) are all content-analysis operations, so an agent can tell this is the account-quota lookup without opening any schema.
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?
Gives two explicit use conditions: a direct user question about remaining words, and a pre-flight check before submitting a long text to see if the balance covers it. That second case is a genuinely useful proactive trigger an agent wouldn't infer. No explicit when-not or alternative is named, but with no param-less sibling covering the same ground, little is left ambiguous.
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
- First observed
check_plagiarism - First observed
detect_ai - First observed
get_scan_result - First observed
get_word_balance
Publisher details
- Operator
- Plagiarism Checker Plus · Publisher source
- Operator website
- https://plagiarismcheckerplus.com
- Vendor relationship
- First-party
- Documentation
- https://plagiarismcheckerplus.com/integrations/mcp
- Trust center
- Not available
- Restrictions
- Requires a Plagiarism Checker Plus account with a verified email address. A free account works. Each check uses words from the account's monthly allowance.
Related MCP Connectors
Check AI-written drafts against your source documents, with the passage behind every verdict.
Find AI-isms with evidence and fingerprint a writing voice from samples. 3 of 5 free.
AI search visibility: where ChatGPT, Perplexity, Gemini and Google AI cite you. OAuth sign-in.
Free read-only checks for evidence of AI use in text, links, images, saved prompts and C2PA.
Related MCP Servers
- AlicenseAqualityDmaintenanceA private, open-source AI-text checker. Get a read on whether text looks AI-written, the exact AI-tell spans to fix, a reuse check, and a grammar pass.4MIT
- AlicenseAqualityAmaintenanceBilingual (EN/ES) AI-writing detection that shows the evidence instead of a percentage: named tells with line and column, hidden-character inspection, and citation cross-checking against a document's own bibliography. Seven of its nine tools run entirely locally and never touch the network.1028MIT
- AlicenseAqualityCmaintenanceEnables users to check AI-assisted drafts for writing-pattern findings, locally clean selected hidden Unicode and lookalike characters, and optionally request API-key-authorized rewrites.3MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI content detection with sentence-level and paragraph-level AI probability scoring to identify and fix AI-generated text.36 PyPIMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.