Skip to main content
Glama

robins-i-mcp

An MCP server implementing ROBINS-I V2 (Risk Of Bias In Non-randomized Studies – of Interventions, follow-up/cohort variant) as a deterministic, provenanced assessment engine.

Sibling to target-mcp, which scores how completely a target-trial-emulation study reports what the TARGET guideline requires. This one assesses risk of bias in one specific result. The two are complementary on the same paper.

The source is a draft. riskofbias.info presents the 20 November 2025 release of ROBINS-I V2 as still a draft, subject to change. Every report stamps that in its provenance line. See NOTICE and TRANSCRIPTION-NOTES.md.

Follow-up cohort studies. "Follow-up" and "cohort" name one structural property — a defined time zero, individuals followed forward under the contrasted strategies — so read the property, not a design label. Target trial emulations are the central use case and are cohort studies in exactly this sense; both worked examples below are TTEs. Designs with no follow-up structure are out. No variant for other designs is published yet. Note that "Variant A / Variant B" inside the tool means the two forms of Domain 1 selected by C4 — not a study design.

What makes it different from asking a model

The model's contribution is bounded at answering signalling questions from the text. It cannot compute a judgement and it cannot invent evidence.

1  parse_document              PDF + supplement → SectionMap        deterministic
2  cue detection               where to look, per domain            deterministic
3  answer signalling questions quotes copied from the bundle        MODEL
4  evidence binding            quotes → offsets, or REJECT          deterministic
5  algorithms                  answers → domain → overall           deterministic
6  report + render             stamped artifact                     deterministic
7  human ratification          P1, reviewer-prior answers, overrides

Three rules are enforced at submission, and they are the point of the server:

  • Quotes resolve or die. Every quote is matched to character offsets in the ingested bundle through a three-pass ladder (exact → hyphen-relaxed → references-stripped), and the winning pass is recorded so a loose match is never silently equated with an exact one. An unresolvable quote is rejected with the nearest actual text.

  • Absence is searched, not asserted. A manuscript_absent answer names a cue; the server runs the search and attaches the record — terms, sections, hit count. A prose claim that you looked is refused.

  • Judgements are computed. No tool accepts a domain judgement as input. The six domain algorithms and the overall algorithm are explicit edge graphs traced from the published flowcharts. A human may override, with a recorded justification, and the report shows both values.

Related MCP server: LongBook Verifier

Two gates

P1 blocks domain 1. Question 1.1 asks whether all important confounding factors were controlled, and "important" is defined by the reviewer's prespecified list — not by the paper's covariate table. The server refuses to score domain 1 without set_prespecified_confounders rather than silently substituting one for the other. A list you propose is a candidate: it enters the ratification queue until a human accepts it.

C4 selects domain 1's question set. Whether the analysis accounts for protocol deviations picks variant A (intention-to-treat, baseline confounding only) or variant B (per-protocol, baseline and time-varying confounding), so specify_result requires it up front with no default. Judge it on what the analysis does, not on the label the authors give their estimand — on the reference paper, the protocol table says "per-protocol effect" and the analysis is intention-to-treat.

Install

pip install robins-i-mcp

Then register it with your MCP client:

{ "mcpServers": { "robins-i": { "command": "robins-i-mcp" } } }

Or run it with no install at all:

uvx robins-i-mcp

Also on the MCP registry as com.blackswancausallabs/robins-i-mcp.

Develop

python3 -m venv .venv && .venv/bin/python -m pip install -e ".[dev]"
.venv/bin/python -m pytest tests/ -q      # 205 passed
.venv/bin/robins-i-mcp                    # stdio MCP server

Tools

Group

Tool

Spec

get_spec

optional introspection; detail='compact'|'full'

Ingest

parse_document

PDF/docx/text + supplements → hash + cue survey

parse_pmcid

Europe PMC retrieval

Setup

set_prespecified_confounders

P1, review-scoped, blocks domain 1

specify_result

A1–A3, B1–B3, C1–C3, D1, and C4

Assess

assess_result

domain=0 overview, domain=1..6 scaffold

submit_answers

per domain; domain=0 finalizes and renders

Render

render_report

re-render of the stamped artifact

Review

export_robvis

many runs' records → one robvis CSV

Scaffolds are per domain, never one flat rubric: most signalling questions are unreachable on any given path, and which of domain 1's two sets exists at all depends on C4.

Pass the supplement. The target-trial specification that settles C1–C4, and the analysis detail domains 1 and 4 turn on, routinely live only in the appendix. Without it, those questions read NI when the answer was merely in a file nobody ingested.

Many studies: the record

A review of N studies is N runs. Each assessment costs a session, and the server keeps no state between them. So each run emits a small portable record — that is the deliverable that crosses the boundary:

session 1..N   assess one result -> save submit_answers(domain=0)['record']
later          export_robvis(records=[...]) -> one figure-ready CSV

A record is ~4 KB of flat JSON and depends on nothing in this codebase, so any later agent can consume it. It carries its own provenance — document hash, algorithm fingerprint, spec version, ratification state — so every row in the resulting figure traces back to a document, and the export can warn when a set mixes algorithm transcriptions.

export_robvis is not a column dump. robvis's ROBINS-I template is V1: seven domains, and V1 orders selection of participants before classification of interventions, which V2 swaps. The default layout places each V2 judgement in its correct V1 slot; a positional dump would parse, plot, and lie. Read the returned losses before publishing — robvis reduces every cell to its first initial over a five-fill palette, so the qualified low collapses to Low there whatever string is written.

See examples/review_from_records.py.

Worked examples

.venv/bin/python examples/dickerman_2022.py out.html          # library level
.venv/bin/python examples/jabagi_2026_server_run.py           # server level
.venv/bin/python examples/review_from_records.py             # across runs
  • Dickerman et al., NEJM 2022 — BNT162b2 vs mRNA-1273 in US veterans. Comes out low, except for concerns about uncontrolled confounding. 24 of 41 questions never reached.

  • Jabagi et al., Lancet Reg Health Eur 2026 — maternal RSVpreF vs infant RSV hospitalisation. Comes out serious, and the route is worth reading: domain 1 fails at 1.3 rather than 1.1, because gestational age at birth and birth weight are matched on despite being realised after the intervention.

The papers themselves are not in this repository — they are published articles and not ours to redistribute. Put your own copies in papers/, or point ROBINS_MCP_PAPERS at the directory holding them; the examples name the files they need and fail with that message if they are absent.

Documentation

  • docs/STATUS.md — current state and handoff. Read this first.

  • docs/DECISIONS.md — why things are the way they are, newest first.

  • docs/SESSION-NOTES-*.md — per-session narrative.

  • TRANSCRIPTION-NOTES.md — how the algorithms were obtained from raster flowcharts, the errata found in the published document, and what still needs external verification.

Licence

Apache-2.0 (LICENSE). The ROBINS-I V2 tool it implements is CC BY-NC-ND 4.0 and no part of it is reproduced here — see NOTICE for why that matters and what the actual constraint is.

Available Tools

9 tools
assess_resultA

Return the assessment scaffold for ONE domain: the questions actually in play, their own-words intent, the response vocabulary each accepts, what evidence each answer must carry, and the cue searches already run against this bundle with their hits.

THE SCAFFOLD IS PER DOMAIN BY DESIGN. Most signalling questions are unreachable on any given path — 24 of 41 were never reached on the reference assessment — and which of domain 1's two question sets exists at all is decided by C4. There is no flat 41-question rubric to fetch, and asking for one would mean answering questions the algorithm discards.

domain=0 (default) returns the overview: the preliminaries, what is settled, which domains are done, and which are outstanding. domain=1..6 returns that domain's scaffold. Domain 1 is refused until P1 is set.

Work a domain at a time: read the cues to find where the evidence is, answer only the questions the algorithm reaches, then submit_answers. You do not state a judgement — the server computes it from your answers.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNo
result_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
cuesNo
domainNo
variantNo
citationNo
algorithmNo
low_labelNo
questionsNo
result_idNo
structureNo
applies_ifNo
depends_onNo
text_sha256No
domain_labelNo
instructionsNo
spec_versionNo
answer_schemaNo
max_judgementNo
preliminariesNo
variant_labelNo
evidence_modesNo
low_label_noteNo
assessment_unitNo
confounding_noteNo
domains_completeNo
supplement_statusNo
max_judgement_noteNo
domains_outstandingNo
assessment_unit_noteNo
prespecified_confoundersNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well. It discloses the per-domain design, the default domain=0 overview, the refusal condition for domain 1 until P1 is set, and the fact that the server (not the agent) computes judgement. These are non-obvious behavioral traits that help avoid misuse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a dense paragraph, front-loaded with the main purpose and packed with necessary caveats (per-domain, unreachable questions, refusal, workflow). It is somewhat long but each sentence adds essential context, so it earns its place rather than being wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (per-domain scaffolds, conditional refusal, workflow), the description covers the key usage steps, domain semantics, and behavioral constraints. An output schema exists, so return values are covered by that; the description fills in the strategic context (work one domain at a time, then submit answers, server judges).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It clearly explains domain: default 0 returns overview, 1..6 return scaffolds, and 1 is refused until P1 is set. For result_id, it is referred to as 'this bundle' in the context of cue searches, implying it identifies the result bundle, though not as explicitly as domain.

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?

The description states a specific verb+resource: 'Return the assessment scaffold for ONE domain' and enumerates the scaffold's contents (questions, intent, vocabulary, evidence, cue searches). It also distinguishes this from a hypothetical flat 41-question rubric, making it clear this is per-domain only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use: 'Work a domain at a time' and then 'submit_answers' as the next step. It also gives a when-not-to-use: 'There is no flat 41-question rubric to fetch' and explains why asking for one would be wrong. This is clear contextual guidance with an alternative workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_robvisA

Combine assessment RECORDS from any number of runs into a CSV for robvis (McGuinness & Higgins), the standard tool for Cochrane-style risk-of-bias figures.

A review of 200 studies is 200 separate runs — each assessment costs a session, and nothing in this server survives between them. So pass records: the record object each submit_answers(domain=0) returns. They are small, flat and JSON-native, so a whole review's worth fits in one context, and they carry their own provenance so every row stays traceable to a document and an algorithm fingerprint. Omit records to use only what was assessed in THIS session (convenient, but session-scoped).

READ THE RETURNED losses BEFORE PUBLISHING THE FIGURE. It reports records that are not yet ratified, mixed C4 variants, equal weighting, and records built under differing algorithm transcriptions — each of which would make the figure claim more than the assessments support.

This is not a column dump, because robvis's ROBINS-I template is ROBINS-I V1 and V2 is not drop-in compatible:

  • V1 has SEVEN domains and orders selection of participants BEFORE classification of interventions. V2 has six and swaps that pair. Writing V2's columns out in order loses no data and raises no error — it just prints your classification judgement under the heading "Bias due to selection of participants". layout='robins_i' (the default) places each V2 judgement into its correct V1 SLOT and marks the dropped deviations domain NA. Upload it with tool='ROBINS-I'.

  • layout='generic' writes six columns headed with V2's own domain names, for tool='Generic'. The headings are then right, but robvis relabels the judgements into ROB1's vocabulary — Moderate becomes "Some concerns", Serious becomes "High". Prefer 'robins_i'.

Neither layout can carry 'Low, except for concerns about uncontrolled confounding': robvis reduces every cell to its first initial over a five-fill palette, so it collapses to Low whatever string is written. Say so in the figure caption.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNo
layoutNorobins_i
recordsNo
weightsNo
review_idNo
result_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
csvNo
rowsNo
usageNo
headerNo
layoutNo
lossesNo
summaryNo
filenameNo
n_resultsNo
review_idNo
robvis_toolNo
content_typeNo
slot_mappingNo
content_base64No

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses session-scoped behavior, that `losses` reports unratified records, mixed C4 variants, equal weighting, and differing algorithm transcriptions. It also explains the V2-to-V1 slot mapping, the relabeling in generic layout, and the limitation with 'Low, except for concerns about uncontrolled confounding'. This is exceptional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: front-loaded purpose, bolded warnings, and bulleted layout details. Each section earns its place given the complexity. It is not overly verbose for the amount of critical behavioral and layout information it conveys.

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?

The description thoroughly covers the core workflow (records, layout, losses) and important caveats. It lacks explanation of the remaining parameters, but overall it is highly complete for a complex tool with no annotations. An output schema exists, so return values are already specified elsewhere.

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 coverage is 0%, so description must compensate. It provides deep, valuable semantics for `records` (the object from submit_answers) and `layout` (difference between robins_i and generic). However, it does not mention `labels`, `weights`, `review_id`, or `result_ids`, leaving four of six parameters undocumented. This is a partial but incomplete compensation.

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?

The description opens with a clear, specific verb and resource: 'Combine assessment RECORDS from any number of runs into a CSV for robvis'. It also names the exact output (robvis CSV) and distinguishes it from siblings by focusing on exporting assessment records for the risk-of-bias figure tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to pass `records` vs. omit it ('Omit records to use only what was assessed in THIS session'), when to read `losses` before publishing, and which layout to prefer ('Prefer 'robins_i' over 'generic'). It also clarifies when to use `layout='generic'` as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_specA

Return the encoded ROBINS-I V2 specification: 13 preliminaries, 40 signalling questions across 6 domains (domain 1 in two variants), the response vocabularies, the evidence policy, and the algorithm fingerprint.

OPTIONAL in the assessment flow — introspection only. assess_result already carries the rubric for the domain in hand, so calling both duplicates the payload. detail='compact' (default) gives question ids, own-words labels, response options and evidence modes; detail='full' adds every intent and assessor note.

The descriptions are this implementation's own wording, NOT the published signalling-question text, which is not redistributable. The published question IDs are what make the output interoperable.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNocompact
spec_versionNorobins-i-v2-cohort-0.1.0

Output Schema

ParametersJSON Schema
NameRequiredDescription
domainsNo
judgementsNo
attributionNo
spec_versionNo
tool_versionNo
preliminariesNo
source_statusNo
variant_scopeNo
assessment_unitNo
evidence_policyNo
guideline_scopeNo
override_policyNo
judgement_sourceNo
human_ratificationNo
response_semanticsNo
source_status_noteNo
variant_scope_noteNo
assessment_unit_noteNo
algorithm_fingerprintNo
judgement_source_noteNo
response_vocabulariesNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description takes full responsibility. It discloses that calling this tool alongside assess_result duplicates payload, that the spec descriptions are this implementation's own wording and not the redistributable published text, and that published question IDs ensure interoperability. These are meaningful behavioral traits beyond a simple 'return spec'. It doesn't explicitly mention permissions or side effects, but 'Return' suggests a read-only operation.

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?

The description is organized into three focused paragraphs: what it returns, usage guidance, and a legal/behavioral caveat. The first sentence front-loads the core purpose, and every subsequent sentence adds distinct value—no filler. Despite being longer than some tool descriptions, this length is justified by the need to cover copyright and duplication warnings.

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?

Given the tool's complexity and the presence of an output schema (which handles return-value details), the description covers the essential context: purpose, usage, parameter semantics for detail, and licensing limitations. The only gap is the unexplained spec_version parameter, though its name and default make it reasonably clear. Overall, the description provides a complete picture for an optional introspection tool.

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?

The description thoroughly explains the detail parameter: 'detail="compact" (default) gives question ids, own-words labels, response options and evidence modes; detail="full" adds every intent and assessor note.' However, it does not explain the spec_version parameter, which is only inferable from its name and default value. With schema description coverage at 0%, this partial compensation is adequate but not complete.

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?

The description opens with 'Return the encoded ROBINS-I V2 specification' and enumerates its contents (preliminaries, signalling questions, response vocabularies, etc.), which is a specific verb+resource. It also distinguishes itself from assess_result by explicitly labeling itself as 'OPTIONAL in the assessment flow — introspection only', making the tool's role clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'OPTIONAL in the assessment flow — introspection only. assess_result already carries the rubric for the domain in hand, so calling both duplicates the payload.' This tells the agent when to use it, when not to, and names the alternative. It also explains the difference between compact and full detail, guiding parameter selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_documentA

PRIMARY entry point: parse a study report into a bundle with character-offset, source-tagged section spans. Every quote you later cite is resolved against THIS text, and every claim of absence is searched in it.

PASS citation=: the full bibliographic reference in APA style. It appears on the rendered assessment so the study being judged is unambiguous.

document is EITHER the raw text OR a file path — but the path must be readable on the SERVER host. If your files live on your own filesystem, paste the TEXT instead, or use parse_pmcid for an open-access PMCID. A path-looking string the server cannot find raises rather than being ingested as its own text.

PASS THE SUPPLEMENT WHEN YOU HAVE IT. supplements is a list of server-readable paths merged as supplementary material. This matters more for ROBINS-I than for a reporting audit: the target-trial specification that settles C1-C4, and the analysis detail domains 1 and 4 turn on, routinely live only in the appendix. Without it those questions read NI when the answer was merely in a file nobody passed. supplement_status defaults to 'user_provided' when supplements are given; pass 'none_exists' to assert the article has none.

Returns the section map, the text hash that keys later calls, and a cue survey — hit counts for the 15 evidence patterns, so you can see before reading where each domain's evidence lives and which absences already look real.

ParametersJSON Schema
NameRequiredDescriptionDefault
citationNo
documentYes
supplementsNo
manuscript_idNo
supplement_statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceNo
n_pagesNo
citationNo
sectionsNo
warningsNo
documentsNo
full_textNo
next_stepNo
cue_surveyNo
text_sha256No
manuscript_idNo
extractor_versionNo
supplement_statusNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses error behavior (server-unreadable paths raise), defaults (supplement_status), and the foundational property that all later citations resolve against this parse. It also explains the return value's structure (section map, text hash, cue survey).

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?

Although lengthy, every paragraph is dense with necessary operational details (alternatives, defaults, error handling). The critical 'PRIMARY entry point' is front-loaded, and there is no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's role, parameter handling, error conditions, return values, and relationship to later calls. Given the output schema exists and the tool is complex, this is fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds detailed semantics for citation, document, supplements, and supplement_status, which are absent from the schema. However, manuscript_id is not mentioned at all, creating a gap in understanding for that parameter.

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?

The description opens with 'PRIMARY entry point' and a specific verb-object: 'parse a study report into a bundle with character-offset, source-tagged section spans.' It explicitly contrasts with parse_pmcid, distinguishing the tool's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: pass citation for APA reference, use text directly if files are local, use parse_pmcid for open-access, pass supplements when available, and set supplement_status to 'none_exists' when appropriate. This clearly indicates when to use this tool vs siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_pmcidA

CONVENIENCE entry point: retrieve an open-access article from Europe PMC by PMCID and parse it, main text plus PMC-hosted supplements, merged into one source-tagged bundle. Use it when you have no file in hand, or to auto-fetch an open-access paper's supplement; for a manuscript you were given, use parse_document.

supplement_status is 'retrieved' when a supplement was obtained, else 'not_retrieved' — a supplement may still exist on the publisher site, so absence of retrieval is never proof of absence. Raises if no open-access full text is available. An APA-style citation is built from the article's JATS metadata; pass citation= to override it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pmcidYes
citationNo
include_supplementsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceNo
n_pagesNo
citationNo
sectionsNo
warningsNo
documentsNo
full_textNo
next_stepNo
cue_surveyNo
text_sha256No
manuscript_idNo
extractor_versionNo
supplement_statusNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does so well: it discloses the raising behavior when no open-access full text exists, the meaning of supplement_status, and that absence of retrieval does not prove absence of a supplement. These are non-obvious and important behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but each sentence adds value: purpose, usage alternative, edge-case behavior, and citation override. It is slightly longer than necessary, but well-structured and front-loaded with the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return structure need not be repeated. The description provides error behavior, supplement semantics, citation override, and sibling-tool differentiation, making it complete for an agent to select and invoke correctly.

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 0%, so the description must compensate. It explicitly explains the citation override parameter and implies include_supplements behavior through the supplement-fetching context, but it never names or fully clarifies include_supplements as a boolean toggle. Partial compensation with a clear gap.

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?

The description clearly states the tool retrieves an open-access article from Europe PMC by PMCID and parses it into a source-tagged bundle. It immediately distinguishes itself from parse_document, making it specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use this when no file is in hand or to auto-fetch an open-access supplement, and directs users with a manuscript to parse_document instead. This is clear when-to-use and alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_reportA

Re-render a finalized assessment as a self-contained HTML page — the meta panel, the six-domain summary strip, the per-domain judgement with its algorithm trail and the evidence behind every answer, styled to the Black Swan Causal Labs identity and carrying the provenance stamp.

Returns the HTML in html (display it inline or publish it as an artifact) and the same bytes base64-encoded in content_base64 (decode and save as .html). This is a pure re-render of the artifact submit_answers already stamped — nothing is re-scored. The assessment must have been finalized this session; the cache does not survive a server restart.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
result_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
htmlNo
domainsNo
overallNo
citationNo
filenameNo
result_idNo
provenanceNo
attributionNo
content_typeNo
overall_labelNo
content_base64No
ratification_queueNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the output format (HTML and base64), the pure re-render behavior, that nothing is re-scored, the session-finalization requirement, and that the cache does not survive a server restart. This is a rich behavioral context that goes well beyond what schema or annotations could convey.

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?

The description is front-loaded with the core purpose, followed by output handling details and limitations. Every sentence adds distinct, non-redundant information: what it renders, how the output is delivered, what it does not do, and when it can be used. No filler or wasted words.

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?

The description covers the tool's purpose, output format, workflow context (relation to submit_answers), and constraints (session finalization, cache volatility). It offers enough context for an agent to decide when to call it. However, the lack of explicit parameter documentation leaves a noticeable gap, especially given that the schema also provides no descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explicitly explain the roles of `title` or `result_id`. The context implies `result_id` identifies the finalized assessment, but `title` is completely unexplained. The agent must infer parameter meanings from the tool name and general context, which is insufficient.

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?

The description opens with a specific verb+resource: 'Re-render a finalized assessment as a self-contained HTML page' and enumerates the exact content included (meta panel, six-domain summary, per-domain judgement, algorithm trail, evidence, style, provenance). It distinguishes from siblings by explicitly noting 'pure re-render of the artifact submit_answers already stamped — nothing is re-scored.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear when-to-use guidance: the assessment must have been finalized this session, and it clarifies that this is a re-render only, not re-scoring, implying other tools handle scoring or modifications. It also advises how to handle output (display inline or publish as artifact). However, it does not explicitly name alternative tools for export or scoring, so the alternative distinction is implied rather than fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_prespecified_confoundersA

Supply P1 — the confounding factors this REVIEW judges important for the intervention-outcome relationship, listed before any study is assessed.

THIS IS BLOCKING. Domain 1 will not be scored without it. Question 1.1 asks whether all IMPORTANT confounding factors were controlled for, and 'important' is defined by this list, not by the paper's covariate table. Substituting the paper's own list would let the study grade its own confounding control, which is exactly the judgement ROBINS-I asks the reviewer to make independently.

'Important' means adjustment would be expected to change the estimate meaningfully; factors with only very weak associations are excluded.

You MAY propose a list from domain knowledge or a DAG — that is useful and is what this parameter is for — but a proposed list is not a ratified one. Leave ratified_by empty unless a human in this conversation has actually reviewed and accepted the list; the assessment then carries P1 in its ratification queue and is explicitly not final until they do. Do not sign it off on their behalf.

Scoped by review_id because P1 belongs to the review, not to one study: the same list applies to every result assessed under it.

ParametersJSON Schema
NameRequiredDescriptionDefault
rationaleNo
review_idNodefault
confoundersYes
ratified_byNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
ratifiedNo
n_factorsNo
rationaleNo
review_idNo
ratified_byNo
prespecified_confoundersNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavioral traits: the blocking nature, the definition of 'important', and the ratification queue behavior ('the assessment then carries P1 in its ratification queue and is explicitly not final until they do'). It also clarifies scoping by review_id, adding meaningful context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than typical but every paragraph adds necessary context: purpose, blocking, importance definition, scoping, and ratification. It is well-structured and front-loaded with the core action, though it could be slightly tightened without losing key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, no annotations, and an output schema present, the description is complete. It covers when to use, why it's blocking, how to handle ratification, and scoping. With no annotations, it fully carries the burden of behavioral and contextual explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains 'confounders' (the list of important factors), 'review_id' (scoping to a review), and 'ratified_by' (human acceptance). Only 'rationale' is not mentioned, but it's optional with a default, so the compensation is strong.

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?

The description clearly states a specific action ('Supply P1') and the resource (confounding factors for a review) with context ('before any study is assessed'). It distinguishes itself from per-study tools by emphasizing that P1 belongs to the review, not a single study.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when this must be used ('THIS IS BLOCKING. Domain 1 will not be scored without it'), what counts as important confounders, and how to handle ratification (leave ratified_by empty unless a human accepts). It also warns against substituting the paper's covariate list, providing a clear when-not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

specify_resultA

Name the ONE numerical result being assessed, and settle C4. Required before any domain can be scored.

ROBINS-I assesses a single effect estimate, not a paper. A study reporting three outcomes across two analyses yields six assessments; give each its own result_id and run them separately.

accounts_for_deviations IS C4, and it is the highest-leverage input here: it swaps domain 1's entire question set and algorithm, so it cannot be deferred until domain 1 is reached. 'no_itt' — the analysis does NOT account for switches between the compared strategies or other protocol deviations. It targets the effect of assignment. Domain 1 variant A (baseline confounding only). 'yes_pp' — the analysis DOES account for them, by censoring, follow-up partitioning, or a g-method. It targets the effect of sustained receipt. Domain 1 variant B (baseline AND time-varying confounding). Judge this on what the ANALYSIS DOES, not on the label the authors give their estimand. A paper whose protocol table says 'observational analogue of the per-protocol effect' but which never censors at deviation is 'no_itt'. Getting this wrong means answering five questions that do not apply.

result_assessed is A1: the estimate with its precision. outcome is A3. result_location (A2) is where it appears and why it was chosen. target_trial is C1-C3 as a dict of labelled strings — eligible participants, intervention strategy, comparator strategy, and any note on the estimand. information_sources is D1: what you actually read. An NI answer is only defensible relative to what was searched.

b1/b2/b3 are the section B screening answers (Y/PY/PN/N). b1: was any attempt made to control confounding in this result? b2 (asked only if b1 is PN/N): is the potential for confounding great enough that an unadjusted result should not be considered further? b3: is the outcome measurement method unsuitable for the outcome it is meant to capture? Y/PY on b2 or b3 sends the result straight to critical and no domain is scored.

ParametersJSON Schema
NameRequiredDescriptionDefault
b1No
b2No
b3No
modelNounspecified
outcomeYes
citationNo
documentNo
result_idYes
review_idNodefault
text_sha256Yes
target_trialNo
result_assessedYes
result_locationNo
information_sourcesNo
accounts_for_deviationsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
outcomeNo
citationNo
estimandNo
warningsNo
next_stepNo
result_idNo
review_idNo
screeningNo
text_sha256No
per_protocolNo
target_trialNo
domain1_variantNo
result_assessedNo
result_locationNo
domain1_questionsNo
information_sourcesNo
screening_terminatedNo
prespecified_confoundersNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full weight and does so excellently. It discloses that accounts_for_deviations 'swaps domain 1's entire question set and algorithm', that getting it wrong 'means answering five questions that do not apply', and that b2/b3 Y/PY 'sends the result straight to critical'. These are meaningful behavioral consequences beyond simple operation.

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?

The description is long but dense and well-structured. It starts with a crisp purpose statement, then prioritizes the most important parameter (accounts_for_deviations) with examples and consequences, followed by concise definitions of remaining fields. Every sentence contributes workflow-critical information; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (ROBINS-I workflow), the description is remarkably complete. It covers purpose, prerequisite position, key decision logic, parameter semantics, and screening behavior (b1-b3). With an output schema present, the lack of return-value explanation is acceptable. The description enables correct invocation and understanding of downstream effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does. It explains accounts_for_deviations with specific values ('no_itt'/'yes_pp') and its impact, maps result_assessed to A1, outcome to A3, result_location to A2, target_trial to C1-C3, information_sources to D1, and defines b1-b3 roles. This adds substantial meaning to most parameters, far exceeding 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?

The description opens with 'Name the ONE numerical result being assessed, and settle C4', a specific verb+resource+action. It clearly states the tool's role as a required prerequisite ('Required before any domain can be scored'), distinguishing it from siblings like assess_result or submit_answers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear workflow context: this tool must be used before any domain scoring, and each result/analysis should be run separately via its own result_id. It also stresses that accounts_for_deviations cannot be deferred because it changes domain 1's question set. However, it does not explicitly name when-not-to-use alternatives, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_answersA

Submit one domain's signalling-question answers and get back the COMPUTED domain judgement, or (domain=0) finalize the assessment.

Each element of answers is one question: question, response, evidence_mode, rationale, plus the evidence that mode requires — quotes for manuscript_positive, search_cue or search_terms for manuscript_absent, prior_ref for reviewer_prior. Answer only the questions the algorithm reaches; omit the rest rather than answering NA. support is your narrative for the domain as a whole and appears in the report.

Three things are enforced here, and all three are the point of the tool: every quote is resolved to character offsets in the ingested bundle and an unresolvable one is REJECTED with the nearest text found; every claim of absence is backed by a search THE SERVER runs, so it is reproducible; and the judgement is computed by the published algorithm from your answers, never asserted by you. If the traversal reaches a question you did not answer, the call returns status='incomplete' naming it — supply it and call again.

override_judgement sets the domain judgement against the algorithm and REQUIRES override_justification. Overrides cannot hide: the report shows both values and the override enters the ratification queue.

domain=0 finalizes: it computes the overall judgement (worst of the six domains by default), assembles the stamped assessment and returns the rendered report inline. overall_escalate applies the tool's permitted escalation — several moderates to serious, or several seriouses to critical — and requires a justification. The returned report is THE ARTIFACT OF RECORD: present that, not a table of your own, and repeat its ratification queue if it is non-empty, because an assessment with unratified items is not final.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
renderNo
answersNo
supportNo
result_idYes
overall_escalateNo
overall_overrideNo
direction_of_biasNo
override_judgementNo
override_justificationNo
overall_direction_of_biasNo
overall_override_justificationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathNo
notesNo
domainNo
recordNo
reportNo
statusNo
domainsNo
overallNo
acceptedNo
evidenceNo
judgementNo
next_stepNo
result_idNo
overriddenNo
provenanceNo
attributionNo
not_reachedNo
needs_answerNo
overall_labelNo
judgement_labelNo
domains_completeNo
evidence_warningsNo
overall_algorithmNo
ratification_queueNo
algorithm_judgementNo
domains_outstandingNo
needs_answer_at_nodeNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses tool behavior: the three enforced invariants (quote resolution, server-run absence search, algorithm-computed judgement), the requirement for override justification, the visibility of overrides in the report and ratification queue, and the distinction that incomplete calls require re-calling. It also warns that unratified items mean the assessment is not final. This is rich, honest context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long (roughly 250 words) but every sentence carries operational weight, covering modes, answer format, enforcement, overrides, escalation, and finalization. It uses clear paragraph breaks and a numbered 'three things are enforced' list for readability. While it is more verbose than necessary for a simple tool, the complexity of the tool justifies the density; it loses a point only for being on the longer side.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (12 parameters, two modes, override and escalation logic) and the complete absence of schema descriptions or annotations, the description is remarkably thorough. It covers the answer item structure, the three enforcement mechanisms, the incomplete status and retry behavior, override justification and visibility, the finalization flow, and how to handle the returned report. Output schema exists, so the description doesn't need to detail return fields, but it still explains the meaning of the report and ratification queue.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the structure of `answers` in detail (fields per question, evidence-mode-specific requirements), clarifies `support` as the narrative, and defines the behavior of `override_judgement`, `override_justification`, `domain` (0 finalizes), and `overall_escalate`. However, it omits explicit explanations for parameters like `render`, `direction_of_bias`, `overall_override`, and `overall_direction_of_bias`, though these are less central and somewhat self-explanatory.

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?

The description opens with a specific verb and resource: 'Submit one domain's signalling-question answers and get back the COMPUTED domain judgement, or (domain=0) finalize the assessment.' This clearly distinguishes the tool's two modes and sets it apart from siblings like render_report or assess_result. The resource is well-defined and the outcome is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive usage guidance: instructing to answer only questions the algorithm reaches, explaining the incomplete status and retry flow, detailing override and escalation requirements, and stating when to use domain=0 for finalization. It also clarifies what not to do (e.g., answering NA) and that the returned report is the artifact of record, not a custom table. This gives the agent clear decision rules for invoking the tool correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.6/5.0
Disambiguation4/5

Each tool serves a distinct step in the ROBINS-I workflow, but assess_result and get_spec both return specification/rubric information, which could cause an agent to fetch the wrong one. parse_document and parse_pmcid are clearly distinguished by input type.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: parse_document, parse_pmcid, specify_result, submit_answers, render_report, export_robvis. The pattern is uniform and predictable across the entire set.

Tool Count5/5

Nine tools is well within the ideal range and each tool covers a necessary step in the assessment lifecycle—parsing, setup, domain work, finalization, and export. No tool feels redundant or extraneous.

Completeness5/5

The tool set covers the full ROBINS-I assessment workflow: document ingestion (parse_document/parse_pmcid), protocol setup (set_prespecified_confounders, specify_result), domain assessment (assess_result, submit_answers), and reporting (render_report, export_robvis). There are no obvious dead ends or missing critical operations.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that provides tools for deterministic EU AI Act risk classification and documentation generation, enabling human-in-the-loop AI system assessments inside Claude Code.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that evaluates whether retrieval methods and AI outputs are grounded in long narrative manuscripts by retrieving evidence and scoring coverage deterministically, without external model APIs. It provides tools for chunking, indexing, retrieval, and evaluation.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for agentic systematic literature reviews with citation verification. Enables AI assistants to list reviews, get drafts, retrieve citation audits, and manage discovered papers.
    3
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Black-Swan-Causal-Labs/robins-i-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server