
Research Scan
org.synectic由 synectic.org 发布v0.6.4更新于 Nov 3, 2026
查找并排序对某个研究问题或项目最重要的近期科学论文。
AI 翻译由 AI 模型根据下方的原文描述翻译,可能有误。
原文描述
Finds and ranks recent scientific papers that matter most for a research question or project.
发布方自己的服务:scan.mx Email Diagnostics
概览
Research Scan 的本地 MCP 服务,由 synectic.org 发布;无需登录;STDIO。
暂无 AI 概览:以下信息来自注册中心条目和服务本身。
- 发布者
- synectic.org
安装
在 SourceWeft 中
- 打开 控制台中的 Research Scan,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
research-scan
Research Scan finds and ranks recent scientific papers that matter most for a specific research question, project, or decision. Starting from a brief or a single question, it retrieves the literature, expands through citation graphs, measures coverage, verifies every DOI against the live record, and emits evidence objects — while the agent driving it plans the queries, screens the candidates and ranks the shortlist. It is an evidence pipeline for a reasoning agent, not an assistant that answers questions.
Documentation: https://researchscan.synectic.org
The work is split in two, deliberately.
The CLI is deterministic and model-free. It retrieves across OpenAlex, Semantic Scholar and arXiv, walks the citation graph, dedups, counts coverage per criterion, shortlists, verifies every DOI against the live record, applies the selection rules and renders the result. It contains no LLM SDK and makes no judgement about a paper.
The agent supplies the cognition. Planning the queries, scoring each candidate 0–3, writing gap
queries when coverage is thin, and reranking the shortlist are all model decisions. The skill
packages the rubrics they are made against, as plain Markdown in skills/research-scan/references/;
whatever agent hosts it executes them.
Files are the interface between the two halves: the filesystem is the protocol boundary between reasoning and execution, not a storage detail. That is what lets Claude Code, Codex, Cursor or a plain Python loop drive the same chain over the same artifacts.
Bracketed steps are the agent's; the rest are CLI stages.
Two things bound the result. A purpose — build, research or orient — decides what a paper
has to do to earn a slot. A profile — quick, standard or deep — decides how much the scan
costs. Both are described under How it works.
Output is a run directory of validated JSON plus a Markdown brief you can hand to a human, in which every paper's DOI, title, year and first author were checked against the live record.
Install
Python ≥ 3.11 and uv.
Configure
configure asks for each credential, shows what is already set, writes
~/.config/research-scan/.env with mode 0600 inside a 0700 directory, and finishes by running
doctor.
Keys are read without echo. Re-running is safe: every variable shows its current value masked to the
last four characters, Enter keeps it, typing replaces it. Anything already in the file that
configure does not ask about — comments included — is left exactly as it was. If stdin is not a
terminal it prints the file to write and exits 2 rather than hanging, which is the behaviour you
want in a Dockerfile or a provisioning script.
To write the file by hand instead, .env.example in the repo is the template. Process environment
beats ~/.config/research-scan/.env, which beats a repo-local ./.env.
Check it works
doctor invokes every source live with the cache bypassed, rather than listing what it thinks is
configured.
Exit 0 means go. Exit 3 means a mandatory check failed; see Troubleshooting. The checks and the exit code are identical in all three output modes — only the presentation differs.
○ marks a source that is routed but has no retrieval adapter — see the
sources table. The probe still runs and still reports honestly: PubMed's
row says the E-utilities endpoint answered, which is a different claim from being able to
retrieve from it. doctor --json carries the same fact as sources_not_built, alongside a
providers map whose keys and values are unchanged.
Your first scan
With the skill installed, ask for a scan in your agent:
A one-line question works. A brief with context works better, because the planning step maps each section of it onto a specific part of the search plan. The template is
skills/research-scan/examples/brief.example.md — a worked build brief — and
brief.research-example.md is the same template at Purpose: research.
Results land in research/scans/<YYYY-MM-DD>-<slug>/. See Outputs.
Full argument list:
Connect your agent
Two front doors to the same pipeline. The skill is where the rubrics live, so it is the one that carries the screening and reranking cognition; the MCP server exposes the same four decision points as tools for any client that speaks MCP.
Claude Code — the skill
Any one of these; all three point at the same skills/research-scan/.
Codex and other Agent Skills hosts
The skill follows the open Agent Skills format, so the same folder serves
Codex, Cursor, Copilot and any other host that reads SKILL.md. Codex looks in ~/.agents/skills:
The CLI needs the network, which Codex's default sandbox blocks. Run research-scan doctor once
outside Codex (it creates the cache and config directories), then start a scanning session with
network access and the cache writable. Both apply to the whole session, not only to research-scan.
A full scan is a long, unattended task, so run it with codex exec and say that it should finish:
Outside a git repository, codex exec also needs --skip-git-repo-check.
Claude Code — the plugin
The plugin installs the skill and configures the uvx MCP server in one step; the .mcp.json route
below stays the path for non-plugin clients such as Claude Desktop and Cursor.
Any MCP client — stdio
research-scan mcp speaks MCP on stdin/stdout and nothing else. It reads no token and needs none:
the process is trusted because your client launched it. Nothing extra to install — the server
ships with the package.
Four tools, one per model decision the pipeline needs: scan_start (you supply the query plan),
scan_continue (screening scores, gap queries, or a page of rerank entries), scan_verify and
scan_result. They are not a chat endpoint over the pipeline: each is a decision point where a
judgement is needed, and the client's model supplies exactly the cognition the skill would — same
stage order, same artifacts. The adapter drives the CLI as a subprocess and reads its exit codes.
Run research-scan mcp --help for the other transport.
How it works
Each stage is idempotent and re-runnable: change queries.json or pass a flag and re-run from the
stage it affects. The CLI owns candidates.json, shortlist.json, manifest.json and
evidence.*; the agent owns queries.json, screen.json and ranked.json. Neither edits the
other's files.
Purpose
Declared on the brief's Purpose: line, or inferred. It decides which sub-criteria the plan derives,
what screening counts as relevant, and what why_it_matters has to argue.
Profiles
One flag sets how much the scan costs. --profile belongs to init and is recorded in the manifest;
an explicit flag still overrides it — --per-query 60 means 60 whatever the profile says.
The out-of-window total is a budget for the whole run, not a per-stage allowance. Start at
standard; use quick for "what is out there" and deep when a miss is expensive. Measured recall
for each is under Measured results.
The gap round
Runs at most once, and on standard only when coverage reports that the criteria are unevenly
covered or that a query came back nearly empty — otherwise it is skipped and the report says so.
coverage counts, per sub-criterion, how many papers screening kept; the agent writes one or two
queries against the criteria that came back thinnest; retrieve --round 2 and expand --round 2
add what they find. Round 1's papers and their scores are never discarded — the pool only grows.
Supported sources
--domain picks the routing: behavioral and general → OpenAlex + Semantic Scholar; cs → those
plus arXiv; biomed → those plus PubMed. --sources overrides the map outright.
Measured results
Two curated golden topics — behavioural economics and LLM literature-search agents — scored at the candidates stage and by an independent judge model. These are two topics, not a benchmark against other tools.
Judged precision of the in-window top 10: 0.875 on both topics, by an independent judge.
Recall climbs with the pool and efficiency falls with it: quick returns 0.199 recall per 100
candidates screened on topic 1 where deep returns 0.157. What separates the profiles most is the
out-of-window budget (12 / 20 / 30) — topic 1's remaining misses are all pre-window classics, and
each step up admits one more.
Full tables, what was tried and reverted, and the rules the numbers obey:
docs/measurements.md.
Outputs
Everything lands in research/scans/<YYYY-MM-DD>-<slug>/:
A paper whose DOI did not resolve, or whose title, year or first author disagreed with the live
record, is flagged, not silently repaired: it ships with mismatches[] and an [UNVERIFIED — check manually] marker. Only retraction removes a paper.
Print any data contract with research-scan schema --name <Model>, or all of them as Markdown with
research-scan schema --md.
Cost and time
Wall clock tracks the candidate pool, because screening is the long pole. Measured end to end
(counts.wall_clock_s, init → emit):
OpenAlex bills ≈ $0.008 either way — per_page is free depth, so pool size costs almost nothing in
API money.
Agent tokens are the real cost, and they do not fall as fast as the pool does: the 120-candidate
run still cost ≈ $5.70 in frontier-model tokens and ran only 3 minutes quicker than the
250-candidate one, because reranking (52 full records, regardless of pool size) and fixed stage
overhead dominate once screening is small. --max-candidates is the right dial for a runaway cs
pool, not a way to make a scan cheap.
The default cap scales with the number of built sources (450 × n/2, so 675 for cs, 450 for two).
--max-candidates and --per-query belong to retrieve and override it per run. Both are run
flags, not config.
Headless
The skill returns a ScanSummary, so a scan can run unattended and hand structured JSON to whatever
comes next:
Ask for the skill in prose; do not use a bare /research-scan … slash command here. The skill
declares context: fork, so a bare slash command runs entirely inside the fork and the session
returns num_turns: 0 with result: "Command completed" — the scan succeeds and writes its run
directory, but there is no top-level assistant turn for --json-schema to bind to and
structured_output comes back null. Phrasing it as an instruction makes the session invoke the
skill, receive the fork's report and emit the ScanSummary itself, which is what the schema
attaches to. Verified both ways on 2026-08-19.
Two more flags to get right:
--plugin-diris unnecessary if the skill is already installed under~/.claude/skills/. Never combine it with--bare: bare mode skips--plugin-dir, so the skill would not load at all.--allowedToolsmust carryBash(research-scan *),Read,Write,Edit,GlobandGrep: the skill's ownallowed-toolsline, minus the fourscan_*MCP tools a headless run does not use.
Not for
Systematic reviews. There is no PRISMA trail and no workflow for screening thousands of records.
Manuscript citation management. evidence.bib is a courtesy, not a library. Use a citation
manager.
Full-text work. Retrieval and screening run on titles, abstracts and metadata. No PDF is fetched, parsed or read.
Google Scholar, Scopus, Web of Science, PsycInfo are not sources and are not planned: none offers a personal-key API or a ToS-compatible path.
Troubleshooting
doctor exits 3. A mandatory check failed — read the check name and fix that, rather than
working around it. A missing OPENALEX_API_KEY is a FAIL, and the OpenAlex probes are then
reported as SKIP rather than as passing, because they were never run. A missing S2_API_KEY or
NCBI_API_KEY is only a WARN: the scan still runs, throttled. The default output names what to
do; --verbose gives the full check list with timings, and --sources openalex,s2 narrows what is
checked.
Reading doctor from a script or an agent. doctor --json is the interface, and its keys are
stable. ready is the boolean, providers maps each checked source to ok / warn / fail /
skip — skip meaning the probe never ran, which is never the same as passing — and checks
carries every individual result. The exit code is the same in all three output modes.
arxiv HTTP 429, cs/physics routing skipped. arXiv rate-limits aggressively (the client already
holds to 1 request / 3 s) and returns 429 under load. This is a WARN, not a failure: cs scans fall
back to OpenAlex + Semantic Scholar, which carry arXiv preprints anyway — you lose the same-day
listings and one origin signal, not coverage. Re-run later if recency matters; per-source query
counts and failures are in manifest.json under retrieval.per_source.
Semantic Scholar backlog. S2 answers 429/503 when its queue is deep. http.py retries and then
returns the last response rather than raising — a bad status is data. Graph expansion falls back to
OpenAlex's bare-id reference list, which works but cannot be ranked (ordering it would cost a
metadata fetch per reference), so expansion recall drops. expansion.log.jsonl records it per call.
A stage exits 2. An agent-written file failed validation. The error lists every offending path; unknown keys are rejected everywhere, so a typo surfaces instead of being swallowed. Fix the file and re-run that stage.
research-scan mcp cannot import the server. fastmcp is a core dependency, so this means an
incomplete install rather than a missing option — reinstall with uv tool install research-scan.
research-scan version --json reports "mcp": "enabled" on an intact install.
Shell completion
Development
src/research_scan/schema.py is the source of truth: it generates the JSON Schema, the contract
docs the agent reads (skills/research-scan/references/schemas.md — regenerate it in the same
commit, a test compares them), and the exit-2 error messages.
AGENTS.md holds the operating doctrine, docs/measurements.md the
measured results behind the current defaults, and eval/ the golden-set harness
(research-scan eval --topic <t> --run <dir>).
drivers/ holds
experimental reference implementations of a cognition engine — code that produces the judgements a
scan needs, for people who want one driven by something other than a hosting agent. They live in
the repository only: nothing there is installed by the package, imported by it, or shipped in its
sdist or wheel, and no engine protocol ships in this release.
Documentation · CONTRIBUTING.md · SECURITY.md ·
CHANGELOG.md · CODE_OF_CONDUCT.md ·
CITATION.cff · LICENSE (Apache-2.0)
Dependencies keep their own licenses; THIRD_PARTY_LICENSES.md says what
they are and how to regenerate the table.
来源:README.md,提交 236ef88
工具
0版本历史
2- v0.6.4最新Nov 3, 2026
- v0.6.1Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
其他 Scan 集成
scan.mx Email Diagnostics
mx.scan官方发布者
远程 MCP 服务器,让助手对域名执行带评级的邮件送达率与 DNS 检查,涵盖 MX、SPF、DKIM、DMARC、黑名单等。
MTG Trade Scan
fr.mtg-trade
扫描万智牌卡册照片:上传页面图片并生成扫描任务,每天有免费页数,超出后按页付费。

mcp-guard
由 GitHub 账号 diegoperezg7 发布
面向 MCP 服务器的安全扫描器,检查工具投毒、工具遮蔽、权限过大、密钥泄露和传输层缺陷。

PredictionScan
由 GitHub 账号 JordanKarst 发布
衍生预测市场资金流、价格变动、交易者研究与新闻。11个只读工具。AI 翻译

x402-sec-scan
由 GitHub 账号 6mickswagger9 发布
本地 stdio MCP 服务器,为 AI 代理提供 x402 付费 API,通过 CDP facilitator 在 Base 上以 USDC 结算。