Skip to main content
Glama
JayOfemi

Byakugan: Private, open-source AI-text checker

by JayOfemi

AI Checker

Check whether writing reads as AI, on your own machine, then improve how it reads. Free and open source.

Two ways to use it.

1. In your browser

A static web app. Paste your text and get a read on how AI-like it sounds, with a plain-language explanation, a grammar pass, and a check against your own documents for reuse. Everything runs in the page, and nothing you paste leaves the browser.

Run it locally:

cd site
npm install
npm run dev

Related MCP server: humantext-mcp-server

2. Inside the AI you already use

A mcp server for your AI assistant (Claude Desktop, an IDE, any MCP client). It gives that AI a detection read plus the exact phrases that read as AI, so your own AI can check and rewrite your writing, on your machine.

For Claude Desktop, add this to claude_desktop_config.json and restart:

{
  "mcpServers": {
    "ai-checker": {
      "command": "npx",
      "args": ["-y", "@jayofemi/ai-checker"]
    }
  }
}

Claude Code users can install it as a plugin instead: /plugin marketplace add JayOfemi/byakugan, then /plugin install ai-checker@ai-checker.

Then tell your AI "use ai-checker to check this text" and paste what you want checked. Full setup, the tools, and how to verify it are in mcp/README.md.

What to expect

AI-text detection is a signal, not a verdict, and it is biased against non-native English writers. It is shown as a likelihood with its confidence, never a yes/no judgement. Stiff, even, stock-phrase-heavy writing reads high; varied, personal writing reads low. Use it on your own work.

Layout

Each folder is its own package with its own build. Node 22 (.nvmrc).

License

MIT. Copyright (c) 2026 Jay Ofemi.

Available Tools

4 tools
check_grammarCheck grammarA

Run a rule-based grammar and style check over the text, fully on-device, and return each issue with its character span, a message, the flagged text, and suggested fixes. Use it to tidy grammar and phrasing, before or after rewriting the flagged AI tells. Deterministic.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to analyze.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description discloses key behavioral traits: rule-based (not AI), fully on-device, deterministic. It also specifies return structure. However, it does not mention any limitations (e.g., text length, language support) or performance characteristics.

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: the first describes the action and output; the second gives usage context. Every sentence is necessary and front-loaded with the core purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description explicitly details the return fields (character span, message, flagged text, suggested fixes). It also provides usage context related to AI tells, making the tool's role clear within the sibling toolset. Complete for a single-parameter tool.

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?

The single parameter 'text' is fully described in the schema (100% coverage) as 'The text to analyze.' The description adds no additional meaning beyond what the schema already provides, meeting the baseline expectation.

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?

Description clearly states the tool performs a rule-based grammar and style check on text, specifies on-device operation, and details the output format (character span, message, flagged text, suggested fixes). It distinguishes from sibling tools (check_reuse, detect_ai_text, find_ai_tells) by targeting grammar/phrasing issues.

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?

Explicitly says to use it 'to tidy grammar and phrasing, before or after rewriting the flagged AI tells.' This provides context for when to apply the tool, though it does not explicitly state when not to use it or mention alternatives beyond the implied sibling tools.

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

check_reuseCheck reuse overlapA

Compare the text against reference documents you provide, using word shingles, and return the share of overlap and the verbatim shared passages. This is a local check against the documents passed in. It does not search the web or any plagiarism database. Deterministic.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to analyze.
referencesYesOne or more of your own documents to compare against.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the method (word shingles), scope (local, deterministic), and what it does not do (web search). It lacks details on case sensitivity or language handling but provides sufficient 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose. Every sentence adds value: first explains action, second clarifies scope, third adds deterministic nature. No wasted words.

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?

Given no output schema, the description adequately explains return values (overlap share and verbatim passages). It misses details like error behavior or size limits, but is complete enough for a simple check tool.

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%, so baseline is 3. The description mentions 'using word shingles' but does not add meaning about the parameters themselves, which are self-explanatory from the 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 action (compare text against references), method (word shingles), and output (overlap share and verbatim passages). It unequivocally distinguishes from siblings by specifying local check vs web search.

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 explains when to use it (local check, not web search) and implicitly that it's for comparing against provided documents. However, it does not explicitly state when not to use it or compare with alternatives, though the context is clear given sibling tools.

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

detect_ai_textDetect AI textA

Score how likely a passage reads as AI-written, fully on-device, with a per-signal breakdown and a confidence band. Returns a 0 to 100 likelihood, never a yes/no verdict. The signal is directional and biased against non-native English writers, so treat it as a second opinion and not proof. Get a read here, then call find_ai_tells to locate the spans worth rewriting.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to analyze.

TDQS

A4.9/5.0
Behavior5/5

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

Discloses on-device processing, per-signal breakdown, confidence band, no yes/no verdict, directional and biased nature. No annotations provided, so description fully handles transparency.

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 sentences, front-loaded with purpose and key traits, second sentence adds bias and recommendation. No fluff, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter, no output schema, no annotations, description covers purpose, usage, transparency, bias, follow-up tool. Complete for agent decision-making.

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?

Only one parameter 'text' with schema description 'The text to analyze.' Description adds context: 'passage', 'AI-written', 'reads as', enhancing meaning beyond schema. Baseline 3 for high coverage, but description provides valuable extra context.

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 it scores likelihood of AI-written text on a 0-100 scale with no yes/no verdict, distinguishes from sibling find_ai_tells by mentioning it provides per-signal breakdown and suggests using find_ai_tells for spans.

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

Usage Guidelines5/5

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

Explicitly says to treat as second opinion, not proof, and advises to call find_ai_tells after for rewriting. Also notes bias against non-native English writers, setting appropriate expectations.

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

find_ai_tellsFind AI tellsA

Locate the exact character spans that read as AI, covering stock phrasing, long dashes, and formulaic sentence openers. Returns a list of spans with start, end, the matched text, and a note. Use these to rephrase only the flagged parts and leave the rest of the writing intact. Deterministic.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to analyze.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It declares the tool as deterministic and describes the return format (list of spans with start, end, matched text, note). This discloses key behavioral traits.

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?

Three sentences, front-loaded with main action, no wasted words. Every sentence adds value.

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 tool with one parameter, no output schema, and no annotations, the description covers purpose, return structure, and usage hint. It lacks details like indexing but is sufficient.

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 parameter description 'The text to analyze.' The description adds context about analyzing text for AI tells but does not add new semantic details beyond the 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 verb (locate), resource (character spans that read as AI), and provides specific examples (stock phrasing, long dashes, formulaic sentence openers). It distinguishes from siblings: check_grammar, check_reuse, detect_ai_text, by focusing on exact spans for AI tells.

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 advises using results to rephrase only flagged parts, indicating when to use (targeted rephrasing). It does not explicitly state when not to use or compare to siblings, but the intent is clear.

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.0
    • First observedcheck_grammar
    • First observedcheck_reuse
    • First observeddetect_ai_text
    • First observedfind_ai_tells

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: grammar checking, reuse detection, global AI-likelihood scoring, and localized span detection. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (check_grammar, check_reuse, detect_ai_text, find_ai_tells) with uniform verb usage.

Tool Count5/5

Four tools is an appropriate scope for a text checker covering grammar, reuse, and two distinct AI-detection features. Not too few or too many.

Completeness4/5

The tool set covers grammar, reuse, and AI detection comprehensively. A minor gap is absence of a rewrite/repair tool, but the purpose is detection, not editing.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers