Atlas / MCP servers / rrrrrredy / research-toolkit

research-toolkitCAUTION

mcp/rrrrrredy/research-toolkit

Research methods, workflow tools, and independent review for AI agents, packaged as a Skill, plugin, and local MCP server.

Verdict
CAUTION
Grade
C
Trust score
77 /100
Exposed tools
7 4r · 3w · 0d
Transport
stdio
License
MIT
Stars
204
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](./LICENSE) [](https://github.com/rrrrrredy/research-toolkit/actions/workflows/framework-checks.yml)

English · 简体中文

Existing user and development tasks are independent tasks, and tests actually executed are real tests. Development use, publication and reuse do not change task identity; distinguish tasks by their research questions. Preserve the supplied sources and data, and report execution counts and outcomes from actual run records.

Help AI agents write research reports with concrete judgments, traceable sources, and explicit review choices.

Research methods · Callable workflow tools · Review choices. For industry research, product comparisons, company analysis, and technical research.

Quick start · Use with your agent · Research case · Evaluation results · Lite quickstart · Documentation

Quick start

Start with `lite`. Allow about 5–15 minutes with your agent ready to use. Copy this request; the topic and two fictional sources are supplied:

Use https://github.com/rrrrrredy/research-toolkit and read SKILL.md.
Choose profile=lite. Read examples/lite/start.en.json for the brief
and examples/lite/sources.md for the source notes.
Recommend a helpdesk plan for the six-person team in 350–500 English
words. Use only the supplied evidence, register sources and claims,
and draft section by section. Skip research_review and Full delivery
gates; complete all six Lite checklist items with concrete evidence.
Return the short report, separate source/claim records, and checklist.
Disclose the fictional evidence and absence of independent review.

You receive a **short report + sources/claims trail

Read from source at commit 27e4d01246ecOBSERVED · 2026-10-13
02

Exposed tools (7)

4 read · 3 write · 0 destructive.

ToolRiskDescription
research_check_draftreadCheck draft records and declared whole-artifact length before review or finish, without model calls.
research_check_reviewerreadCheck trusted reviewer configuration locally, without sending report data or paid model calls.
research_finishwriteVerify report delivery and publish its receipt/terminal state only when checks pass.
research_guidereadRead brief/collect/analyze/draft/review/revise/final methods without a task.
research_reviewwriteRun the configured content reviews and any declared audits, retaining original evidence.
research_startwriteCreate a research task or complete its missing brief. Returns its directory and stage guidance.
research_statusreadRead progress and stage methods. Optional stage advances to collect/analyze/draft/revise only
03

Trust audit

CAUTIONgrade C · trust 77/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (10 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (25)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
evals/studies/2026-10-10-lite-four-models/run_live_study.py:99
config={'schema_version':1,'profile':'lite','source_access':'fixed_supplied_sources','cohort_status':'prospective_development','publication_rights_confirmed':True,'selection_statement':'Five purposive
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/check_blinded_evals.py:150
settings = {**self.config["author"], "base_url": f"http://127.0.0.1:{server.server_port}/v1"}
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/check_profiles_reviewers.py:470
config = {"reviewers": [{"id": "http", "backend": "generic", "model": "synthetic", "base_url": f"http://127.0.0.1:{server.server_port}/v1"}]}
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/check_profiles_reviewers.py:485
"http://127.0.0.1:8000/v1", "http://[::1]:8000/v1"):
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/check_profiles_reviewers.py:488
for url in ("http://review.example/v1", "http://10.0.0.1/v1",
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
evals/diagnostics/2026-10-12-astra-calibration/code/check_judge_calibration.py.b64:1
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMw0KIiIiUmVhZC1vbmx5IGNoZWNrcyBmb3IgcHVibGljIGp1ZGdlIGNvbnRyb2xzOyBubyBtb2RlbCBjYWxscyBvciBxdWFsaXR5IHZlcmRpY3RzLiIiIg0KaW1wb3J0IGFyZ3BhcnNlDQppbXBvcnQgY29weQ0KaW1wb3J0IGhh
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
evals/diagnostics/2026-10-12-astra-calibration/code/codex_judge.py.b64:1
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiJGcmVzaCwgdG9vbC1kaXNhYmxlZCBDb2RleCBqdWRnZSB0cmFuc3BvcnQuIENMSSBtb2RlbCBpZGVudGl0eSBpcyByZXF1ZXN0ZWQgb25seS4iIiIKaW1wb3J0IGpzb24KaW1wb3J0IG9zCmZyb20gcGF0aGxpYiBpbXBv
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
evals/diagnostics/2026-10-12-astra-calibration/code/run_blinded_evals.py.b64:1
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMw0KIiIiUHJlcGFyZSBvciBydW4gYSBzZWVkZWQsIGZpeGVkLXNvdXJjZSwgaW5zdHJ1Y3Rpb24tb25seSBMaXRlIHBhaXJ3aXNlIHBpbG90LiIiIg0KZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9ucw0KaW1wb3J0
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
evals/diagnostics/2026-10-12-astra-calibration/code/run_judge_calibration.py.b64:1
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiJGcmVlemUgYW5kIGV4ZWN1dGUgcHVibGljIGNhbGlicmF0aW9uIGNvbnRyb2xzIGluIGZyZXNoIENvZGV4IGp1ZGdlIGNvbnRleHRzLiIiIgppbXBvcnQgYXJncGFyc2UKZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRp
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
evals/diagnostics/2026-10-12-longcat-format/driver.py.b64:1
IiIiTmV3IGZyb3plbiBMb25nQ2F0IGZvcm1hdCBwcm9iZXM7IG5ldmVyIHNhbHZhZ2Ugb3IgcmVzY29yZSBkZXZlbG9wbWVudCBmYWlsdXJlcy4iIiIKZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lCmltcG9ydCBnZXRwYXNzCmltcG9ydCBo
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/check_development_evidence.py:28
h.require(h.sha(base64.b64decode((root / (name + ".py.b64")).read_bytes().strip(), validate=True)) == plan[name + "_sha256"], "Format code archive mismatch")
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/check_feedback_probes.py:33
raw = base64.b64decode(safe(root, name + ".b64").read_bytes().strip(), validate=True)
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/check_live_diagnostics.py:54
raw = base64.b64decode(local(root, "code/" + name + ".b64").read_bytes().strip(), validate=True)
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/check_research_workflow.py:912
self.assertEqual(base64.b64decode(result["capture"]["raw_output_base64"]["stderr"]), b"warning: \xff")
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/check_research_workflow.py:922
self.assertEqual(base64.b64decode(capture["raw_output_base64"]["stdout"]), b"broken \xff")
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/case-study/api-or-browser/reviews/01-draft-review.html:71
<p id="L58"><strong>S08: <a href="https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/choosing-permissions-for-a-github-app">GitHub: Choosing permissions for a GitHub App</a>
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/case-study/api-or-browser/reviews/01-draft-review.md:58
- **S08: [GitHub: Choosing permissions for a GitHub App](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/choosing-permissions-for-a-github-app)** — Read: About GitHub App
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/case-study/api-or-browser/reviews/02-final-review.html:71
<p id="L59"><strong>S08: <a href="https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/choosing-permissions-for-a-github-app">GitHub: Choosing permissions for a GitHub App</a>
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/case-study/api-or-browser/reviews/02-final-review.md:59
- **S08: [GitHub: Choosing permissions for a GitHub App](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/choosing-permissions-for-a-github-app)** — Prior reading: About G
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/case-study/report.en.html:135
<p>Coze brings native agents, cloud-hosted third-party agents, and local connections into one collaboration interface. Native agents include platform scheduling, email, and cloud resources; third-part
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOInventory / provenance · inv.oversize · CWE-1104
docs/assets/api-browser-walkthrough.en.gif
docs/assets/api-browser-walkthrough.en.gif
Why it matters. 5187657 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/assets/api-browser-walkthrough.en.mp4
docs/assets/api-browser-walkthrough.en.mp4
Why it matters. 1433573 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/assets/case-walkthrough.gif
docs/assets/case-walkthrough.gif
Why it matters. 2019673 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/assets/case-walkthrough.mp4
docs/assets/case-walkthrough.mp4
Why it matters. 1232916 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/assets/case-walkthrough.zh-CN.gif
docs/assets/case-walkthrough.zh-CN.gif
Why it matters. 2436805 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-10-13 · audit v0.4.1 · source sha 27e4d01246ecfull audit observations/trust-audit/mcp-server/rrrrrredy__research-toolkit.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1327e4d01246ecCAUTIONC77first audit
05

Questions

What is the research-toolkit MCP server?

Research methods, workflow tools, and independent review for AI agents, packaged as a Skill, plugin, and local MCP server.

What tools does research-toolkit expose?

7 in total: 4 read-only, 3 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is research-toolkit safe to connect to an agent?

With care. The audit graded it C (77/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does research-toolkit need?

No credential environment variables were found in its source, so it appears to need none.

How does research-toolkit run?

It speaks stdio, so it runs as a local process your client starts.

How current is this page?

The grade is for one exact copy of the source (27e4d01246ec), read on 2026-10-13. The repository is watched and re-audited when it changes.

Advertisement