The Gastrologer — GI clinical tools for agents
Physician-governed GI tools: claim verification, teaching retrieval, HRM and instrument scoring
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"clinical": {
"url": "https://thegastrologer.com/api/mcp"
}
}
}Remote endpoints
https://thegastrologer.com/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟢list_modules
List every clinician teaching module and patient chapter: title, canonical URL, evidence-review date.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢search_teaching(query, limit)
Search clinician teaching modules AND patient chapters by free-text query (title, description, and body text); returns matching modules with snippets.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"limit": {
"type": "number",
"maximum": 10
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢read_module(slug)
Read ONE module's full teaching text (markdown) with required citation. Not for bulk corpus assembly.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$"
}
},
"required": [
"slug"
],
"additionalProperties": false
}🟢get_claims(slug)
Get the claim ledger (claim → evidence rows) for a module, when published.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$"
}
},
"required": [
"slug"
],
"additionalProperties": false
}🟢get_evidence_log
Dated evidence-review log for all modules.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_corpus_state
The current GASTROLOGER_CLINICAL_STATE: version, corpus/section/module Merkle roots, counts and hash scheme — pin an answer to an exact knowledge state.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢verify_claim_hash(claim_id, bundle_hash)
Verify one clinical claim against the published corpus root via its Merkle inclusion proof (optionally against a bundle_hash you hold). Returns the claim content only when it is physician-activated or clinician-adjudicated.
Input Schema
{
"type": "object",
"properties": {
"claim_id": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{3,40}$"
},
"bundle_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
},
"required": [
"claim_id"
],
"additionalProperties": false
}🟢check_gi_claim(text)
Fact-check pasted text (a social post, caption, or sentence): canonical wording or its full explicit negation can receive a scoped governed verdict; other matches return unresolved reviewed candidates with evidence. No video retrieval or individual medical advice.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"text"
],
"additionalProperties": false
}🟢resolve_gi_claim(claim)
Resolve one supplied proposition against governed claims. Only preserved canonical wording or its full explicit negation is certified; lexical candidates and changed qualifiers remain unresolved. Does not search external evidence.
Input Schema
{
"type": "object",
"properties": {
"claim": {
"type": "string"
}
},
"required": [
"claim"
],
"additionalProperties": false
}🟢search_gi_verifications(query, limit)
Search canonical GI fact-check verifications by free text; returns matching governed claims with canonical /verify/ URLs.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"limit": {
"type": "number",
"maximum": 10
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢get_gi_verification(slug)
Get one canonical verification record (statement, verdict, review date, evidence module, machine URLs) by its slug or claim id.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{3,110}$"
}
},
"required": [
"slug"
],
"additionalProperties": false
}🟢get_evidence_bundle(claim_ids, query, locale)
Resolve up to 10 claims (by claim_ids or free-text query) into an evidence bundle: statements, verdicts, review dates, evidence pointers, canonical URLs, clinical-state pin. Optional locale (BCP-47) reports human-localized module availability; canonical identifiers are language-independent. Bulk export beyond 10 claims is the paid tier (x402) at /api/premium/evidence-pack.
Input Schema
{
"type": "object",
"properties": {
"claim_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9-]{3,40}$"
},
"maxItems": 10
},
"query": {
"type": "string",
"maxLength": 500
},
"locale": {
"type": "string",
"pattern": "^[a-zA-Z]{2,3}(-[A-Za-z0-9]{2,8})*$"
}
},
"additionalProperties": false
}🟢classify_hrm_metrics(metrics, manufacturer, position, provocative, secondary_testing)
Legacy HRM operation quarantined after rule discrepancies were reproduced against reviewed teaching. Returns needs_review without classification. Do not invoke to obtain a diagnosis; this compatibility name is omitted from new plugin products.
Input Schema
{
"type": "object",
"properties": {
"metrics": {
"type": "object",
"properties": {
"irp_mmhg": {
"type": "number"
},
"dci_mmhg_cm_s": {
"type": "number"
},
"dl_s": {
"type": "number"
},
"pct_failed": {
"type": "number"
},
"pct_panesophageal": {
"type": "number"
},
"pct_premature": {
"type": "number"
},
"pct_hypercontractile": {
"type": "number"
},
"pct_weak": {
"type": "number"
},
"pct_fragmented": {
"type": "number"
}
}
},
"manufacturer": {
"type": "string",
"enum": [
"Medtronic",
"Laborie",
"Diversatek",
"Unknown"
]
},
"position": {
"type": "string",
"enum": [
"supine",
"upright"
]
},
"provocative": {
"type": "object"
},
"secondary_testing": {
"type": "object"
}
},
"required": [
"metrics"
],
"additionalProperties": false
}🟢score_clinical_instrument(instrument, responses)
Score a governed clinical instrument from structured responses: IBS-SSS (ibs-sss, 5 slider items 0-100 + days×10, total 0-500) and GERD-Q (gerd-q, 6 choice items, total 0-18, ≥8 consistent with GERD). Returns total, percent of max, band label + interpretation, and the instrument citation. Every item is required; invalid/missing responses are rejected without defaulting or clamping. Educational scoring — not a diagnosis. Also POST /api/tools/score-instrument.
Input Schema
{
"type": "object",
"properties": {
"instrument": {
"type": "string",
"enum": [
"ibs-sss",
"gerd-q"
]
},
"responses": {
"type": "object",
"description": "item_id → numeric value (see instrument spec at /tools/instruments.json)"
}
},
"required": [
"instrument",
"responses"
],
"additionalProperties": false
}🟢query_relations(node, predicate, kind, claim_id, limit)
Query the evidence-backed clinical relationship graph (subject–predicate–object triples over diseases, medications, tests, findings, guidelines). Every relation cites governed claim IDs and/or evidence registry IDs. Filter by node text (subject/object), predicate (treated_by, evaluated_by, contraindicated_by, increases_risk_of, reduces_risk_of, causes, associated_with, suggests, argues_against, complicated_by, recommended_by, supported_by, conflicts_with, supersedes, requires_context_of), kind, or a claim_id. Also GET /api/tools/relations.
Input Schema
{
"type": "object",
"properties": {
"node": {
"type": "string",
"description": "substring match against subject_id/object_id"
},
"predicate": {
"type": "string"
},
"kind": {
"type": "string",
"description": "filter subject_kind or object_kind (disease, medication, test, finding, guideline, risk_factor, mechanism, intervention)"
},
"claim_id": {
"type": "string"
},
"limit": {
"type": "number",
"maximum": 25
}
},
"additionalProperties": false
}Community
Evidence