fh-library 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +1 -1
- package/dist/index.js +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# FH Library — Change Log
|
|
2
2
|
|
|
3
|
+
### v0.2.5 — 2026-11-08
|
|
4
|
+
|
|
5
|
+
* **Tool descriptions** (issue #30): `library_info` names its key `verify`, not `library_verify`; `library_status` answers for one ID of any kind, not "one paper ID"; `library_verify`'s `claim` asks for a complete statement built from the review's words, not a verbatim fragment.
|
|
6
|
+
|
|
3
7
|
### v0.2.4 — 2026-11-08
|
|
4
8
|
|
|
5
9
|
* **Fix: `library_status` on a stored entry and `library_info` failed** with "library_status is not defined" / "library_info is not defined" in 0.2.2 and 0.2.3: the rename that restored the `library_` prefix also renamed two local variables. `library_version`'s log line printed "undefined" for the same reason. The Playwright download rung lacked a `readFileSync` import. Prose in the server instructions and READMEs that had "read" or "status" turned into tool names is plain English again.
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-

|
|
2
2
|

|
|
3
3
|
[_2026-Forever_Healthy-573D7D.svg)](https://forever-healthy.org)
|
|
4
4
|
[](https://www.npmjs.com/package/fh-library)
|
package/dist/index.js
CHANGED
|
@@ -3883,7 +3883,7 @@ function registerTools(server2) {
|
|
|
3883
3883
|
}
|
|
3884
3884
|
server2.tool(
|
|
3885
3885
|
"library_status",
|
|
3886
|
-
'Read-only status of the library entry for one paper
|
|
3886
|
+
'Read-only status of the library entry for one ID \u2014 a paper, a drug label or a trial record: the same status JSON as library_add, or level "missing" when there is no entry. Never fetches.',
|
|
3887
3887
|
{ id: idSchema },
|
|
3888
3888
|
async ({ id }) => {
|
|
3889
3889
|
const parsed = parseId(id);
|
|
@@ -3985,7 +3985,7 @@ function registerTools(server2) {
|
|
|
3985
3985
|
"library_verify",
|
|
3986
3986
|
"Does one source state one finding of a review? claim: the finding as a complete statement (subject, intervention, outcome, number), without citations or the review's framing, and only what this source reports. id: one source the review cites for it \u2014 paper, drug label (dailymed:\u2026) or trial record (nct:\u2026); added first when missing. The server reads the stored text and asks a decision model; nothing enters your context. verdict: pass (score is the probability) | fail (the full text does not state it; or only the title is stored \u2014 reason says so) | unverifiable (only the abstract is stored and does not state it \u2014 reason says so) | error (claim refused: under four words, a fragment, carrying citations; add failed; no model; model failure). basis: full_text | abstract | title. glyphs_unresolved: symbols the PDF font lost; above 0 a failed number may be the font. superseded: true when a stored correction replaced the claim's figure.",
|
|
3987
3987
|
{
|
|
3988
|
-
claim: z.string().describe("One finding,
|
|
3988
|
+
claim: z.string().describe("One finding as a complete statement (subject, intervention, outcome, number), built from the review's words, without its citations and framing."),
|
|
3989
3989
|
id: idSchema
|
|
3990
3990
|
},
|
|
3991
3991
|
async ({ claim, id }) => {
|
|
@@ -4004,7 +4004,7 @@ function registerTools(server2) {
|
|
|
4004
4004
|
);
|
|
4005
4005
|
server2.tool(
|
|
4006
4006
|
"library_info",
|
|
4007
|
-
"The whole library as JSON: library directory and host; entry count and size on disk; per type (pmid, doi, dailymed, nct) the entries by level (full_text, abstract, title) and retractions; counts of retracted and not-citable entries and of errata, expressions of concern and updates; the retrieval sources in run order and which are off (tiers); the download ladder (download): the Playwright servers with the version they must run, the Chrome rungs, the Bright Data unlocker; the configuration and where each value came from \u2014 environment, .env or default, never the value (config); the decision model behind library_verify and whether it answers right now (
|
|
4007
|
+
"The whole library as JSON: library directory and host; entry count and size on disk; per type (pmid, doi, dailymed, nct) the entries by level (full_text, abstract, title) and retractions; counts of retracted and not-citable entries and of errata, expressions of concern and updates; the retrieval sources in run order and which are off (tiers); the download ladder (download): the Playwright servers with the version they must run, the Chrome rungs, the Bright Data unlocker; the configuration and where each value came from \u2014 environment, .env or default, never the value (config); the decision model behind library_verify and whether it answers right now (verify). ids=true also lists every entry ID.",
|
|
4008
4008
|
{ ids: z.boolean().optional().describe("Also list every entry ID (type:value).") },
|
|
4009
4009
|
async ({ ids }) => {
|
|
4010
4010
|
const info = libraryInfo(FH_LIBRARY_DIR, HOST, ids === true);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fh-library",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"mcpName": "io.github.forever-healthy/fh-library",
|
|
5
5
|
"description": "MCP Server that builds a local Markdown library of the scientific papers cited by evidence reviews — fetches metadata, abstract and full text per PubMed ID through a configurable cascade of retrieval services",
|
|
6
6
|
"type": "module",
|