Skip to main content
Glama

What It Does

This is an unofficial OpenEvidence MCP server that reuses cookies exported from your own logged-in OpenEvidence browser session. It does not launch a browser, does not install Playwright, and does not need an official OpenEvidence API key.

It is designed for local personal workflows where you already have lawful access to OpenEvidence. It does not bypass authentication, remove access controls, redistribute OpenEvidence content, or include OpenEvidence data in this repository.

Tools:

Tool

Purpose

oe_auth_status

Check /api/auth/me with your cookie file

oe_history_list

Read OpenEvidence history

oe_article_get

Fetch an article by id and save artifacts

oe_ask

Ask a question, optionally wait, and save artifacts

oe_collections_list

List your collections

oe_collections_get

Get a collection (incl. nested questions[] = membership list)

oe_collections_create

Create a collection (agent-managed names should start with #)

oe_collections_add_article

Add a chat to a collection

oe_collections_db_init

Create the local SQLite mirror (idempotent)

oe_collections_sync_history

Pull /api/article/list into local SQLite chats table

oe_collections_sync_db

Refresh collections + memberships into SQLite

oe_collections_unsorted

Chats with no #-collection membership; structured JSON

oe_collections_summary

Counts + last sync timestamps

oe_collections_classify

Auto-classify unsorted chats using log-odds-ratio signatures learned from your existing memberships + curated keyword rules

oe_collections_bulk_apply

Mint missing #-collections + add memberships per [{article_id, hashtags}] plan

oe_ask and oe_article_get return BibTeX in the MCP response by default when artifacts are saved. Pass include_bibtex: false to keep the response smaller while still writing citations.bib to disk.

Collections sync & auto-sort routine

scripts/collection_sort.py mirrors your chat history and collection memberships into a local SQLite (~/.openevidence-mcp/db/oe.sqlite by default; override with OE_MCP_DB_PATH). The companion routine routines/collection-sort.md walks an MCP client through syncing, surfacing unsorted chats, and applying multi-membership hashtag tags. The convention: collections whose name starts with # are agent-managed; collections without a leading hash are human-curated and the routine never touches them.

The same pipeline is exposed as MCP tools (oe_collections_db_init, oe_collections_sync_history, oe_collections_sync_db, oe_collections_unsorted, oe_collections_summary, oe_collections_bulk_apply) — the TS server shells out to scripts/collection_sort.py via python3 (override with OE_MCP_PYTHON) so the DataDome-safe HTTP path stays canonical.

python scripts/collection_sort.py init
python scripts/collection_sort.py sync-history --full   # first time
python scripts/collection_sort.py sync-collections
python scripts/collection_sort.py list-unsorted --json  # routine reads this
python scripts/collection_sort.py summary

Schedule the sync (macOS)

The classification step needs the agent in the loop, but the sync side is pure I/O — install a daily launchd job that keeps the local SQLite mirror fresh so the next agent run has zero lag:

bash scripts/install_launchd.sh                  # daily 02:00 (override via OE_MCP_SYNC_HOUR / OE_MCP_SYNC_MINUTE)
launchctl start com.htlin.openevidence-mcp.sync  # fire once now to verify
tail -30 ~/.openevidence-mcp/logs/sync.log
bash scripts/install_launchd.sh --uninstall      # remove

The wrapper (scripts/collection_sync_cron.sh) appends one block per run to ~/.openevidence-mcp/logs/sync.log containing the sync-history / sync-collections / summary output. Override the log dir with OE_MCP_LOG_DIR.

The wrapper takes an optional mode flag:

Mode

Behavior

(default)

sync only — chats accumulate as unsorted until you run the routine

--dry-run

sync + classify; writes proposed-plan.json for review, no apply

--auto

sync + classify + bulk-apply + reconcile; fully autonomous sort

scripts/classify.py runs offline, no API. It builds a per-tag log-odds-ratio signature (Monroe et al. 2008) from your existing memberships every run, OR'd with curated keyword rules. Validate quality on your data with python scripts/classify.py validate (held-out cross-validation; on the first 603 memberships I verified, hit-rate = 99.4% with recall ≈1.0; precision varies by tag — raise --threshold for tighter precision in --auto mode). Tune for headless use via OE_MCP_AUTO_THRESHOLD (default 12) and OE_MCP_AUTO_TOP_K (default 3). Switch the launchd job to autonomous mode with OE_MCP_SYNC_MODE=--auto bash scripts/install_launchd.sh.

Saved artifacts:

File

Purpose

article.json

Full OpenEvidence article payload

answer.md

Extracted markdown answer

citations.json

Parsed structured citations

citations.bib

BibTeX bibliography

crossref-validation.json

Post-hoc Crossref validation results

Related MCP server: kjlahsdjkashdjhkasdkajshd

Fast Install

git clone https://github.com/htlin222/openevidence-mcp.git
cd openevidence-mcp
npm install
npm run build

Export cookies from a logged-in https://www.openevidence.com browser session and put them here:

cp /path/to/browser-cookies.json ./cookies.json
npm run login
npm run smoke

The cookie file can be a browser-exported cookies array or a storage-state object with a cookies array.

Register With MCP Clients

Use one of these.

Claude Code

make install-claude-global
claude mcp get openevidence

What it registers:

node /ABSOLUTE/PATH/openevidence-mcp/dist/server.js
OE_MCP_COOKIES_PATH=/ABSOLUTE/PATH/openevidence-mcp/cookies.json

Codex CLI

make install-codex-global
codex mcp get openevidence

Equivalent manual command:

codex mcp add openevidence \
  --env OE_MCP_COOKIES_PATH="$PWD/cookies.json" \
  -- node "$PWD/dist/server.js"

Manual ~/.codex/config.toml:

[mcp_servers.openevidence]
command = "node"
args = ["/ABSOLUTE/PATH/openevidence-mcp/dist/server.js"]
startup_timeout_sec = 60

[mcp_servers.openevidence.env]
OE_MCP_COOKIES_PATH = "/ABSOLUTE/PATH/openevidence-mcp/cookies.json"

Gemini CLI

make install-gemini-global
gemini mcp list

Equivalent manual command:

gemini mcp add --scope user \
  -e OE_MCP_COOKIES_PATH="$PWD/cookies.json" \
  openevidence node "$PWD/dist/server.js"

Claude Desktop, Cursor, Cline, Continue

Use this mcpServers shape:

{
  "mcpServers": {
    "openevidence": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/openevidence-mcp/dist/server.js"],
      "env": {
        "OE_MCP_COOKIES_PATH": "/ABSOLUTE/PATH/openevidence-mcp/cookies.json"
      }
    }
  }
}

Install Everywhere

make install-all

This registers the same local stdio server with Claude Code, Codex CLI, and Gemini CLI.

Verify

npm run check
npm test
npm run build
npm run smoke

Expected smoke result:

{
  "ok": true,
  "authenticated": true
}

MCP stdio servers normally start on demand when the client checks or uses them. They do not need to run as a separate daemon.

How To Ask Questions

After registration, ask your MCP client in plain English and mention OpenEvidence. The agent should call oe_ask automatically.

Example prompts:

Use OpenEvidence to answer: DLBCL frontline treatment landscape NCCN v3.2026. Include citations and BibTeX.
Use OpenEvidence to compare Pola-R-CHP vs R-CHOP in untreated DLBCL. Include trial citations and BibTeX.
Use OpenEvidence to review current evidence for SGLT2 inhibitors in HFpEF. Include citations and BibTeX.
Use OpenEvidence to find guideline-supported anticoagulation options for cancer-associated thrombosis.

The underlying MCP call looks like this:

{
  "tool": "oe_ask",
  "arguments": {
    "question": "DLBCL frontline treatment landscape NCCN v3.2026",
    "wait_for_completion": true,
    "include_bibtex": true
  }
}

oe_ask returns:

  • the OpenEvidence article payload

  • article_id

  • extracted answer markdown as extracted_answer_raw

  • artifact file paths

  • inline BibTeX as artifacts.bibtex

  • saved citation files under the artifact directory

To fetch BibTeX for a prior answer, ask:

Use OpenEvidence to fetch article <ARTICLE_ID> and show the BibTeX.

That maps to oe_article_get:

{
  "article_id": "<ARTICLE_ID>",
  "include_bibtex": true
}

If the response is too large, use include_bibtex: false; the server will still write citations.bib to disk.

Citation Artifacts

Completed oe_ask and oe_article_get calls save artifacts under:

/tmp/openevidence-mcp/<article_id>/

On macOS, Node may resolve /tmp to a path under /var/folders/.../T/.

Example output:

answer.md
article.json
citations.json
citations.bib
crossref-validation.json

Crossref validation behavior:

  • DOI citations are validated directly with Crossref.

  • Non-DOI citations use a bibliographic query and are marked as candidate, not_found, or error.

  • Low-similarity Crossref matches are not used to overwrite BibTeX metadata.

  • Sources like NCCN guidelines may stay as local OpenEvidence metadata because Crossref often has no authoritative match.

This project is unofficial and independent. It is not affiliated with, endorsed by, sponsored by, or approved by OpenEvidence or its owners. "OpenEvidence" and related names, logos, product names, and content remain the property of their respective owners.

This repository contains connector code only. It does not include OpenEvidence copyrighted content, proprietary datasets, model outputs, article payloads, session cookies, or account material. Your local use of this MCP server may create files such as answer.md, article.json, and citations.bib; those artifacts can contain content retrieved from or derived from your OpenEvidence account session. Treat those files as private unless you have the right to share them.

You are responsible for complying with OpenEvidence terms, institutional policies, copyright law, and any clinical data governance rules that apply to your use. Do not publish cookies, account tokens, saved article payloads, generated answers, screenshots, guideline text, or other protected/copyrighted content unless you have permission or another valid legal basis.

This software is not medical advice and is not a medical device. It is an integration tool for an MCP client. Clinicians and qualified users remain responsible for verifying outputs against authoritative sources and applying independent clinical judgment.

If auth stops working:

cp /path/to/fresh-browser-cookies.json ./cookies.json
npm run login

Then restart or open a fresh MCP client session if the old stdio server process is still alive.

Make Targets

Target

Purpose

make deps

Run npm install

make build

Compile TypeScript

make check

Type-check

make test

Run unit tests

make smoke

Validate auth and history access

make import-cookies COOKIES=/path/to/cookies.json

Import and verify cookies

make install-claude-global

Register with Claude Code user config

make install-codex-global

Register with Codex CLI

make install-gemini-global

Register with Gemini CLI user config

make install-all

Register with Claude Code, Codex CLI, and Gemini CLI

Environment Variables

Variable

Default

Purpose

OE_MCP_BASE_URL

https://www.openevidence.com

OpenEvidence base URL

OE_MCP_ROOT_DIR

~/.openevidence-mcp

Root for default auth paths

OE_MCP_COOKIES_PATH

./cookies.json if present, else ~/.openevidence-mcp/auth/cookies.json

Cookie file

OE_MCP_AUTH_STATE_PATH

unset

Legacy alias for OE_MCP_COOKIES_PATH

OE_MCP_ARTIFACT_DIR

OS temp dir + openevidence-mcp

Artifact output directory

OE_MCP_CROSSREF_MAILTO

unset

Optional Crossref polite-pool email

OE_MCP_CROSSREF_VALIDATE

1

Set 0 to skip Crossref validation

OE_MCP_POLL_INTERVAL_MS

1200

Poll interval for oe_ask

OE_MCP_POLL_TIMEOUT_MS

180000

Default poll timeout

OE_MCP_DB_PATH

~/.openevidence-mcp/db/oe.sqlite

Local SQLite mirror used by the collections tools

OE_MCP_PYTHON

python3

Python interpreter the bridge tools spawn

Project Files

License And Attribution

Apache-2.0. Keep LICENSE and NOTICE when redistributing.

Based on OpenEvidence MCP by Bakhtier Sizhaev: https://github.com/bakhtiersizhaev/openevidence-mcp

Available Tools

17 tools
oe_article_getOpenEvidence Article GetA

Fetch an article (answer) by id or /ask/ URL — the fetch-later half of fire-and-forget oe_ask. Returns the current status; if it is still 'pending' either retry later or pass wait_for_completion:true to block until the answer is ready. Completed answers are served from the local SQLite store when available (from_cache:true, zero network) — pass refresh:true to force a re-fetch from OpenEvidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNoBypass the local answers cache and re-fetch from OpenEvidence.
article_idYesArticle UUID, or any openevidence.com/ask/<id> URL.
timeout_secNo
include_bibtexNo
save_artifactsNo
poll_interval_msNo
crossref_validateNo
wait_for_completionNo
strip_citation_markersNo

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description fully discloses caching behavior, pending status handling, blocking via wait_for_completion, and refresh semantics. It explains that completed answers come from local SQLite store with from_cache:true.

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?

A single paragraph that efficiently conveys key information with good front-loading. Could be slightly more structured (e.g., bullet points) but is concise overall.

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 9 parameters and no output schema, the description covers core usage and behavioral nuances. Missing details on some parameters and output format, but adequate for a fetch-and-cache tool with sibling context provided externally.

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 only 22%, so the description must compensate. It explains article_id (UUID or URL), wait_for_completion, refresh, timeout_sec, poll_interval_ms, but omits include_bibtex, save_artifacts, crossref_validate, strip_citation_markers. Adds value but not enough for the low schema coverage.

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 fetches an article by id or URL, and explicitly positions it as the 'fetch-later half of fire-and-forget oe_ask', distinguishing it from siblings like oe_ask, oe_answers_search, and oe_article_set_access.

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 tells when to use (after oe_ask) and provides options: retry, wait_for_completion, or refresh. It lacks explicit when-not-to-use statements but the context is clear.

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

oe_article_set_accessOpenEvidence Article Share AccessA

Set a conversation's share visibility (PATCH /api/article//access). public:true makes it link-shareable (ANYONE_WITH_LINK — anyone with the URL can read it, no login); public:false makes it private again (CREATOR_ONLY). Returns the shareable /ask/ URL. You must own the conversation, and the relay extension must be connected (only the owning browser session may change access). ⚠️ Publishing exposes the conversation to anyone on the internet with the link — do not publish anything containing PHI or medically sensitive patient information.

ParametersJSON Schema
NameRequiredDescriptionDefault
publicYestrue → ANYONE_WITH_LINK (public); false → CREATOR_ONLY (private).
article_idYesArticle UUID or openevidence.com/ask/<id> URL of the conversation.

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully covers behavioral aspects: it specifies HTTP method (PATCH), explains the effect of true/false on access levels (ANYONE_WITH_LINK vs CREATOR_ONLY), notes prerequisites (ownership, relay connection), and mentions the return of a shareable URL and the security warning.

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 two clear sentences plus a warning, all front-loaded with the verb and resource. Every sentence adds value without redundancy.

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 no output schema, the description states the return value (shareable URL). It covers prerequisites, side effects, and security implications, making it complete for a mutation tool.

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 coverage is 100%, but the description adds meaning beyond schema by explaining the access levels corresponding to boolean values and that article_id accepts both UUID and full URL. This enhances the agent's understanding.

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 starts with 'Set a conversation's share visibility', clearly stating the verb and resource. It distinguishes from siblings by specifying this is for sharing access, while tools like oe_article_get are for retrieving content.

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 to use (to change public/private status), and provides conditions: you must own the conversation and have the relay extension connected. Also warns against publishing PHI, guiding appropriate use.

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

oe_askOpenEvidence AskA

Create a question. Fire-and-forget by default: returns {article_id, status:'pending'} immediately so the browser tab is free for other sessions — fetch the finished answer later with oe_article_get (optionally wait_for_completion:true). Pass wait_for_completion:true here to block and return the answer in one call. For a follow-up question pass original_article_id. Submits POST /api/article through the connected browser-extension relay (runs in your real logged-in tab, DataDome-free); the direct Node POST is deprecated and no longer attempted. Requires the relay extension to be connected (see extension/README.md).

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYes
timeout_secNo
article_typeNoAsk OpenEvidence Light with citations
include_bibtexNo
save_artifactsNo
disable_cachingNo
poll_interval_msNo
crossref_validateNo
original_article_idNoArticle UUID or openevidence.com/ask/<id> URL of the conversation to follow up on.
wait_for_completionNo
strip_citation_markersNo
personalization_enabledNo
variant_configuration_fileNoprod

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description fully bears the burden. It discloses the fire-and-forget return (immediate pending), blocking with wait_for_completion, reliance on relay extension, and deprecation of direct POST. No contradictions.

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 single paragraph front-loaded with core behavior and key distinctions. It is dense and efficient, though slightly structured as a block of text. Every sentence adds value.

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?

Despite good coverage of core behavior and two key parameters, with 13 parameters and no output schema, the description omits details on many parameters (e.g., timeout_sec, article_type, include_bibtex) and the full output structure. It is adequate but not fully complete given complexity.

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 only 8% (only original_article_id described). The description adds meaning for wait_for_completion and original_article_id, but covers few of the 13 parameters. Many defaults are listed but not explained in context, so it partially compensates.

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 it creates a question, distinguishes fire-and-forget vs. blocking modes, and explicitly differentiates from oe_article_get for fetching results. It also mentions follow-up usage via original_article_id, providing a specific verb and resource.

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 guidance: when to use fire-and-forget (default) vs. wait_for_completion, how to do follow-ups, and the requirement of a connected relay extension. It implies context (browser tab free for other sessions) and notes deprecation of a direct method.

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

oe_auth_statusOpenEvidence Auth StatusA

Check if the local OpenEvidence session is valid (full network round-trip). For a fast pipeline-connectivity check use oe_health instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the tool performs a full network round-trip and is non-destructive (checking validity). The behavior is simple and well-described.

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 sentences, front-loaded with purpose and alternative. No wasted words.

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?

Tool is simple with no parameters and no output schema. Description fully covers what the tool does and how it differs from alternatives, making it complete for selection and invocation.

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?

No parameters exist, so the description does not need to add parameter information. Baseline is 4, but the description is perfectly adequate given 100% schema coverage and empty input 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?

Description clearly states the tool checks if the local OpenEvidence session is valid and distinguishes it from the sibling oe_health tool by specifying a full network round-trip versus a fast pipeline-connectivity check.

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 to use this tool (check session validity) and when to use the alternative oe_health (fast connectivity check), providing clear usage guidance.

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

oe_collections_add_articleOpenEvidence Collection Add ArticleC

Add a chat (article) to a collection. Idempotent in practice.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_idYes
collection_idYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description only discloses idempotency. It fails to mention permissions, error behavior, or side effects. For a mutation tool, this is insufficient transparency.

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

Conciseness3/5

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

The description is very concise, with one main sentence plus a note on idempotency. However, it sacrifices completeness for brevity; a tool with two required UUID parameters would benefit from slightly more context.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It does not explain return values, prerequisites, or error conditions, which are critical for an agent to use the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description adds no information about the parameters beyond their names. It does not explain what collection_id or article_id represent or how to obtain them, leaving the agent to rely solely on parameter names.

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 clearly states the action 'Add a chat (article) to a collection', which effectively conveys the tool's purpose. It distinguishes from sibling tools by the specific verb 'add', but does not explicitly differentiate from other collection manipulation tools.

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?

No guidance is provided on when to use this tool versus alternatives like oe_collections_bulk_apply or other collection tools. The description only mentions idempotency, which is a behavioral trait, not usage context.

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

oe_collections_createOpenEvidence Collection CreateB

Create a new collection. By convention, agent-managed names start with '#'.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description only states 'Create a new collection' without disclosing behavioral traits such as authentication needs, idempotency, limits, or side effects. For a creation tool, this is insufficient.

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

Conciseness3/5

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

The description is very short (two sentences) and front-loaded with the main action, but it omits important details, making it too concise for a creation tool that requires more context.

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

Completeness2/5

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

Given the lack of annotations, output schema, and schema descriptions, the description should compensate with more completeness. It does not cover return values, errors, or usage constraints, leaving significant gaps.

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?

The input schema has 0% description coverage, meaning the schema itself provides no explanations. The description adds only a naming convention, not field-specific semantics like what valid values are or how description is used.

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 explicitly states 'Create a new collection', which clearly identifies the action and resource. Among siblings with various collection operations, 'create' is unambiguous. The naming convention hint further clarifies purpose.

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 gives a naming convention ('agent-managed names start with #') that implies agent usage, but does not provide explicit guidance on when to use versus alternatives, nor any conditions or prerequisites.

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

oe_collections_db_initInit Collections SQLite MirrorA

Create the local SQLite mirror at $OE_MCP_DB_PATH (default ~/.openevidence-mcp/db/oe.sqlite). Idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action and idempotency but does not explain behavior if the database exists, error conditions, or permissions needed. Adequate but could be more transparent.

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 extremely concise: two sentences totalling 20 words. Every word is necessary: the action, the path with default, and the idempotency note. No wasted text.

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?

For a simple tool with no parameters and no output schema, the description provides the essential information: what it creates, where, and its idempotence. It could mention that this tool should typically be called before others, but given its simplicity, it is largely 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?

There are no parameters, and schema coverage is 100% (empty). According to guidelines, 0 parameters yields a baseline of 4. The description adds no parameter information, which is appropriate.

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's purpose: 'Create the local SQLite mirror' at a specific path, with a default provided. The verb 'Create' and resource 'SQLite mirror' are specific, and the tool is distinct from siblings which operate on collections.

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 does not explicitly state when to use this tool versus alternatives. While it mentions 'Idempotent', which suggests safe repeated use, there is no guidance on prerequisites, ordering, or when initialization is necessary. Usage is implied but not explicit.

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

oe_collections_getOpenEvidence Collection GetA

Fetch a collection (incl. nested questions[] = membership list) by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It discloses that the result includes nested questions, which adds some behavioral context, but lacks details on side effects, permissions, or error conditions.

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 a single sentence, concise and front-loaded, with no superfluous content.

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?

For a simple fetch with one parameter and no output schema, the description adequately states the purpose and mentions the nested structure, but fails to describe the full return format or confirm whether it returns all fields.

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?

With 0% schema description coverage, the description should compensate. It only repeats 'by id' without explaining the uuid format or providing examples, adding minimal value 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?

The description clearly states the verb 'Fetch' and the resource 'collection by id', and distinguishes the tool by mentioning included nested questions (membership list), setting it apart from siblings like oe_collections_list.

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?

Usage is implied (use when you have a collection id and want single collection with membership), but there is no explicit guidance on when to use this versus alternatives like oe_collections_list or oe_collections_summary.

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

oe_collections_listOpenEvidence Collections ListA

List all collections owned by the authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It indicates a read-only listing operation but lacks details on pagination, sorting, or limits. For a zero-parameter tool, the behavioral disclosure is minimal but acceptable.

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?

Single sentence, no extraneous words, front-loaded with the core action. Every word 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?

For a simple list with no parameters and no output schema, the description adequately covers the tool's purpose and scope. Could add detail about ordering or result limits, but not critical.

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?

Input schema has zero parameters, so schema coverage is 100%. Per rules, baseline is 4. The description adds no parameter info, which is appropriate given no parameters exist.

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 'List all collections owned by the authenticated user' uses a specific verb (list) and resource (collections) with clear scope (owned by user), distinguishing it from sibling tools like oe_collections_create or oe_collections_get.

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?

No guidance on when to use this tool versus alternatives among many sibling collection tools. Does not mention scenarios where list is appropriate or when another tool like oe_collections_unsorted might be better.

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

oe_collections_summaryCollections SummaryB

Counts (chats, collections, hashtag, memberships, unsorted) + last sync timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It only states what the tool counts and timestamps, but does not mention whether it is read-only, if it requires authentication, or if there are any side effects or limitations (e.g., rate limits).

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 extremely concise—only one sentence—yet conveys the tool's core purpose. It is front-loaded with the key counts and timestamps. No unnecessary words.

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?

The description lacks detail on the return format (e.g., structure of the counts object, how timestamps are represented). Given no output schema, this information would be helpful. Additionally, with many sibling tools, more context on distinguishing usage would improve completeness.

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 tool has no parameters, which the schema reflects completely (100% coverage). The description adds value by listing the specific items counted (chats, collections, etc.), which is meaningful beyond the empty schema.

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 clearly states it returns counts and last sync timestamps for specific items (chats, collections, hashtag, memberships, unsorted). The verb 'summary' aligns with the tool's name. However, it does not differentiate from siblings like oe_collections_list or oe_collections_get, which could be used for similar purposes.

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?

No explicit guidance on when to use this tool versus alternatives. The description implies it is for getting summary data, but it does not state when not to use it or mention other tools that might be better suited for specific scenarios.

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

oe_collections_sync_dbSync Collections + Memberships to SQLiteB

Refresh collections and memberships from the API into local SQLite. Prunes collections + memberships the server no longer reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
rate_secondsNo

TDQS

B3.4/5.0
Behavior3/5

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

The description discloses the pruning behavior, which is a destructive side effect. However, it does not mention other behavioral traits such as idempotency, authentication requirements, or the effect of the rate_seconds parameter. With no annotations, the description carries the full burden but only partially fulfills it.

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 consists of two short, front-loaded sentences with no fluff. Every phrase conveys essential action: refreshing and pruning.

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?

Given the tool has only one optional parameter and no output schema, the description is moderately complete. It explains the main action but omits details about the parameter's role and potential side effects, leaving gaps for a sync operation in a multi-tool context.

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

Parameters1/5

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

The description does not mention the only parameter, rate_seconds, which has 0% coverage in the schema. The parameter name and constraints suggest it controls pacing, but the description provides no clarification, leaving the agent to infer its meaning.

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 it refreshes collections and memberships from API into local SQLite and prunes removed items. This distinguishes it from sibling tools like oe_collections_list or oe_collections_get, which do not perform sync or local storage.

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 it is for syncing and pruning, but does not explicitly state when to use it versus alternatives like oe_collections_db_init or oe_collections_sync_history. No when-to-use or when-not-to-use guidance is provided.

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

oe_collections_sync_historySync Chat History to SQLiteA

Paginate /api/article/list and upsert chats. Incremental by default (stops on the first all-known page).

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNo
pagesNo
page_sizeNo
rate_secondsNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the incremental behavior and pagination, but does not explain what 'upsert chats' entails in terms of database mutation, idempotency, or potential side effects. The description adds moderate behavioral context but lacks specifics about the operation's safety or impact.

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 two sentences, no wasted words, and front-loads the primary action. Every sentence adds value, making it highly efficient.

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

Completeness2/5

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

Given four parameters and no output schema, the description is sparse. It does not cover return values, error conditions, prerequisites (e.g., whether oe_collections_db_init must be called first), or the relationship with sibling tools like oe_collections_sync_db. The lack of detail leaves significant gaps for an AI agent to use this tool correctly.

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?

The input schema has 0% description coverage, yet the description only indirectly references the 'full' parameter via 'incremental by default'. Parameters like 'pages', 'page_size', and 'rate_seconds' are not explained at all. The description adds almost no meaning beyond the parameter names, which is insufficient for a tool with four parameters.

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 action: paginate and upsert chats, and identifies the specific API endpoint ("/api/article/list"). It also mentions the incremental behavior which distinguishes it from a full sync. This is specific and differentiates from sibling tools like oe_collections_sync_db.

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 mentions incremental mode and stopping condition (first all-known page), which implicitly suggests when to use (incremental sync) vs full sync ('full' parameter). However, it does not explicitly compare to other siblings like oe_collections_sync_db or provide when-not-to-use scenarios. The usage guidance is implied but not explicit.

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

oe_collections_unsortedList Unsorted ChatsA

Chats with no membership in any '#'-prefixed collection. Returns {unsorted_count, shown, items[]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
preview_charsNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description does not explicitly state read-only behavior, but implies a read operation. It does disclose the return shape ({unsorted_count, shown, items[]}) which provides some insight into what the tool returns. However, it lacks details on pagination, performance, or error handling.

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 a single sentence defining functionality followed by a brief return value structure. It is front-loaded, concise, and every element serves a purpose with no redundancy.

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 purpose and return format fully. However, given no output schema, it could mention edge cases (e.g., empty list) or error conditions. Still, for a simple list tool, it is adequate.

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?

The input schema has two parameters (limit, preview_chars) with defaults and ranges, but 0% schema description coverage. The description does not explain their purpose beyond what can be inferred from names. Since the coverage is low, the description should compensate, but it does not add any meaning.

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 title and description clearly state the tool lists chats not in any '#'-prefixed collection. This differentiates it from sibling tools like oe_collections_list which lists collections, or oe_collections_summary which provides summaries.

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?

The description does not provide any guidance on when to use this tool versus alternatives. No instructions on prerequisites, limitations, or scenarios where another tool would be more appropriate.

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

oe_healthOpenEvidence Relay HealthA

Millisecond-fast local check of the relay pipeline (daemon + browser extension) — no OpenEvidence network call. Use this to confirm the pipeline is up before oe_ask; use oe_auth_status only when you need to verify the login session itself.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses local, fast, no network call. However, it does not specify what the output looks like (e.g., boolean, error message), which would be helpful for a complete transparency.

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 sentences, no wasted words. Information is front-loaded and efficiently structured.

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?

For a zero-parameter, simple health check tool without output schema, the description provides all necessary context: purpose, usage guidance, and behavioral trait (local). Complete enough for agent selection.

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?

No parameters, so baseline is 4. Description adds context by explaining the tool's action beyond the empty schema, such as being local and fast.

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?

Description clearly states 'Millisecond-fast local check of the relay pipeline (daemon + browser extension)', specifying the verb (check) and resource (relay pipeline). It distinguishes from siblings like oe_auth_status and oe_ask.

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?

Explicit guidance: use this to confirm pipeline is up before oe_ask, and use oe_auth_status only for login session verification. Provides clear context for when to use this tool vs alternatives.

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

oe_history_listOpenEvidence History ListC

List question history from OpenEvidence account.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits but only says "list." It fails to mention pagination behavior implied by limit/offset, whether it returns only the authenticated user's history, or any rate limits. The minimal description does not compensate for missing annotations.

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

Conciseness2/5

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

The description is extremely concise at one sentence, but this brevity sacrifices necessary information about parameters and usage context. It is under-specified rather than efficiently structured, failing to earn its place by omitting critical details.

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

Completeness1/5

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

Given three parameters, no annotations, and no output schema, the description is severely incomplete. It lacks details on pagination, search functionality, return value format, and any prerequisites, making it insufficient for effective tool use.

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

Parameters1/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 explain any of the three parameters (limit, offset, search). The agent receives no semantic help beyond the schema's basic type/constraint info, leaving the parameters largely unclear.

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 states "List question history from OpenEvidence account," clearly identifying the action (list) and resource (question history). It distinguishes from sibling tools like oe_ask (ask questions) and oe_collections_list (list collections), though it could be more specific about what constitutes 'history.'

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?

No guidance is provided on when to use this tool versus alternatives. The description does not mention any conditions for use, prerequisites, or when not to use it, leaving the agent without contextual decision support.

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

oe_public_getOpenEvidence Conversation Page GetA

Read an OpenEvidence conversation from an /ask/ link and parse the page into Q&A turns (question, answer as markdown, references). Public (shared) conversations need no setup at all; your own private ones work when the relay extension is connected (your logged-in tab) or cookies.json exists. Use oe_article_get when you want the raw API payload + saved artifacts instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesA https://www.openevidence.com/ask/<id> URL, or the bare article UUID.
strip_citation_markersNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided; description carries full burden. Discloses that it parses into Q&A turns (question, answer as markdown, references) and specifies authentication requirements (public vs private). Lacks explicit read-only declaration but 'Read' implies it.

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?

Extremely concise: three sentences covering purpose, setup, and alternative. No redundant information. Front-loaded with primary action.

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 output schema, description explains output format (Q&A turns with markdown and references). Covers prerequisites and distinguishes from sibling. Minor gap: no explanation of strip_citation_markers behavior.

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 50% (url described, strip_citation_markers not). Description adds context on URL format and output type but does not explain the boolean parameter strip_citation_markers, leaving it unclear.

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?

Clearly states it reads an OpenEvidence conversation from an /ask/<id> link and parses it into Q&A turns. Distinguishes from sibling oe_article_get which retrieves raw API payload.

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 explains when to use vs not: 'Use oe_article_get when you want the raw API payload + saved artifacts instead.' Also details setup needs for public vs private conversations.

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. Dates show when Glama detected each change.

  1. 3 tool updatesv0.4.4
    • Addedoe_auth_status
    • Addedoe_collections_summary
    • Addedoe_health
  2. 9 tool updatesv0.4.3
    • Addedoe_answers_search
    • Changedoe_article_get5 fields changed
      • addedInput schema / properties / article_id / description
        Added value: +"Article UUID, or any openevidence.com/ask/<id> URL."
      • removedInput schema / properties / article_id / format
        Removed value: -"uuid"
      • removedInput schema / properties / article_id / pattern
        Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / refresh
        Added value: +{
        +  "default": false,
        +  "description": "Bypass the local answers cache and re-fetch from OpenEvidence.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / strip_citation_markers
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Addedoe_article_set_access
    • Changedoe_ask4 fields changed
      • addedInput schema / properties / original_article_id / description
        Added value: +"Article UUID or openevidence.com/ask/<id> URL of the conversation to follow up on."
      • removedInput schema / properties / original_article_id / format
        Removed value: -"uuid"
      • removedInput schema / properties / original_article_id / pattern
        Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / strip_citation_markers
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Removedoe_auth_status
    • Removedoe_collections_bulk_apply
    • Removedoe_collections_classify
    • Removedoe_collections_summary
    • Addedoe_public_get
  3. 2 tool updatesv0.3.0
    • Changedoe_article_get3 fields changed
      • addedInput schema / properties / poll_interval_ms
        Added value: +{
        +  "default": 1200,
        +  "maximum": 10000,
        +  "minimum": 300,
        +  "type": "integer"
        +}
      • addedInput schema / properties / timeout_sec
        Added value: +{
        +  "default": 120,
        +  "maximum": 600,
        +  "minimum": 5,
        +  "type": "integer"
        +}
      • addedInput schema / properties / wait_for_completion
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Changedoe_ask1 field changed
      • changedInput schema / properties / wait_for_completion / default
        Previous value: -trueNew value: +false
  4. 11 tool updatesv0.2.0
    • Addedoe_collections_add_article
    • Addedoe_collections_bulk_apply
    • Addedoe_collections_classify
    • Addedoe_collections_create
    • Addedoe_collections_db_init
    • Addedoe_collections_get
    • Addedoe_collections_list
    • Addedoe_collections_summary
    • Addedoe_collections_sync_db
    • Addedoe_collections_sync_history
    • Addedoe_collections_unsorted
  5. 4 tool updatesv0.1.0
    • First observedoe_article_get
    • First observedoe_ask
    • First observedoe_auth_status
    • First observedoe_history_list

TDQS

A3.6/5.0

Scored across 17 tools

Disambiguation5/5

Every tool has a clearly distinct purpose, with descriptions that eliminate ambiguity. For example, oe_health vs oe_auth_status differentiate between local pipeline check and session verification, and oe_collections tools each handle a specific aspect of collection management.

Naming Consistency4/5

Tools follow a consistent pattern of 'oe_' prefix followed by a domain (collections, article, auth, etc.) and then a verb or noun. While not strictly verb_noun throughout (e.g., oe_health, oe_collections_summary), the pattern is predictable and readable.

Tool Count5/5

17 tools is well-scoped for the OpenEvidence domain, covering authentication, health checks, collections management (9 tools), article operations, and search. Each tool serves a specific need without unnecessary duplication.

Completeness4/5

The tool surface covers the core workflows: asking questions, retrieving answers, searching, managing collections, and setting access. Minor gaps exist, such as no explicit delete tool for articles, but overall the set is comprehensive for its purpose.

Maintenance

ActivitySlowing
ResponsivenessSlow

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

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/htlin222/openevidence-mcp'

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