forrt-research-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SCIENCELIVE_API_KEY | No | Optional API key for the Science Live API. /np/constellation is a public read, so this may be left unset. | |
| SCIENCELIVE_API_BASE | No | Base URL of the Science Live API. Default is production. Set to https://api-dev.sciencelive4all.org to test against the dev deployment. | https://api.sciencelive4all.org |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| constellationA | The FORRT chain(s) reachable from a published nanopub URI, as a compact projection you can actually read. Call this to see an existing chain — before starting a replication (what has already been done?), when extending someone else's chain, or to inspect your own after publishing. The raw Science Live constellation is ~330 KB for one chain, of which ~95 %
is a depth-5 neighbourhood of UNRELATED chains reachable through shared
links (on the marine-heatwave chain, 64 of 98 nodes are other studies' AIDA
statements). This returns the chains, the apex CiTO, any Research Synthesis,
and the Quote/Question anchors attributable to this paper — and drops the
rest, reporting how much it dropped under Read
|
| prior_workA | What has already been claimed about a paper — the starting point for new work, whether that work is a replication or a fresh study. Given any published nanopub URI in a constellation, returns one entry per
completed chain: the claim type, what was tested ( Use it to avoid duplicating an existing replication, to choose a CiTO
relation relative to prior work ( |
| verify_quoteA | Prove that a candidate quotation is really in a source PDF, before it is published as verbatim. Call this on EVERY quotation destined for a Quote-with-comment nanopub. You choose which sentence carries the paper's claim — that is judgement. This decides whether the sentence is admissible, and that is not: it is a string search, and anyone can re-run it and get the same answer. Returns a graded verdict with the page, character offsets and the file's SHA-256 as evidence: exact byte-identical to the extracted page text normalized matched after whitespace / ligature / typographic punctuation / line-break-hyphen repair extraction_tolerant additionally ignored hyphens and punctuation spacing not_found NOT in this PDF — do not publish it as a quotation A tier below On |
| constellation_rawA | The unprojected For debugging the graph itself or investigating an upstream data problem.
Prefer |
| template_fieldsA | The exact form fields of one FORRT chain step, from the live template. Call this BEFORE drafting any nanopub field. A nanopub template is the
schema for its step, so this is what makes "never invent a field name" a
lookup rather than a rule you have to remember: it returns the real field
ids, prompts, whether each is required or repeatable, the length/format
constraints (
Check |
| vocabularyA | The allowed values of a FORRT controlled vocabulary, from its template. Use it whenever a draft needs a claim type, a study type, a validation status, a confidence level, or a CiTO relation. Every term comes from the real restricted-choice field on the real template (or the value-list nanopub it points at), so a value returned here is one the form will actually accept — and nothing else is. Names: claim_type, study_type, validation_status, confidence_level, cito_relation, pico_question_type. Three worth reading before you draft:
|
| list_schemasA | Which chain steps and vocabularies this server can look up. Cheap, offline, and no network. Call it first if you are unsure what to pass
to |
| resolve_doiA | Does this DOI resolve, and to what? Call it on every DOI destined for a nanopub field, On success it returns the registered title, authors, year, container and
type, so you can confirm it is the paper you mean rather than merely a paper
that exists. Accepts bare ( |
| wikidata_lookupA | Find real Wikidata items for a term, and type-check them. Call it for every Wikidata topic or keyword destined for a nanopub field. It returns candidates with their descriptions and real P31/P279 types; it deliberately does NOT choose one, because picking the right sense of an ambiguous label is a judgement. What it guarantees is that the QID you publish exists and is what you say it is. Pass A zero-candidate result means leave the field empty or try another label. Never fall back to a QID from memory. |
| validate_draftA | Check one drafted nanopub against its template and the real world. Run this on every draft before publishing. It is the pre-flight checklist in
error would publish something false, or be rejected by the form warning a human should look, but it may be intentional info checked and fine, or deliberately not checked Three placeholder conventions are distinguished, because only one is a
problem:
|
| validate_draftsA | Check every draft in a The whole-chain pre-flight: run it before starting Phase 5b, and again
before announcing. Returns per-draft results plus totals, with
Note what it cannot see: values a draft puts in prose or a markdown table
rather than behind a |
| verify_chainA | Verify a published FORRT chain. Run this before announcing it anywhere. Point it at a What it checks:
A step reported as "not enumerated by the walk but its TriG resolves" is fine, not a warning: the constellation legitimately stops short of Quote, AIDA and Claim.
|
| validate_chain_draftA | Check Run this at the end of Phase 5b, after This file — not the markdown drafts — is what the wizard pre-fills each step
from, and therefore what a human reviews and signs. What it catches that reading the file cannot:
Fields the wizard fills itself are exempt, not reported missing: |
| cito_to_wikidataA | Mirror published CiTO citations into Wikidata — as a batch for a human to submit. Run it after It writes nothing to Wikidata. It returns Items are looked up by DOI and ORCID first and created only when missing; a
replication is one item per Zenodo concept DOI, not one per version. Items
are created from the Zenodo record's title, so a repository-slug title
("my-replication-repo") should be fixed on Zenodo first. |
| validate_rocrateA | Check an RO-Crate before it is released or deposited (e.g. in ROHub).
Two layers:
Never hand-edit ro-crate-metadata.json to make it pass: it is generated by scripts/build_rocrate.py — fix the source (CITATION.cff, the ledger, rocrate.json) and rebuild. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Most tools target clearly distinct objects: lookups (template_fields, vocabulary, resolve_doi, wikidata_lookup), chain inspection (constellation, constellation_raw, prior_work), and verifiers (verify_chain, verify_quote, validate_rocrate). The main soft spot is the three-way validate_draft / validate_drafts / validate_chain_draft cluster, where the boundary is only clear after reading that one checks authoring input, one checks a directory in bulk, and one checks the wizard artifact. Descriptions do disambiguate these, and constellation vs constellation_raw is explicitly framed as raw-vs-projected.
All names are consistently snake_case, with an implicit verb_noun convention for actions (validate_draft, verify_quote, resolve_doi, list_schemas) and noun names for read-only resource lookups (constellation, vocabulary, template_fields, prior_work). The split between verb-phrased and noun-phrased tools is intentional and readable, though cito_to_wikidata and wikidata_lookup deviate slightly from the dominant pattern.
Fifteen tools sit at the top of the healthy band, and each maps to a distinct phase of a genuinely multi-stage workflow (schema lookup, drafting, validation, publication verification, Wikidata mirroring, RO-Crate checks). No redundant or speculative tool is present; the raw/projected constellation pair and the three validators each serve a non-overlapping need.
Coverage of the authoring-to-verification lifecycle is strong: schema lookup, vocabulary constraints, DOI/QID/quote verification, draft and chain validation, post-publication verification, and downstream Wikidata/RO-Crate artifacts. The notable gap is discovery — constellation and prior_work both require an existing nanopub URI, and there is no tool to find a chain from a DOI, title, or topic, so an agent starting cold has no entry point. PDF text acquisition for verify_quote is also left to the caller.