cite-gate

kr.co.mlpcv0.1.0更新於 Oct 9, 2026

Checks that every quote in an AI-written script appears word for word in its source.

已驗證Streamable HTTP可網頁執行Developer ToolsKnowledge & Memory

概覽

AI 產生的概覽

檢查 AI 撰寫文稿中的引文與數字,是否逐字出現在所提供的來源文字中。

功能
cite-gate 會用一組純文字來源檔案核對 claims 檔案。check_citations 工具會回報失敗與警告:引文在來源檔案中找不到、引文太短,或正文中的數字未出現在該項目的引文中;check_numbers 會列出文字中任何引文都不包含的數字。它也會警告疑似抄襲的段落、可能沒有出處的專有名詞與數量詞。它不判斷說法是否為真,只判斷所引句子是否存在。
適用情境
適合在借助 AI 起草文稿、文章或報告時使用,希望用自動化關卡確保每個事實項目都帶有可追溯至來源的引文。適用於仍需人工核對來源的審閱流程,也可在 CI 中對每次變更執行。
執行需求
可使用位於 的遠端 streamable HTTP 端點,或在本機以 stdio 執行 Python 伺服器(Python 3.10+,無相依套件)。輸入為 claims JSON 檔案與一個純文字來源資料夾,每個來源 id 一個檔案。未宣告帳號、API 金鑰或環境變數。
安裝前請注意
託管端點每次呼叫最多接受 3,000 字元的正文,並聲明不儲存文字但會記錄部分資料,清單見其 worker README;本機伺服器不發起網路請求,也不收集遙測。檢查是針對英文散文調校的啟發式規則,引文存在並不代表說法正確。來源本身可能有誤或被斷章取義,此工具只是縮小審閱範圍,不能取代審閱。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 cite-gate,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "cite-gate": {
      "type": "http",
      "url": "https://mcp.mlpc.co.kr/mcp"
    }
  }
}

README

cite-gate

A small checker for scripts written with AI help. It makes every factual item in a script carry a quote that appears word for word in a source file, and it flags prose that copies the source instead of retelling it.

It doesn't decide whether a claim is true. It decides whether you can point at the sentence your claim came from, and whether that sentence actually exists.

$ python -m cite_gate check examples/gettysburg/claims.json5 items · 91 words · 2 failures · 1 warnings  FAIL [number-not-in-quote] number(s) ['1776', '87'] not in the quotes  FAIL [quote-not-in-source] quote not found in 'gettysburg': 'this nation shall endure forever and ever'  warn [copied-not-retold] 26 consecutive words shared with the quotes; retell, don't copy

The example fails on purpose: its last three items are mistakes that a language model makes all the time (a number it worked out itself, a quote it half remembered, a paragraph lifted from the source).

Why

Language models write fluent prose with confident details. The details that go wrong are the small ones: a year that's off by one, a name added "for context", a quote paraphrased into something the source never said. Reading the whole script against the sources by hand doesn't scale. This tool turns that reading into a gate you can run on every change.

What it checks

CheckResult
Each quote exists in its source file (curly quotes, dashes and spacing normalised)failure
Each quote is at least 20 charactersfailure
Every number in the prose appears in that item's quotes (1,000 = 1000)failure
Source ids are plain names (no paths)failure
"hundred / thousand / million" in the prose but not in the quoteswarning
A capitalised word mid-sentence that isn't in the quotes (possible unsourced name)warning
11 or more consecutive words shared with the quotes (copying, not retelling)warning
Optional era rule: the prose names an era but the quotes don't tie the item to it; month names or "X era" phrases not in the quotes; special letters in the prosewarning / failure

Exit code is 1 when there are failures. --strict also fails on warnings.

Input format

A claims file (JSON) and a folder of plain-text sources, one file per source id.

json
{ "config": {"allow": ["Lincoln"], "copy_run": 11}, "sections": [  {"title": "The occasion",   "items": [    {"id": "opening",     "text": "He began by looking back four score and seven years ...",     "claims": [{"src": "gettysburg",                 "quote": "Four score and seven years ago our fathers brought forth on this continent, a new nation"}]}   ]} ]}

sources/gettysburg.txt holds the source text. Keep your own copy of each source (with its URL and revision noted at the top), so a later run checks against the same text.

Config

KeyDefaultMeaning
allow[]names accepted without a quote (the subject of the script, for example)
copy_run11shared-word run that counts as copying
min_quote_chars20shortest accepted quote
fold_accentsfalsecompare Tokaido in prose with Tōkaidō in the source
eranull{"name": "Victorian", "tie": "\\b18[3-9]\\d\\b", "months": true, "letters": ""}

Use

Command line (Python 3.10+, no dependencies):

pip install .            # from a checkout; adds the `cite-gate` commandcite-gate check path/to/claims.json [--sources DIR] [--json] [--strict]
# or without installingpython -m cite_gate check path/to/claims.json

GitHub Actions:

yaml
- uses: actions/checkout@v4- uses: cite-gate/cite-gate@v0  with:    claims: script/claims.json    strict: "false"

Use from your agent (MCP)

cite-gate ships a small Model Context Protocol server, so an agent can check its own draft before it shows it to you. It runs locally over stdio, has no dependencies, makes no network calls and collects no telemetry.

json
{  "mcpServers": {    "cite-gate": { "command": "python", "args": ["-m", "cite_gate.mcp_server"],                   "cwd": "/path/to/cite-gate" }  }}

Tools:

ToolInputOutput
check_citationsclaims (the format above) and sources ({id: full text})failures, warnings, passed
check_numberstext and quotesnumbers in the text that no quote contains

There's also a hosted endpoint at https://mcp.mlpc.co.kr/mcp (MCP Streamable HTTP, same two tools, up to 3,000 characters of prose per call). It doesn't store your text; what it does log is listed in worker/README.md. For zero logging, use the local server above.

Would a hosted version or a review service be useful to you? Tell us in Discussions.

Limits

  • The heuristics are tuned for English prose.
  • A quote that exists is not a claim that is correct. Sources can be wrong, and an item can cite a real sentence that says something else. The gate makes the review smaller; it doesn't replace it.
  • Proper-noun and quantity checks are warnings because they have false positives. Fix them or add the name to allow; don't learn to ignore them.

Example text

examples/gettysburg/sources/gettysburg.txt is the Gettysburg Address (1863), in the public domain, transcribed here from the Bliss copy. Small wording differences between Lincoln's manuscript copies exist; the checker compares against this file only.

License

AGPL-3.0-or-later. Copyright (C) 2026 MLPC Inc. (see LICENSE).

來源:README.md,提交 f5bee0a

工具

0
工具後設資料尚未被收錄。

版本歷史

1
  1. v0.1.0最新Oct 9, 2026