Living Evidence
Some examples are atrocious, such as patent foramen ovale (PFO) closure management example; where there are dozens meta-analyses synthesizing the information from four published randomized clinical trials. This duplication of effort is not only wasteful but often results in conflicted findings due to subtle differences in design or analysis strategy.
https://lisr.org/Opens ChatGPT on the web or desktop and asks it to use the WebMCP tools available here.
Connect straight to this server’s public endpoint.
https://mcp.lisr.org/mcpWe add this server to your workspace, then open Studio — saved access, one connection to many servers, with a history of what ran.
Last probed Sep 14, 2026 · mcp.lisr.org
50tools discovered
Showing 25 of 50 from the live probe.
Get Sof Certainty
Get the GRADE certainty-of-evidence breakdown for every outcome in a SOF table — all five domains (risk of bias, inconsistency, publication bias, imprecision, indirectness), each with the algorithm's decision and any reviewer override. WHEN: to inspect or report why an outcome has the certainty rating it does, or before overriding a domain with `update_certainty_of_evidence_parameter`. NOT WHEN: you only need the overall certainty label per outcome (already included in `get_sof_table`'s `outcom
Update Certainty Of Evidence Parameter
Override one GRADE domain's rating for an outcome with a reviewer judgement, recomputing the outcome's overall certainty. WRITE operation — logs the change to the certainty history. WHEN: the algorithm's automatic domain rating needs a reviewer correction. NOT WHEN: undoing a previous override back to the algorithm's decision (use `revert_certainty_of_evidence_parameter`). REQUIRES: `project_id` from `list_projects`; `coe_id` from `get_sof_certainty`. The caller must be a reviewer on the projec
Revert Certainty Of Evidence Parameter
Clear a reviewer's override for one GRADE domain, reverting it back to the algorithm's automatic decision. WRITE operation — logs the change to the certainty history. WHEN: a previous reviewer override for a domain should no longer apply. REQUIRES: `project_id` from `list_projects`; `coe_id` from `get_sof_certainty`. The caller must be a reviewer on the project. RETURNS: {code, message} confirming the revert.
Recalculate Certainty Of Evidence
Re-run the automatic GRADE certainty calculation for one outcome — e.g. after its underlying quality-assessment or indirectness data changed. WRITE operation. Any reviewer domain overrides are preserved; only the algorithm-derived values are recomputed. WHEN: quality assessment, indirectness, or the outcome's citations changed and its certainty needs to reflect that. REQUIRES: `sof_outcome_id` from `get_sof_table`. The caller must be a reviewer on the outcome's project. RETURNS: {code, message}
Get Certainty Of Evidence History
Get the full audit history of certainty-of-evidence changes for one outcome — every override and revert, who made it, and the before/after values. WHEN: auditing why a domain's rating changed, or reviewing past reviewer overrides. REQUIRES: `sof_id` from `list_sof_tables`; `sof_outcome_id` from `get_sof_table`. The caller must be a reviewer on the table's project. RETURNS: {items[]}, most recent first. Each entry has {id, coe_id, overall, parameter_type, reason, previous_overall, updated_by, cr
Get Duplicates
List candidate duplicate paper pairs detected in a project. Each pair gives the existing paper, the newly matched paper, both titles, the match reason (same id/title/abstract), and a similarity score. WHEN: to review potential duplicates before resolving them, or to page through the deduplication queue. NOT WHEN: you want to resolve a pair (use `resolve_duplicate`) or list ordinary papers (use `get_papers`). REQUIRES: `project_id` from `list_projects`. RETURNS: paginated list of {existing_pid,
Resolve Duplicate
Resolve one detected duplicate pair. WRITE operation — persists to the database and is NOT read-only. WHEN: to decide the outcome of a duplicate pair surfaced by `get_duplicates`. NOT WHEN: you are making a screening include/exclude decision (use `submit_screening_decision`). REQUIRES: `project_id`, plus `existing_pid` and `new_pid` taken from the SAME pair returned by `get_duplicates`. The caller must be a project manager, senior screener, primary screener, or admin. RETURNS: {code, message} c
List Outcomes
List the meta-analysis outcomes defined for a clinical question. WHEN: at the start of outcome (PWMA/NMA) extraction, to discover which outcomes exist and get the `outcome_id` every outcome-level tool needs. Also tells you which outcomes are subgroup outcomes. NOT WHEN: you want the iTable (study-level) variables — that has no outcome; call `get_extraction_schema` with no `outcome_id`. REQUIRES: `project_id` from `list_projects`, `cq_id`, `is_pwma`; caller must be a primary extractor on the pro
Get Extraction Schema
Get the variables (node) schema to extract against — iTable or one outcome. The iTable and every outcome share the same variables-table/node structure, so this is one tool: no `outcome_id` returns the iTable nodes; an `outcome_id` returns that outcome's nodes. Nodes are returned as a flat list ordered by (level, child_rank); rebuild the tree via `parent_id`. Leaf nodes (`is_parent=false`) carry the field definition (field_type, validation, required, options) — those are the ones you extract. W
Get Extraction Results
Get YOUR extraction results for the papers assigned to you. Reviewer-scoped: returns only the calling user's own extractions for the papers assigned to them for this clinical question — never another reviewer's. Each paper reports `is_complete` (all nodes have the minimum extractions) and, per terminal node, the `extraction_result` and `minimum_extractions_completed`. Only terminal (leaf) nodes are returned — structural parent nodes are omitted. WHEN: to see what you have already extracted, wh
Submit Extraction Results
Record YOUR extracted value for one node. WRITE operation — persists to the database. Attributed to the calling user's own reviewer record and stored as AI-assisted (`is_ai_assisted` true). Covers iTable and outcome extraction: pass `outcome_id` (+ `treatment_arm_label`, + `subgroup_label` for subgroup outcomes) for outcome extraction, or omit them for the iTable. WHEN: to save (or update, or clear) the value for a single node of a paper you are extracting. NOT WHEN: recording the subgroup ext
Submit Subgroup Extraction Decision
Record YOUR yes/no decision on whether a subgroup is extractable from a paper. WRITE operation. For subgroup outcomes, each subgroup needs this decision per paper before its nodes can be extracted. A 'yes' unlocks (and seeds) that subgroup's nodes; a 'no' records that the paper does not report the subgroup. Attributed to the calling user's own reviewer record and stored as AI-assisted (`is_ai_assisted` true). WHEN: before `submit_extraction_results` for any subgroup of a subgroup outcome. NOT
Add Treatment Arm Label
Add a treatment-arm label to a paper for one outcome. WRITE operation — persists to the database. Treatment arms are an OUTCOME concept only (PWMA/NMA) — the iTable has none. Every outcome starts with a single implicit 'Primary' arm per paper; use this to register an additional arm before extracting outcome values against it. For subgroup outcomes the arm is added under the given subgroup. Values it pre-fills for the new arm (e.g. PMID, NCT) are stored as AI-assisted. WHEN: an outcome/subgroup
Get Extraction Progress
Get YOUR extraction progress statistics for a project, per clinical question. Reviewer-scoped: reports the calling user's own extraction progress. For each clinical question it returns assigned-paper count, iTable progress counts (not-started / in-progress / completed, plus your own completed), and per-outcome PWMA/NMA progress rows (not-started / in-progress / completed / your-completed). This is the extraction analogue of `get_project_screening_stats`. WHEN: to report how much extraction wor
Get Extraction Conflicts
List the extraction conflicts still waiting for a senior decision — the conflict queue. A row is a paper (per treatment arm for outcomes; per subgroup and arm for subgroup outcomes) on which reviewers recorded different values. Only UNRESOLVED rows are listed: a row leaves the queue as soon as nothing on it is left to decide. Start conflict resolution here — each row gives the `pid`, `treatment_arm_label` and `subgroup_label` that `get_extraction_conflict_detail` needs. WHEN: to find extractio
Get Extraction Conflict Detail
Show the competing reviewer values for ONE row of the conflict queue. Returns only the leaf nodes still in dispute, each with every reviewer's value, so you can decide the correct one. Agreed nodes, nodes a senior already resolved, and parent nodes are left out — every node returned needs a decision. A row with nothing left to decide (fully resolved, a subgroup answered 'no' by a senior or by every reviewer, or no disagreement) returns NOT_FOUND, the same error as a paper with no conflict recor
Resolve Extraction Conflict
Record the agreed value for ONE conflicted node. WRITE operation — NOT read-only. Writes a separate senior resolution, stored as AI-assisted (`is_ai_assisted` true); the reviewers' own extractions are kept unchanged. Once resolved, the node drops out of `get_extraction_conflict_detail` and primary extractors can no longer change it. WHEN: after comparing the competing values in `get_extraction_conflict_detail`. NOT WHEN: recording your own extraction as a reviewer (use `submit_extraction_resul
Resolve Subgroup Extraction Conflict
Settle whether a subgroup is extractable from a paper at all. WRITE operation — NOT read-only. Subgroup outcomes have two kinds of conflict. This tool settles the outer one: reviewers gave different answers to "does this paper report this subgroup?" (`is_subgroup_conflict` true on the queue row). Node-value disagreements inside the subgroup are settled with `resolve_extraction_conflict`. The decision recorded here overrides every reviewer's answer: a 'yes' (true) opens the subgroup's nodes — on
Get Papers
List papers in a project filtered by their position in the PRISMA screening workflow. WHEN: to browse or page through papers at a specific screening `stage` — e.g. find 'unscreened' papers to screen, or review those already excluded/included. NOT WHEN: you need the full abstract/identifiers of one known paper (use `get_paper`), or the per-reviewer decision breakdown (use `get_paper_screening_status`). CONFLICTS: `title_abstract_conflict` and `fulltext_conflict` return the papers stuck awaiting
Get Assigned Unscreened Papers
List the papers assigned to the calling reviewer that still await their own decision. Unlike `get_papers`, this is scoped to the caller's own assignments and excludes papers they have already decided. At the 'abstract' stage it returns papers assigned to the caller for title/abstract screening that sit at `Unscreened` and on which the caller has recorded no decision (or only an `Unscreened`, non-conflict one). At the 'fulltext' stage it returns papers assigned to the caller for full-text review
Get Paper
Get full metadata for one paper. Returns title, abstract, authors, journal, year/publish date, external identifier (paper_id + type), NCT number, current screening decision, upload source, duplicate flag, whether a PDF is attached, `full_text_filename` (stem of `pdf_path`, e.g. `paper_256400_20260717_164456` from `pdf/paper_256400_20260717_164456.pdf`), and `supplementary_filenames` (stems from `supplementary_pdf_path`). WHEN: you need the abstract or bibliographic detail of a specific paper —
Get Paper File
Fetch one attached PDF for a paper by file name. Locates the PDF whose stem matches `filename` in `pdf_path` (full-text) or `supplementary_pdf_path` (supplementary). `return_as` controls the payload: base64 content, the public absolute URL (`https://test.lisr.org/backend/pdf/<stem>.pdf` in development, `https://app.lisr.org/backend/pdf/<stem>.pdf` in production), or both. WHEN: you need the PDF bytes and/or its public URL for extraction or full-text review. NOT WHEN: you only need bibliographi
Tag Paper
Turn one or more of a project's predefined tags on for a paper. WRITE operation — persists to the database. A tag is a paper-level label, not a screening decision: it is tied to no clinical question, and a paper can carry tags before, during, or after screening. The vocabulary is project-scoped, so `project_id` decides both which names are legal and whose permissions are checked. WHEN: to label a paper for later retrieval — e.g. mark it so it can be pulled back with the `tags` filter of `get_p
Untag Paper
Turn one or more of a project's predefined tags off for a paper. WRITE operation — persists to the database. The mirror image of `tag_paper`, with identical parameters, permissions and validation. Only the named tags are removed; the paper's other tags stay. WHEN: to correct or retire a label on a paper — e.g. after a tag was applied in error, or once the paper no longer belongs in that slice. NOT WHEN: turning a tag on (use `tag_paper`), reversing a screening decision (not supported here — do
Delete Paper File
Detach one PDF from a paper and delete it from disk. WRITE operation — IRREVERSIBLE, there is no undo. WHEN: to drop a supplementary file attached in error, or to replace the full text — upload refuses a full-text PDF while one is attached (CONFLICT), so replacing it is delete-then-upload. NOT WHEN: reading a PDF (`get_paper_file`), seeing what is attached (`get_paper`), or removing the paper itself (web app only). REQUIRES: `project_id` from `list_projects`, `pid` from `get_papers`, `filename`
Get your MCP into directories
A working endpoint is step one. Directory coverage is the coordinated launch across ChatGPT, Claude, Cursor, the MCP Registry, and community indexes.
Directory coverage for brandsSome examples are atrocious, such as patent foramen ovale (PFO) closure management example; where there are dozens meta-analyses synthesizing the information from four published randomized clinical trials. This duplication of effort is not only wasteful but often results in conflicted findings due to subtle differences in design or analysis strategy.
Use the MCP endpoint listed on this page in your MCP client configuration. One-click install pills support Claude, Cursor, VS Code, and other hosts. Copy the remote MCP URL if your client needs a manual entry.
MCPBundles probed 50 tools on the live server. The tool list on this page reflects what was discovered at the last refresh — connect your client to see the full set available to your session.
No provider sign-in was required during MCPBundles' probe. Your client may still need MCPBundles credentials depending on how you connect.
Operate srma? Verify ownership to take over this directory entry.
This server appears in the MCPBundles directory. Verify you operate it to take over the listing — name, description, logo, contact email, and skill content. We email a 6-digit code to a maintainer address your server publishes in /.well-known/security.txt or /.well-known/mcpbundles.json. Free, takes about a minute.