research-scope-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@research-scope-mcpResearch the impact of AI on healthcare and build a cited report."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
research-scope-mcp
Turn a scattered source set into a decision-ready, traceable report.
research-scope-mcp is an MCP server that runs a research-to-report workflow any
MCP client can drive end to end:
plan_research(scope)— turns a research scope into a source-target plan with kill criteria ("fewer than 1 primary + 2 independent secondaries → stop and report insufficient sources, don't proceed on thin evidence").fetch_and_score(source_url)— crawls one source and returns an explainable 0–100 quality score: primary-source detection, publication freshness, paywall and conflict-of-interest flags — every dimension returned with the evidence.build_report(topic, sources)— assembles a citation-registry report shell (claims section + numbered registry + scoring appendix) for the scored sources.check_report(report)— verifies every substantive claim cites ≥1 scored source. Orphan claims come back as an error list, not a pass.
The problem it solves: agent-written reports that sound confident but can't show where any sentence came from. This server makes scoring and citation coverage mechanically enforced, so the report is auditable by a human in 90 seconds.
Install
npm install -g research-scope-mcp # once published; local: npm ci && npm run buildRun over stdio (most clients):
npx research-scope-mcpOr over Streamable HTTP (remote deployments):
npx research-scope-mcp --http --port 3001
# unauthenticated requests get 401 + WWW-Authenticate discovery, never a bare 403Related MCP server: genpark-deep-research-cross-citation-graph-skill
Client config
Drop-in config snippets for Claude Code,
Cursor, and a Cline-friendly
llms-install.md.
Docker
docker build -t research-scope-mcp -f docker/Dockerfile .
docker run --rm -i -p 3001:3001 research-scope-mcp --http --port 3001Tools
Tool | Input | Output |
|
| source-target plan with kill criteria |
|
| 0–100 score + flags (primary, freshness, paywall, COI), registered for reporting |
|
| report shell saved under |
|
| pass/fail + orphan-claim error list |
Example walkthrough
See docs/runs/ for two worked runs with inputs and outputs, and docs/notes/ for what to do when something times out or 401s.
Scoring rubric
Dimension | Max | Notes |
Availability & substance | 20 | extractable text length |
Primary-source status | 32 | host class (gov/edu/filings) or self-published primary (press/announcement paths) |
Freshness | 24 | ≤30d full marks, decays to 2 at >5y, 0 if undetectable |
Access | 12 | paywall/registration walls lose marks |
Independence | 12 | sponsored/affiliate/partnership markers |
score ≥ 80 → A, ≥ 65 → B, ≥ 45 → C, else D. The rubric is inside
src/scoring/score.ts and returns its evidence, so a score is
auditable, not a vibe.
License
MIT. See SECURITY.md for reporting security issues.
Paid kit
This server is the free, tested core of the Research-to-Report MCP Kit (field guide, worked example packs, setup support). Available at the kit store — link in CHANGELOG.md updates.
Available Tools
4 toolsbuild_reportBuild citation-registry report shellA
Assemble a report shell from already-scored sources: claims section stubs, numbered citation registry, scoring appendix. Returns the markdown and saves it under data/reports/.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Report topic / title | |
| sources | Yes | Source URLs previously scored with fetch_and_score |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose the key side effect: the markdown is saved to data/reports/ in addition to being returned. It omits what happens on filename collisions, whether existing reports are overwritten, and any permission requirements, leaving meaningful gaps for a write-capable tool.
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?
Two dense sentences with zero filler; the output contents are front-loaded and the return/persistence behavior is stated last where it belongs.
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?
There is no output schema, so the description usefully states both the return value (markdown) and the storage location. For a two-parameter tool with fully documented schema this is nearly complete, though it could say what the saved artifact is named or how check_report consumes 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 description coverage is 100%, so the schema already documents both 'topic' and 'sources', including the 'previously scored with fetch_and_score' constraint that the description echoes. The description adds no new parameter-level detail, so the baseline 3 is appropriate.
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 (assemble) and resource (report shell) and enumerates the three sections it produces: claims stubs, numbered citation registry, scoring appendix. 'Shell from already-scored sources' implicitly separates it from plan_research and fetch_and_score, but no sibling is named explicitly.
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?
'From already-scored sources' implies the prerequisite that fetch_and_score must run first, which is genuine usage context. However, there is no explicit statement of when to call this versus check_report, or what to do if sources are unscored.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_reportCheck report citation coverageA
Verify every substantive claim in a report cites at least one scored source. Orphan claims are returned as an error list — never a pass. Accepts a report id (as built) or a markdown file path.
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | No | Report id returned by build_report | |
| report_path | No | Path to a report markdown file (overrides report_id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses a genuinely useful trait: orphan claims come back as an error list and the tool never reports a pass, plus the dual input mode and precedence. It stops short of stating whether the operation is read-only or how a clean report is represented.
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?
Two tight sentences with zero filler: the core behavior, including the 'never a pass' caveat, is front-loaded, and the input forms follow immediately. Every clause earns its place.
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 annotations and no output schema, the description does most of the required work, covering what is verified, the failure shape, and the two input routes. The notable remaining gap is that neither parameter is required, yet the description never says what happens if both report_id and report_path are omitted.
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 description coverage is 100%, so both parameters are already documented, including the 'overrides report_id' precedence. The description restates the accepted input forms but adds no format, syntax, or validation detail beyond the schema, so it meets the baseline rather than exceeding it.
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: verify every substantive claim in a report cites a scored source. It clearly sits downstream of build_report and is distinguishable from plan_research, fetch_and_score, and build_report 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?
The description implies the pipeline position by accepting a 'report id (as built)' and annotating the schema with 'Report id returned by build_report', so the workflow context is inferable. However, it never states explicitly when to use this versus the sibling tools, nor any when-not condition or prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_and_scoreFetch and score a sourceA
Crawl one source URL and return an explainable 0-100 quality score: primary-source detection, publication freshness, paywall and conflict-of-interest flags. Scores are registered for use in build_report/check_report.
| Name | Required | Description | Default |
|---|---|---|---|
| source_url | Yes | The source URL to fetch and score |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two non-obvious traits: the granular, explainable composition of the score and the side effect that results are persisted/'registered' for later use by other tools. It omits failure behavior for unreachable or paywalled URLs, crawl timeouts, and any rate limits, so it is good but not exhaustive.
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?
Two dense sentences, front-loaded with the action and result, followed by the integration note. Every clause (score range, sub-signals, registration) carries information; nothing is redundant 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?
There is no output schema, so the description must describe returns — and it does, naming the 0-100 scale and the individual signals that make the score explainable, plus where scores go next. It is nearly complete for a simple one-parameter tool, with only error/edge-case behavior left unstated.
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 description coverage is 100% and the single source_url parameter is already fully documented in the schema, so the baseline of 3 applies. The description's phrase 'one source URL' only reinforces the single-URL scope; it adds no format, validation, or constraint detail beyond the schema.
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 (crawl/fetch and score) on a specific resource (one source URL) and enumerates the return payload: a 0-100 score plus primary-source, freshness, paywall and conflict-of-interest components. It also positions itself against the siblings by naming build_report/check_report as consumers of the registered scores, so an agent can tell it apart from those tools.
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?
The description hints at pipeline placement by noting scores are 'registered for use in build_report/check_report', which implies this runs per-source ahead of report building. However, it never states when to use it versus plan_research or how many sources to process, and gives no exclusions or prerequisites — usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_researchPlan research scopeB
Turn a research scope into a source-target plan with kill criteria: primary-source targets, corroborating targets, and when to abandon the topic for lack of sources.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | What is being researched, e.g. 'verify vendor claim about NREMT 2025 exam change' | |
| domain_hints | No | Suggested source domains, e.g. ['.gov', 'arxiv.org'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses what the tool produces (targets plus kill criteria), but says nothing about whether it is read-only, whether it persists anything, or what the returned plan looks like structurally.
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?
One dense sentence, front-loaded with the core transformation and then the payoff (kill criteria). Every clause earns its place and nothing is padded.
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?
There is no output schema and no annotations, so the description is the only source of behavioral and return-value information. It hints at the plan's components but is thin for a tool whose entire value is the shape of the plan it emits.
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 description coverage is 100% for both parameters, so the schema already documents 'scope' and 'domain_hints' with examples. The description adds no syntax, format, or constraint detail beyond that, making the baseline 3 appropriate.
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?
The description gives a specific verb+resource ('turn a research scope into a source-target plan') and enumerates the plan's contents (primary-source targets, corroborating targets, kill criteria). It is clearly distinct from fetch_and_score/build_report/check_report in substance, but it never names or contrasts those siblings, so the differentiation is implicit.
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?
There is no statement of when to use this tool versus the sibling tools, nor any prerequisites (e.g. 'call before fetch_and_score'). The only conditional language ('when to abandon the topic') describes the plan's content, not the tool's usage context.
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
v0.1.0- First observed
build_report - First observed
check_report - First observed
fetch_and_score - First observed
plan_research
TDQS
Scored across 4 tools
Each tool occupies a distinct stage of a linear research pipeline: plan_research (planning), fetch_and_score (acquisition), build_report (assembly), and check_report (verification). There is no overlap in purpose, so an agent can select unambiguously.
All names use snake_case with a verb-led pattern (plan_research, build_report, check_report), which is predictable and readable. fetch_and_score is the one deviation, using a compound verb_and_verb form rather than verb_noun, but it remains clear.
Four tools is well-scoped for a focused research workflow, with each tool earning its place as a pipeline stage. It is slightly lean, as there is no dedicated source-discovery step, but nothing is redundant.
The surface covers the full lifecycle: plan, fetch+score, build, and verify, including a citation registry and orphan-claim checking. The main gap is source discovery/search, leaving the agent to supply URLs itself, but core workflows have no dead ends.
Maintenance
Related MCP Connectors
Read-only MCP over an agentic SLR workspace with per-claim citation verification
Read-only MCP over an agentic SLR workspace with per-claim citation verification
Research, draft and score cited SEO articles with claim-level evidence and hard quality gates.
Evidence-readiness MCP server: validate, audit, and score briefs, memos, and evidence packs.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables decomposition of complex research queries into multi-hop sub-queries and synthesis DAGs, with scientific consensus analysis, citation credibility verification, and deterministic JSON outputs for MCP-compliant clients.8-
- FlicenseNot gradedqualityBmaintenanceEnables autonomous research workflows to construct and analyze multi-source cross-citation graphs and resolve consensus from structured outputs via MCP.8-
- AlicenseNot gradedqualityBmaintenanceEnables autonomous multi-perspective deep research, evidence harvesting, and verified report synthesis with confidence scoring, directly from MCP-compatible clients.MIT
- AlicenseNot gradedqualityCmaintenanceEnables users to run autonomous multi-stage deep research directly from MCP-compatible clients, producing cited, publication-quality technical reports from web searches and unstructured data.1MIT