Skip to main content
Glama

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:

  1. 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").

  2. 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.

  3. build_report(topic, sources) — assembles a citation-registry report shell (claims section + numbered registry + scoring appendix) for the scored sources.

  4. 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 build

Run over stdio (most clients):

npx research-scope-mcp

Or over Streamable HTTP (remote deployments):

npx research-scope-mcp --http --port 3001
# unauthenticated requests get 401 + WWW-Authenticate discovery, never a bare 403

Related 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 3001

Tools

Tool

Input

Output

plan_research

scope, optional domain_hints

source-target plan with kill criteria

fetch_and_score

source_url

0–100 score + flags (primary, freshness, paywall, COI), registered for reporting

build_report

topic, sources[] (must already be scored)

report shell saved under data/reports/, [Sn] citation numbering

check_report

report_id or report_path

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 tools
build_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/.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesReport topic / title
sourcesYesSource URLs previously scored with fetch_and_score

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
report_idNoReport id returned by build_report
report_pathNoPath to a report markdown file (overrides report_id)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_urlYesThe source URL to fetch and score

TDQS

A4/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, 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesWhat is being researched, e.g. 'verify vendor claim about NREMT 2025 exam change'
domain_hintsNoSuggested source domains, e.g. ['.gov', 'arxiv.org']

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 4 tool updatesv0.1.0
    • First observedbuild_report
    • First observedcheck_report
    • First observedfetch_and_score
    • First observedplan_research

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers